Merge "[flexiglass] Fix NSSL-Flexiglass touch in default case" into main
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index 2d05606..96d6f32 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -307,6 +307,11 @@
     defaults: ["framework-minus-apex-aconfig-java-defaults"],
 }
 
+cc_aconfig_library {
+    name: "android_security_flags_aconfig_c_lib",
+    aconfig_declarations: "android.security.flags-aconfig",
+}
+
 // UsageStats
 aconfig_declarations {
     name: "android.app.usage.flags-aconfig",
diff --git a/DREAM_MANAGER_OWNERS b/DREAM_MANAGER_OWNERS
deleted file mode 100644
index 48bde60..0000000
--- a/DREAM_MANAGER_OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-brycelee@google.com
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index e857175..c4ffa34 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -30,7 +30,7 @@
 ktlint_hook = ${REPO_ROOT}/prebuilts/ktlint/ktlint.py --no-verify-format -f ${PREUPLOAD_FILES}
 
 # This flag check hook runs only for "packages/SystemUI" subdirectory. If you want to include this check for other subdirectories, please modify flag_check.py.
-flag_hook = ${REPO_ROOT}/frameworks/base/packages/SystemUI/flag_check.py --msg=${PREUPLOAD_COMMIT_MESSAGE} --files=${PREUPLOAD_FILES} --project=${REPO_PATH}
+flag_hook = ${REPO_ROOT}/frameworks/base/packages/SystemUI/flag_check.py --msg=${PREUPLOAD_COMMIT_MESSAGE} --files=${PREUPLOAD_FILES} --project=${REPO_PROJECT}
 
 [Tool Paths]
 ktfmt = ${REPO_ROOT}/prebuilts/build-tools/common/framework/ktfmt.jar
diff --git a/apct-tests/perftests/OWNERS b/apct-tests/perftests/OWNERS
index 8ff3f9b..f4346b1 100644
--- a/apct-tests/perftests/OWNERS
+++ b/apct-tests/perftests/OWNERS
@@ -8,4 +8,3 @@
 shayba@google.com
 shombert@google.com
 timmurray@google.com
-wessam@google.com
diff --git a/apct-tests/perftests/core/src/android/libcore/varhandles/generate_java.py b/apct-tests/perftests/core/src/android/libcore/varhandles/generate_java.py
index 01abdb6..cfcb1d2 100755
--- a/apct-tests/perftests/core/src/android/libcore/varhandles/generate_java.py
+++ b/apct-tests/perftests/core/src/android/libcore/varhandles/generate_java.py
@@ -21,7 +21,7 @@
 To run use: python generate_java.py <destination_directory>
 
 And then to correct lint errors (from frameworks/base):
-../../tools/repohooks/tools/google-java-format.py --fix --sort-imports  --google-java-format-diff ../../external/google-java-format/scripts/google-java-format-diff.py
+../../tools/repohooks/tools/google-java-format.py --fix --google-java-format-diff ../../external/google-java-format/scripts/google-java-format-diff.py
 """
 
 
diff --git a/apct-tests/perftests/permission/src/android/perftests/permission/PermissionManagerPerfTest.kt b/apct-tests/perftests/permission/src/android/perftests/permission/PermissionManagerPerfTest.kt
new file mode 100644
index 0000000..8b8036e
--- /dev/null
+++ b/apct-tests/perftests/permission/src/android/perftests/permission/PermissionManagerPerfTest.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package android.perftests.permission
+
+import android.Manifest
+import android.companion.virtual.VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
+import android.content.Context
+import android.perftests.utils.PerfStatusReporter
+import android.permission.PermissionManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.compatibility.common.util.AdoptShellPermissionsRule
+import com.android.compatibility.common.util.SystemUtil.runShellCommand
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class PermissionManagerPerfTest {
+    @get:Rule var perfStatusReporter = PerfStatusReporter()
+    @get:Rule
+    val mAdoptShellPermissionsRule =
+        AdoptShellPermissionsRule(
+            InstrumentationRegistry.getInstrumentation().getUiAutomation(),
+            Manifest.permission.INSTALL_PACKAGES,
+            Manifest.permission.DELETE_PACKAGES,
+            Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
+            Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS,
+            Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
+        )
+
+    val context: Context = InstrumentationRegistry.getInstrumentation().targetContext
+    val permissionManager = context.getSystemService(PermissionManager::class.java)!!
+
+    @Before
+    fun setup() {
+        val apkPath = "$APK_DIR${APK_NAME}.apk"
+        runShellCommand("pm install -tg $apkPath")
+    }
+
+    @After
+    fun cleanup() {
+        runShellCommand("pm uninstall $PKG_NAME")
+    }
+
+    @Test
+    fun testGetAllPermissionStates() {
+        val benchmarkState = perfStatusReporter.benchmarkState
+        while (benchmarkState.keepRunning()) {
+            permissionManager.getAllPermissionStates(PKG_NAME, PERSISTENT_DEVICE_ID_DEFAULT)
+        }
+    }
+
+    companion object {
+        private const val APK_DIR = "/data/local/tmp/perftests/"
+        private const val APK_NAME = "UsePermissionApp0"
+        private const val PKG_NAME = "android.perftests.appenumeration0"
+    }
+}
diff --git a/apct-tests/perftests/permission/src/android/perftests/permission/PermissionServicePerfTest.kt b/apct-tests/perftests/permission/src/android/perftests/permission/PermissionServicePerfTest.kt
index 13e67e3..1139835 100644
--- a/apct-tests/perftests/permission/src/android/perftests/permission/PermissionServicePerfTest.kt
+++ b/apct-tests/perftests/permission/src/android/perftests/permission/PermissionServicePerfTest.kt
@@ -36,6 +36,7 @@
 import java.io.InputStreamReader
 import java.util.concurrent.TimeUnit
 import java.util.function.BiConsumer
+import org.junit.Ignore
 
 @RunWith(AndroidJUnit4::class)
 class PermissionServicePerfTest {
@@ -48,6 +49,7 @@
     val mUiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation()
 
     @Test
+    @Ignore("Fails to capture duration, results in infinite loop and execution timeout")
     fun testInstallPackages() {
         mUiAutomation.executeShellCommand(COMMAND_TRACE_START)
         eventually { assertThat(Trace.isTagEnabled(TRACE_TAG)).isTrue() }
diff --git a/boot/boot-image-profile.txt b/boot/boot-image-profile.txt
index be4086b..1a31612 100644
--- a/boot/boot-image-profile.txt
+++ b/boot/boot-image-profile.txt
@@ -128,10 +128,10 @@
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
 HSPLandroid/animation/AnimationHandler;-><init>()V
-HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
+HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Landroid/animation/AnimationHandler$MyFrameCallbackProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V
 HSPLandroid/animation/AnimationHandler;->cleanUpList()V
-HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Lcom/android/internal/dynamicanimation/animation/SpringAnimation;,Landroid/animation/AnimatorSet;,Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Landroid/animation/AnimatorSet;,Landroid/animation/ValueAnimator;,Lcom/android/internal/dynamicanimation/animation/SpringAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimationHandler;->getAnimationCount()I
 HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler;
 HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
@@ -162,12 +162,12 @@
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator;
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object;
 HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
-HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types
+HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
 HSPLandroid/animation/Animator;-><init>()V
-HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V
+HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V
 HSPLandroid/animation/Animator;->appendChangingConfigurations(I)V
-HSPLandroid/animation/Animator;->callOnList(Ljava/util/ArrayList;Landroid/animation/Animator$AnimatorCaller;Ljava/lang/Object;Z)V+]Landroid/animation/Animator$AnimatorCaller;Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda2;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda1;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda0;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda6;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLandroid/animation/Animator;->callOnList(Ljava/util/ArrayList;Landroid/animation/Animator$AnimatorCaller;Ljava/lang/Object;Z)V+]Landroid/animation/Animator$AnimatorCaller;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/Animator;->getBackgroundPauseDelay()J
@@ -176,7 +176,7 @@
 HSPLandroid/animation/Animator;->getStartAndEndTimes(Landroid/util/LongArray;J)V
 HSPLandroid/animation/Animator;->notifyEndListeners(Z)V
 HSPLandroid/animation/Animator;->notifyListeners(Landroid/animation/Animator$AnimatorCaller;Z)V
-HSPLandroid/animation/Animator;->notifyStartListeners(Z)V
+HSPLandroid/animation/Animator;->notifyStartListeners(Z)V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/Animator;->pause()V
 HSPLandroid/animation/Animator;->removeAllListeners()V
 HSPLandroid/animation/Animator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V
@@ -218,18 +218,18 @@
 HSPLandroid/animation/AnimatorSet$Node;->addParent(Landroid/animation/AnimatorSet$Node;)V
 HSPLandroid/animation/AnimatorSet$Node;->addParents(Ljava/util/ArrayList;)V
 HSPLandroid/animation/AnimatorSet$Node;->addSibling(Landroid/animation/AnimatorSet$Node;)V
-HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node;
+HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/AnimatorSet$SeekState;-><init>(Landroid/animation/AnimatorSet;)V
 HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J
 HSPLandroid/animation/AnimatorSet$SeekState;->isActive()Z
 HSPLandroid/animation/AnimatorSet$SeekState;->reset()V
-HSPLandroid/animation/AnimatorSet;-><init>()V
+HSPLandroid/animation/AnimatorSet;-><init>()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->addAnimationCallback(J)V
 HSPLandroid/animation/AnimatorSet;->addAnimationEndListener()V
 HSPLandroid/animation/AnimatorSet;->cancel()V
 HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator;
-HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V
+HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;]Landroid/animation/AnimatorSet$AnimationEvent;Landroid/animation/AnimatorSet$AnimationEvent;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z+]Landroid/animation/AnimatorSet$SeekState;Landroid/animation/AnimatorSet$SeekState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->end()V
 HSPLandroid/animation/AnimatorSet;->endAnimation()V
@@ -265,7 +265,7 @@
 HSPLandroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V
 HSPLandroid/animation/AnimatorSet;->shouldPlayTogether()Z
 HSPLandroid/animation/AnimatorSet;->skipToEndValue(Z)V
-HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V
+HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->start()V
 HSPLandroid/animation/AnimatorSet;->start(ZZ)V
 HSPLandroid/animation/AnimatorSet;->startAnimation()V
@@ -278,25 +278,25 @@
 HSPLandroid/animation/FloatKeyframeSet;-><init>([Landroid/animation/Keyframe$FloatKeyframe;)V
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet;
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes;
-HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object;
 HSPLandroid/animation/IntKeyframeSet;-><init>([Landroid/animation/Keyframe$IntKeyframe;)V
-HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet;
+HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet;+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/Keyframes;
-HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I
+HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I+]Landroid/animation/Keyframe$IntKeyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(F)V
 HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(FF)V
-HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe;+]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->getFloatValue()F
 HSPLandroid/animation/Keyframe$FloatKeyframe;->getValue()Ljava/lang/Object;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->setValue(Ljava/lang/Object;)V
 HSPLandroid/animation/Keyframe$IntKeyframe;-><init>(FI)V
-HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe;
+HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe;+]Landroid/animation/Keyframe$IntKeyframe;Landroid/animation/Keyframe$IntKeyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->getIntValue()I
 HSPLandroid/animation/Keyframe$IntKeyframe;->getValue()Ljava/lang/Object;
-HSPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V
+HSPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/Integer;
 HSPLandroid/animation/Keyframe$ObjectKeyframe;-><init>(FLjava/lang/Object;)V
 HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe$ObjectKeyframe;
 HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe;
@@ -312,17 +312,17 @@
 HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V
 HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z
-HSPLandroid/animation/KeyframeSet;-><init>([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/KeyframeSet;-><init>([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$ObjectKeyframe;
 HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List;
-HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;
+HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;
 HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->setEvaluator(Landroid/animation/TypeEvaluator;)V
 HSPLandroid/animation/LayoutTransition$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V
+HSPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V+]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/lang/Object;Ljava/lang/Integer;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLandroid/animation/LayoutTransition$3;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/animation/LayoutTransition$3;->onAnimationStart(Landroid/animation/Animator;)V
 HSPLandroid/animation/LayoutTransition$4;->onAnimationEnd(Landroid/animation/Animator;)V
@@ -350,20 +350,20 @@
 HSPLandroid/animation/LayoutTransition;->setDuration(J)V
 HSPLandroid/animation/LayoutTransition;->setInterpolator(ILandroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/LayoutTransition;->setStartDelay(IJ)V
-HSPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V
+HSPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V+]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/view/View;missing_types]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/LayoutTransition;->showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V
 HSPLandroid/animation/LayoutTransition;->startChangingAnimations()V
 HSPLandroid/animation/ObjectAnimator;-><init>()V
 HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Landroid/util/Property;)V
 HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Ljava/lang/String;)V
-HSPLandroid/animation/ObjectAnimator;->animateValue(F)V
+HSPLandroid/animation/ObjectAnimator;->animateValue(F)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator;
-HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String;
-HSPLandroid/animation/ObjectAnimator;->getPropertyName()Ljava/lang/String;
-HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object;
+HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String;+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/animation/ObjectAnimator;->getPropertyName()Ljava/lang/String;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/animation/ObjectAnimator;->hasSameTargetAndProperties(Landroid/animation/Animator;)Z
-HSPLandroid/animation/ObjectAnimator;->initAnimation()V
+HSPLandroid/animation/ObjectAnimator;->initAnimation()V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/ObjectAnimator;->isInitialized()Z
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;
@@ -381,7 +381,7 @@
 HSPLandroid/animation/ObjectAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ObjectAnimator;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/ObjectAnimator;->setPropertyName(Ljava/lang/String;)V
-HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V
+HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->setupEndValues()V
 HSPLandroid/animation/ObjectAnimator;->setupStartValues()V
 HSPLandroid/animation/ObjectAnimator;->shouldAutoCancel(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z
@@ -402,32 +402,32 @@
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
-HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V+]Landroid/util/FloatProperty;Landroid/view/View$12;,Landroid/view/View$13;]Landroid/util/Property;missing_types
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setFloatValues([F)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[I)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->calculateValue(F)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
-HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
+HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;+]Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValues([I)V
-HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
+HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/PropertyValuesHolder$PropertyValues;-><init>()V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;)V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/PropertyValuesHolder-IA;)V
 HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V
-HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
+HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;+]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;,Landroid/animation/IntKeyframeSet;,Landroid/animation/KeyframeSet;
 HSPLandroid/animation/PropertyValuesHolder;->convertBack(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder;->getMethodName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/animation/PropertyValuesHolder;->getPropertyFunction(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLandroid/animation/PropertyValuesHolder;->getPropertyName()Ljava/lang/String;
-HSPLandroid/animation/PropertyValuesHolder;->getPropertyValues(Landroid/animation/PropertyValuesHolder$PropertyValues;)V
+HSPLandroid/animation/PropertyValuesHolder;->getPropertyValues(Landroid/animation/PropertyValuesHolder$PropertyValues;)V+]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/PropertyValuesHolder;->getValueType()Ljava/lang/Class;
-HSPLandroid/animation/PropertyValuesHolder;->init()V
+HSPLandroid/animation/PropertyValuesHolder;->init()V+]Landroid/animation/Keyframes;Landroid/animation/KeyframeSet;
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;
@@ -440,12 +440,12 @@
 HSPLandroid/animation/PropertyValuesHolder;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder;->setPropertyName(Ljava/lang/String;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V+]Landroid/animation/Keyframes;Landroid/animation/IntKeyframeSet;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/PropertyValuesHolder;->setupGetter(Ljava/lang/Class;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V
+HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$ObjectKeyframe;]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;,Landroid/animation/IntKeyframeSet;,Landroid/animation/KeyframeSet;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;]Ljava/lang/Object;missing_types]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
+HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V+]Landroid/animation/Keyframes;Landroid/animation/IntKeyframeSet;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
+HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/lang/Object;missing_types]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;
 HSPLandroid/animation/StateListAnimator$1;-><init>(Landroid/animation/StateListAnimator;)V
 HSPLandroid/animation/StateListAnimator$1;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;-><init>(Landroid/animation/StateListAnimator;)V
@@ -453,10 +453,10 @@
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Ljava/lang/Object;
 HSPLandroid/animation/StateListAnimator$Tuple;-><init>([ILandroid/animation/Animator;)V
 HSPLandroid/animation/StateListAnimator;-><init>()V
-HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V
+HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/StateListAnimator;->appendChangingConfigurations(I)V
 HSPLandroid/animation/StateListAnimator;->clearTarget()V
-HSPLandroid/animation/StateListAnimator;->clone()Landroid/animation/StateListAnimator;
+HSPLandroid/animation/StateListAnimator;->clone()Landroid/animation/StateListAnimator;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/StateListAnimator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/StateListAnimator;->getChangingConfigurations()I
 HSPLandroid/animation/StateListAnimator;->getTarget()Landroid/view/View;
@@ -472,12 +472,12 @@
 HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V
 HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V
 HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/TimeInterpolator;Landroid/view/animation/LinearInterpolator;,Landroid/view/animation/PathInterpolator;,Landroid/view/animation/AccelerateDecelerateInterpolator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
+HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/TimeInterpolator;missing_types]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z
 HSPLandroid/animation/ValueAnimator;->cancel()V
 HSPLandroid/animation/ValueAnimator;->clampFraction(F)F
 HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator;
-HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
+HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->end()V
 HSPLandroid/animation/ValueAnimator;->endAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
@@ -513,25 +513,25 @@
 HSPLandroid/animation/ValueAnimator;->resolveDurationScale()F
 HSPLandroid/animation/ValueAnimator;->setAllowRunningAsynchronously(Z)V
 HSPLandroid/animation/ValueAnimator;->setAnimationHandler(Landroid/animation/AnimationHandler;)V
-HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V
+HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setCurrentPlayTime(J)V
 HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/Animator;
 HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setDurationScale(F)V
 HSPLandroid/animation/ValueAnimator;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V
+HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setIntValues([I)V
 HSPLandroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/ValueAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ValueAnimator;->setRepeatCount(I)V
 HSPLandroid/animation/ValueAnimator;->setRepeatMode(I)V
 HSPLandroid/animation/ValueAnimator;->setStartDelay(J)V
-HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValuesHolder;)V
+HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValuesHolder;)V+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/ValueAnimator;->shouldPlayBackward(IZ)Z
 HSPLandroid/animation/ValueAnimator;->skipToEndValue(Z)V
 HSPLandroid/animation/ValueAnimator;->start()V
 HSPLandroid/animation/ValueAnimator;->start(Z)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->startAnimation()V
+HSPLandroid/animation/ValueAnimator;->startAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V
 HSPLandroid/app/Activity$1;-><init>(Landroid/app/Activity;)V
 HSPLandroid/app/Activity$1;->isTaskRoot()Z
@@ -608,7 +608,7 @@
 HSPLandroid/app/Activity;->onCreateDescription()Ljava/lang/CharSequence;
 HSPLandroid/app/Activity;->onCreateOptionsMenu(Landroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onCreatePanelMenu(ILandroid/view/Menu;)Z
-HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/app/Activity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/app/Activity;->onDestroy()V
 HSPLandroid/app/Activity;->onDetachedFromWindow()V
@@ -1000,7 +1000,7 @@
 HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V
 HSPLandroid/app/ActivityThread;->peekPackageInfo(Ljava/lang/String;Z)Landroid/app/LoadedApk;
-HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/ActivityThread$ActivityClientRecord;]Landroid/app/Instrumentation;Landroid/app/Instrumentation;]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity;+]Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/ActivityThread$ActivityClientRecord;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/app/Instrumentation;Landroid/app/Instrumentation;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/app/ActivityThread;->performPauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;Landroid/app/servertransaction/PendingTransactionActions;)Landroid/os/Bundle;
 HSPLandroid/app/ActivityThread;->performPauseActivityIfNeeded(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->performRestartActivity(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
@@ -1264,7 +1264,7 @@
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(Landroid/content/pm/PackageManager$PackageInfoFlags;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;
+HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;+]Landroid/app/ApplicationPackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/ApplicationPackageManager;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
 HSPLandroid/app/ApplicationPackageManager;->getNameForUid(I)Ljava/lang/String;
 HSPLandroid/app/ApplicationPackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
@@ -1323,7 +1323,7 @@
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;II)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;I)Ljava/util/List;
+HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;I)Ljava/util/List;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/content/pm/PackageManager$ResolveInfoFlags;Landroid/content/pm/PackageManager$ResolveInfoFlags;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProvidersAsUser(Landroid/content/Intent;II)Ljava/util/List;
@@ -1411,7 +1411,7 @@
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V
-HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;IZ)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ContextParams;Landroid/content/ContextParams;
+HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;IZ)V+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/content/ContextParams;Landroid/content/ContextParams;
 HSPLandroid/app/ContextImpl;->bindIsolatedService(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z
 HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
 HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
@@ -1431,7 +1431,7 @@
 HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;)Landroid/app/ContextImpl;
 HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createAttributionContext(Ljava/lang/String;)Landroid/content/Context;
-HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;ZI)Landroid/content/AttributionSource;+]Ljava/util/Set;missing_types]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;
+HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;ZI)Landroid/content/AttributionSource;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Ljava/util/Set;missing_types
 HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createContext(Landroid/content/ContextParams;)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context;
@@ -1762,7 +1762,7 @@
 HSPLandroid/app/FragmentManagerImpl;->doPendingDeferredStart()V
 HSPLandroid/app/FragmentManagerImpl;->endAnimatingAwayFragments()V
 HSPLandroid/app/FragmentManagerImpl;->enqueueAction(Landroid/app/FragmentManagerImpl$OpGenerator;Z)V
-HSPLandroid/app/FragmentManagerImpl;->ensureExecReady(Z)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;
+HSPLandroid/app/FragmentManagerImpl;->ensureExecReady(Z)V+]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;]Landroid/os/Handler;Landroid/os/Handler;
 HSPLandroid/app/FragmentManagerImpl;->ensureInflatedFragmentView(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->execPendingActions()Z+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;
 HSPLandroid/app/FragmentManagerImpl;->executeOps(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V
@@ -1782,7 +1782,7 @@
 HSPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V
 HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V
-HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V
 HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
@@ -1841,10 +1841,10 @@
 HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;J)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
+HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/content/IIntentSender;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
 HSPLandroid/app/IActivityManager$Stub$Proxy;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
@@ -1872,7 +1872,7 @@
 HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
@@ -1931,7 +1931,7 @@
 HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z
 HSPLandroid/app/INotificationManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
@@ -2035,7 +2035,7 @@
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0;->run()V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable;
-HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0()V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0()V+]Landroid/app/LoadedApk$ReceiverDispatcher$Args;Landroid/app/LoadedApk$ReceiverDispatcher$Args;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher;-><init>(Landroid/app/IApplicationThread;Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V
@@ -2363,7 +2363,7 @@
 HSPLandroid/app/NotificationManager;->cancel(I)V
 HSPLandroid/app/NotificationManager;->cancel(Ljava/lang/String;I)V
 HSPLandroid/app/NotificationManager;->cancelAll()V
-HSPLandroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V
+HSPLandroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V+]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/os/UserHandle;Landroid/os/UserHandle;
 HSPLandroid/app/NotificationManager;->createNotificationChannel(Landroid/app/NotificationChannel;)V
 HSPLandroid/app/NotificationManager;->createNotificationChannelGroup(Landroid/app/NotificationChannelGroup;)V
 HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util/List;)V
@@ -2443,7 +2443,7 @@
 HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/PictureInPictureParams;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/PropertyInvalidatedCache$1;-><init>(Landroid/app/PropertyInvalidatedCache;IFZ)V
-HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$1;Landroid/app/PropertyInvalidatedCache$1;
 HSPLandroid/app/PropertyInvalidatedCache$DefaultComputer;-><init>(Landroid/app/PropertyInvalidatedCache;)V
 HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;-><clinit>()V
 HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J
@@ -2470,7 +2470,7 @@
 HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z
 HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z
 HSPLandroid/app/PropertyInvalidatedCache;->maybeCheckConsistency(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;]Landroid/app/PropertyInvalidatedCache;megamorphic_types
+HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/app/PropertyInvalidatedCache;megamorphic_types]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;
 HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V
@@ -2479,7 +2479,7 @@
 HSPLandroid/app/QueuedWork;->-$$Nest$smprocessPendingWork()V
 HSPLandroid/app/QueuedWork;->addFinisher(Ljava/lang/Runnable;)V
 HSPLandroid/app/QueuedWork;->getHandler()Landroid/os/Handler;
-HSPLandroid/app/QueuedWork;->handlerRemoveMessages(I)V
+HSPLandroid/app/QueuedWork;->handlerRemoveMessages(I)V+]Landroid/os/Handler;Landroid/app/QueuedWork$QueuedWorkHandler;
 HSPLandroid/app/QueuedWork;->hasPendingWork()Z
 HSPLandroid/app/QueuedWork;->processPendingWork()V
 HSPLandroid/app/QueuedWork;->queue(Ljava/lang/Runnable;Z)V
@@ -2514,8 +2514,8 @@
 HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;-><init>(Landroid/app/ResourcesManager;)V
 HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;->load(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
 HSPLandroid/app/ResourcesManager$ApkKey;-><init>(Ljava/lang/String;ZZ)V
-HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I
+HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;)V
 HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;Landroid/app/ResourcesManager$UpdateHandler-IA;)V
 HSPLandroid/app/ResourcesManager;->-$$Nest$mloadApkAssets(Landroid/app/ResourcesManager;Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
@@ -2540,7 +2540,7 @@
 HSPLandroid/app/ResourcesManager;->createResourcesForActivityLocked(Landroid/os/IBinder;Landroid/content/res/Configuration;Ljava/lang/Integer;Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
 HSPLandroid/app/ResourcesManager;->createResourcesImpl(Landroid/content/res/ResourcesKey;Landroid/app/ResourcesManager$ApkAssetsSupplier;)Landroid/content/res/ResourcesImpl;
 HSPLandroid/app/ResourcesManager;->createResourcesLocked(Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
-HSPLandroid/app/ResourcesManager;->extractApkKeys(Landroid/content/res/ResourcesKey;)Ljava/util/ArrayList;
+HSPLandroid/app/ResourcesManager;->extractApkKeys(Landroid/content/res/ResourcesKey;)Ljava/util/ArrayList;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/ResourcesManager;->findKeyForResourceImplLocked(Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey;
 HSPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
 HSPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;Landroid/app/ResourcesManager$ApkAssetsSupplier;)Landroid/content/res/ResourcesImpl;
@@ -2561,7 +2561,7 @@
 HSPLandroid/app/ResourcesManager;->isSameResourcesOverrideConfig(Landroid/os/IBinder;Landroid/content/res/Configuration;)Z
 HSPLandroid/app/ResourcesManager;->lambda$cleanupReferences$1(Ljava/util/function/Function;Ljava/util/HashSet;Ljava/lang/Object;)Z
 HSPLandroid/app/ResourcesManager;->lambda$createResourcesForActivityLocked$0(Landroid/app/ResourcesManager$ActivityResource;)Ljava/lang/ref/WeakReference;
-HSPLandroid/app/ResourcesManager;->loadApkAssets(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
+HSPLandroid/app/ResourcesManager;->loadApkAssets(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/app/ResourcesManager;->overlayPathToIdmapPath(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/app/ResourcesManager;->rebaseActivityOverrideConfig(Landroid/app/ResourcesManager$ActivityResource;Landroid/content/res/Configuration;I)Landroid/content/res/ResourcesKey;
 HSPLandroid/app/ResourcesManager;->rebaseKeyForActivity(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Z)V
@@ -2854,7 +2854,7 @@
 HSPLandroid/app/WallpaperManager;->setWallpaperZoomOut(Landroid/os/IBinder;F)V
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/WindowConfiguration;-><init>()V
+HSPLandroid/app/WindowConfiguration;-><init>()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z
@@ -2882,12 +2882,12 @@
 HSPLandroid/app/WindowConfiguration;->setRotation(I)V
 HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;I)V
-HSPLandroid/app/WindowConfiguration;->setToDefaults()V
+HSPLandroid/app/WindowConfiguration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;->setWindowingMode(I)V
 HSPLandroid/app/WindowConfiguration;->tasksAreFloating()Z
 HSPLandroid/app/WindowConfiguration;->toString()Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->unset()V
-HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/app/WindowConfiguration;->windowingModeToString(I)Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/admin/DevicePolicyManager$$ExternalSyntheticLambda5;-><init>(Landroid/app/admin/DevicePolicyManager;)V
@@ -3153,10 +3153,10 @@
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/net/Uri;I)V
 HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;)V+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Bundle;Landroid/os/Bundle;
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;)V
 HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo-IA;)V
-HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/NetworkRequest$1;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/app/job/JobInfo;->enforceValidity(ZZZZ)V+]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/job/JobInfo;->enforceValidity(ZZZZ)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle;
 HSPLandroid/app/job/JobInfo;->getFlags()I
 HSPLandroid/app/job/JobInfo;->getFlexMillis()J
@@ -3263,11 +3263,11 @@
 HSPLandroid/app/servertransaction/ActivityTransactionItem;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ClientTransaction;
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V+]Ljava/lang/Object;Landroid/app/servertransaction/ClientTransaction;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V+]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/app/servertransaction/ClientTransaction;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ClientTransaction-IA;)V
 HSPLandroid/app/servertransaction/ClientTransaction;->getCallbacks()Ljava/util/List;
 HSPLandroid/app/servertransaction/ClientTransaction;->getLifecycleStateRequest()Landroid/app/servertransaction/ActivityLifecycleItem;
-HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types
+HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V+]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/servertransaction/ClientTransactionItem;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I
 HSPLandroid/app/servertransaction/ClientTransactionItem;->shouldHaveDefinedPreExecutionState()Z
@@ -3330,7 +3330,7 @@
 HSPLandroid/app/servertransaction/TransactionExecutor;->execute(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeCallbacks(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeLifecycleState(Landroid/app/servertransaction/ClientTransaction;)V
-HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;
+HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;]Landroid/util/IntArray;Landroid/util/IntArray;
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;-><init>()V
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestOfStates(Landroid/app/ActivityThread$ActivityClientRecord;[I)I
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestPreExecutionState(Landroid/app/ActivityThread$ActivityClientRecord;I)I
@@ -3402,7 +3402,7 @@
 HSPLandroid/app/usage/AppStandbyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/usage/AppStandbyInfo;-><init>(Ljava/lang/String;I)V
 HSPLandroid/app/usage/AppStandbyInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/app/usage/IStorageStatsManager$Stub$Proxy;Landroid/app/usage/IStorageStatsManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/usage/IStorageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IStorageStatsManager;
 HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
@@ -3426,10 +3426,10 @@
 HSPLandroid/app/usage/UsageEvents;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z
 HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z
-HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V
+HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/content/res/Configuration$1;
+HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/app/usage/UsageStats$1;Landroid/app/usage/UsageStats$1;
+HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/app/usage/UsageStats;-><init>()V
 HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String;
 HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V
@@ -3608,10 +3608,13 @@
 HSPLandroid/content/ComponentName;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions;
 HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->-$$Nest$smcreateFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions$ContentProtectionOptions;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;-><init>(ZILjava/util/List;Ljava/util/List;I)V
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions$ContentProtectionOptions;
-HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createGroupsFromParcel(Landroid/os/Parcel;)Ljava/util/List;+]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$11;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createGroupsFromParcel(Landroid/os/Parcel;)Ljava/util/List;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$11;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->lambda$createGroupsFromParcel$0(I)Ljava/util/ArrayList;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->writeToParcel(Landroid/os/Parcel;)V
 HSPLandroid/content/ContentCaptureOptions;-><init>(IIIIILandroid/util/ArraySet;)V
 HSPLandroid/content/ContentCaptureOptions;-><init>(ZIIIIIZZLandroid/content/ContentCaptureOptions$ContentProtectionOptions;Landroid/util/ArraySet;)V
@@ -3859,7 +3862,7 @@
 HSPLandroid/content/ContentValues;->putObject(Ljava/lang/String;Ljava/lang/Object;)V
 HSPLandroid/content/ContentValues;->remove(Ljava/lang/String;)V
 HSPLandroid/content/ContentValues;->size()I
-HSPLandroid/content/ContentValues;->toString()Ljava/lang/String;
+HSPLandroid/content/ContentValues;->toString()Ljava/lang/String;+]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/content/ContentValues;->valueSet()Ljava/util/Set;
 HSPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/Context;-><init>()V
@@ -3873,11 +3876,11 @@
 HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence;
 HSPLandroid/content/Context;->getToken(Landroid/content/Context;)Landroid/os/IBinder;
-HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z
-HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
+HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z+]Landroid/content/Context;missing_types
+HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
-HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types
-HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
+HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
+HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V
 HSPLandroid/content/Context;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V
 HSPLandroid/content/ContextParams$Builder;-><init>()V
@@ -3930,7 +3933,7 @@
 HSPLandroid/content/ContextWrapper;->getAttributionSource()Landroid/content/AttributionSource;
 HSPLandroid/content/ContextWrapper;->getAttributionTag()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient;
-HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;
+HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;+]Landroid/content/Context;missing_types
 HSPLandroid/content/ContextWrapper;->getBaseContext()Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->getBasePackageName()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getCacheDir()Ljava/io/File;
@@ -3972,7 +3975,7 @@
 HSPLandroid/content/ContextWrapper;->getWindowContextToken()Landroid/os/IBinder;
 HSPLandroid/content/ContextWrapper;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V
 HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z
-HSPLandroid/content/ContextWrapper;->isRestricted()Z
+HSPLandroid/content/ContextWrapper;->isRestricted()Z+]Landroid/content/Context;missing_types
 HSPLandroid/content/ContextWrapper;->isUiContext()Z
 HSPLandroid/content/ContextWrapper;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;
 HSPLandroid/content/ContextWrapper;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;
@@ -4058,7 +4061,7 @@
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V
-HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
+HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/content/Intent;->addFlags(I)Landroid/content/Intent;
 HSPLandroid/content/Intent;->cloneFilter()Landroid/content/Intent;
 HSPLandroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
@@ -4303,7 +4306,7 @@
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo;
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/content/pm/ActivityInfo$WindowLayout;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I
 HSPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I
 HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I
@@ -4322,7 +4325,7 @@
 HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/ApplicationInfo;-><init>()V
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/content/pm/ApplicationInfo;)V
-HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
+HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo-IA;)V
 HSPLandroid/content/pm/ApplicationInfo;->getAllApkPaths()[Ljava/lang/String;
 HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
@@ -4368,7 +4371,7 @@
 HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List;
 HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;
 HSPLandroid/content/pm/BaseParceledListSlice;->readVerifyAndAddElement(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class;
-HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V
+HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V+]Ljava/lang/Object;Ljava/lang/Class;
 HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Checksum;
 HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -4415,15 +4418,15 @@
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;JI)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String;
@@ -4493,7 +4496,7 @@
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInfo;
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/PackageInfo;-><init>()V
-HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/content/pm/ApplicationInfo$1;,Landroid/content/pm/SigningInfo$1;
 HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/PackageInfo-IA;)V
 HSPLandroid/content/pm/PackageInfo;->composeLongVersionCode(II)J
 HSPLandroid/content/pm/PackageInfo;->getLongVersionCode()J
@@ -4689,7 +4692,7 @@
 HSPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SharedLibraryInfo;
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/SharedLibraryInfo-IA;)V
 HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;Ljava/util/List;Z)V
 HSPLandroid/content/pm/SharedLibraryInfo;->addDependency(Landroid/content/pm/SharedLibraryInfo;)V
@@ -4763,7 +4766,7 @@
 HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;Landroid/content/pm/Signature-IA;)V
 HSPLandroid/content/pm/Signature;-><init>(Ljava/lang/String;)V
 HSPLandroid/content/pm/Signature;-><init>([B)V
@@ -4776,11 +4779,11 @@
 HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String;
 HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningDetails;
 HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SigningDetails;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/SigningDetails;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/content/pm/SigningDetails;->getSignatures()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningInfo;
 HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SigningInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/SigningInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/content/pm/SigningDetails$1;
 HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo;->getSigningCertificateHistory()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo;->hasMultipleSigners()Z
@@ -4790,7 +4793,7 @@
 HSPLandroid/content/pm/StringParceledListSlice;->getList()Ljava/util/List;
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/UserInfo;
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/UserInfo;->getUserHandle()Landroid/os/UserHandle;
 HSPLandroid/content/pm/UserInfo;->isAdmin()Z
 HSPLandroid/content/pm/UserInfo;->isEnabled()Z
@@ -4879,7 +4882,7 @@
 HSPLandroid/content/res/AssetManager$AssetInputStream;->read([BII)I
 HSPLandroid/content/res/AssetManager$Builder;-><init>()V
 HSPLandroid/content/res/AssetManager$Builder;->addApkAssets(Landroid/content/res/ApkAssets;)Landroid/content/res/AssetManager$Builder;
-HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;
+HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/content/res/AssetManager;->-$$Nest$fgetmObject(Landroid/content/res/AssetManager;)J
 HSPLandroid/content/res/AssetManager;->-$$Nest$fputmApkAssets(Landroid/content/res/AssetManager;[Landroid/content/res/ApkAssets;)V
 HSPLandroid/content/res/AssetManager;->-$$Nest$fputmLoaders(Landroid/content/res/AssetManager;[Landroid/content/res/loader/ResourcesLoader;)V
@@ -4927,7 +4930,7 @@
 HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/AssetManager;->getSizeConfigurations()[Landroid/content/res/Configuration;
 HSPLandroid/content/res/AssetManager;->getSystem()Landroid/content/res/AssetManager;
-HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V
 HSPLandroid/content/res/AssetManager;->isUpToDate()Z
 HSPLandroid/content/res/AssetManager;->list(Ljava/lang/String;)[Ljava/lang/String;
@@ -4966,7 +4969,7 @@
 HSPLandroid/content/res/ColorStateList;->getColorForState([II)I
 HSPLandroid/content/res/ColorStateList;->getConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/content/res/ColorStateList;->getDefaultColor()I
-HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/ColorStateList;->isStateful()Z
 HSPLandroid/content/res/ColorStateList;->modulateColor(IFF)I
 HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
@@ -5008,7 +5011,7 @@
 HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z
 HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Ljava/lang/Object;Ljava/util/Locale;]Landroid/os/LocaleList;Landroid/os/LocaleList;
+HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Object;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration;
 HSPLandroid/content/res/Configuration;->getGrammaticalGender()I
 HSPLandroid/content/res/Configuration;->getLayoutDirection()I
@@ -5020,19 +5023,19 @@
 HSPLandroid/content/res/Configuration;->isScreenRound()Z
 HSPLandroid/content/res/Configuration;->isScreenWideColorGamut()Z
 HSPLandroid/content/res/Configuration;->needNewResources(II)Z
-HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/res/Configuration;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V
 HSPLandroid/content/res/Configuration;->reduceScreenLayout(III)I
 HSPLandroid/content/res/Configuration;->resetScreenLayout(I)I
 HSPLandroid/content/res/Configuration;->setLayoutDirection(Ljava/util/Locale;)V
 HSPLandroid/content/res/Configuration;->setLocale(Ljava/util/Locale;)V
 HSPLandroid/content/res/Configuration;->setLocales(Landroid/os/LocaleList;)V
-HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V+]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;II)V
-HSPLandroid/content/res/Configuration;->setToDefaults()V
+HSPLandroid/content/res/Configuration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/content/res/Configuration;->toString()Ljava/lang/String;
 HSPLandroid/content/res/Configuration;->unset()V
-HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/res/ConfigurationBoundResourceCache;-><init>()V
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;
@@ -5053,8 +5056,8 @@
 HSPLandroid/content/res/FeatureFlagsImpl;->defaultLocale()Z
 HSPLandroid/content/res/Flags;->defaultLocale()Z
 HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
+HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
+HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/util/List;Ljava/util/ArrayList;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/FontScaleConverterFactory;->forScale(F)Landroid/content/res/FontScaleConverter;
 HSPLandroid/content/res/FontScaleConverterFactory;->isNonLinearFontScalingActive(F)Z
 HSPLandroid/content/res/GradientColor;-><init>()V
@@ -5073,33 +5076,33 @@
 HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;)V
 HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme-IA;)V
 HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V
-HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z
+HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Ljava/lang/Object;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/res/Resources$Theme;->getAppliedStyleResId()I
 HSPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I
-HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->getParentThemeIdentifier(I)I
 HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources$Theme;->getTheme()[Ljava/lang/String;
 HSPLandroid/content/res/Resources$Theme;->hashCode()I
-HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
+HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->rebase()V
 HSPLandroid/content/res/Resources$Theme;->rebase(Landroid/content/res/ResourcesImpl;)V
-HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
 HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V
-HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/content/res/Resources$ThemeKey;-><init>()V
 HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V
 HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey;
-HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/Resources$ThemeKey;->hashCode()I
 HSPLandroid/content/res/Resources$ThemeKey;->moveToLast(I)V
 HSPLandroid/content/res/Resources$ThemeKey;->setTo(Landroid/content/res/Resources$ThemeKey;)V+][I[I][Z[Z
 HSPLandroid/content/res/Resources;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V
-HSPLandroid/content/res/Resources;-><init>(Ljava/lang/ClassLoader;)V
+HSPLandroid/content/res/Resources;-><init>(Ljava/lang/ClassLoader;)V+]Ljava/util/Set;Ljava/util/Collections$SynchronizedSet;
 HSPLandroid/content/res/Resources;->addLoaders([Landroid/content/res/loader/ResourcesLoader;)V
 HSPLandroid/content/res/Resources;->checkCallbacksRegistered()V
 HSPLandroid/content/res/Resources;->cleanupThemeReferences()V
@@ -5126,7 +5129,7 @@
 HSPLandroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/Resources;->getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getDrawableInflater()Landroid/graphics/drawable/DrawableInflater;
 HSPLandroid/content/res/Resources;->getFloat(I)F
 HSPLandroid/content/res/Resources;->getFont(Landroid/util/TypedValue;I)Landroid/graphics/Typeface;
@@ -5140,7 +5143,7 @@
 HSPLandroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence;
-HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;
+HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getResourceName(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getResourceTypeName(I)Ljava/lang/String;
@@ -5148,24 +5151,24 @@
 HSPLandroid/content/res/Resources;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
+HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence;
-HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V
+HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V
 HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/Resources;->hasOverrideDisplayAdjustments()Z
-HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
+HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;
-HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme;
+HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
+HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue;
-HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;
+HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;
@@ -5195,26 +5198,26 @@
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->pop()V
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->push(I)V
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;-><init>(Landroid/content/res/ResourcesImpl;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;-><init>(Landroid/content/res/ResourcesImpl;)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->finalize()V
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getAppliedStyleResId()I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getChangingConfigurations()I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getKey()Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getParentThemeIdentifier(I)I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getTheme()[Ljava/lang/String;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase()V
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase(Landroid/content/res/AssetManager;)V
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/ResourcesImpl;->-$$Nest$sfgetsThemeRegistry()Llibcore/util/NativeAllocationRegistry;
-HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V
+HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;
 HSPLandroid/content/res/ResourcesImpl;->adjustLanguageTag(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->attrForQuantityCode(Ljava/lang/String;)I
 HSPLandroid/content/res/ResourcesImpl;->cacheDrawable(Landroid/util/TypedValue;ZLandroid/content/res/DrawableCache;Landroid/content/res/Resources$Theme;ZJLandroid/graphics/drawable/Drawable;I)V
-HSPLandroid/content/res/ResourcesImpl;->calcConfigChanges(Landroid/content/res/Configuration;)I
+HSPLandroid/content/res/ResourcesImpl;->calcConfigChanges(Landroid/content/res/Configuration;)I+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;
 HSPLandroid/content/res/ResourcesImpl;->decodeImageDrawable(Landroid/content/res/AssetManager$AssetInputStream;Landroid/content/res/Resources;Landroid/util/TypedValue;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/ResourcesImpl;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLandroid/content/res/ResourcesImpl;->finishPreloading()V
@@ -5222,7 +5225,7 @@
 HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager;
 HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I
-HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;
+HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo;
 HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration;
 HSPLandroid/content/res/ResourcesImpl;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;
@@ -5244,18 +5247,18 @@
 HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
-HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;
-HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;Landroid/graphics/drawable/ColorDrawable$ColorState;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/ColorDrawable;
-HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;
+HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
+HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->loadXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock;
+HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->newThemeImpl()Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;
 HSPLandroid/content/res/ResourcesImpl;->openRawResourceFd(ILandroid/util/TypedValue;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/res/ResourcesImpl;->startPreloading()V
-HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
-HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;
+HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/util/Locale;Ljava/util/Locale;
+HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z
 HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Landroid/content/res/loader/ResourcesLoader;)V
 HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z
@@ -5268,9 +5271,9 @@
 HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/StringBlock;->getSequence(I)Ljava/lang/CharSequence;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/content/res/ThemedResourceCache;-><init>()V
-HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/content/res/ThemedResourceCache;->getGeneration()I
-HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray;
 HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V
 HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z
@@ -5291,14 +5294,14 @@
 HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/content/res/TypedArray;->getFloat(IF)F
-HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;
+HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/content/res/TypedArray;->getFraction(IIIF)F
 HSPLandroid/content/res/TypedArray;->getIndex(I)I
 HSPLandroid/content/res/TypedArray;->getIndexCount()I
 HSPLandroid/content/res/TypedArray;->getInt(II)I
 HSPLandroid/content/res/TypedArray;->getInteger(II)I
 HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I
-HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I
+HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String;
@@ -5313,7 +5316,7 @@
 HSPLandroid/content/res/TypedArray;->hasValue(I)Z
 HSPLandroid/content/res/TypedArray;->hasValueOrEmpty(I)Z
 HSPLandroid/content/res/TypedArray;->length()I
-HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/TypedArray;->obtain(Landroid/content/res/Resources;I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
 HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;
 HSPLandroid/content/res/TypedArray;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
@@ -5337,7 +5340,7 @@
 HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I
 HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I
 HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
-HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;
+HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
 HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->getSequenceString(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->getSourceResId()I
@@ -5346,7 +5349,7 @@
 HSPLandroid/content/res/XmlBlock$Parser;->next()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/XmlBlock$Parser;->nextTag()I
 HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String;
-HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock;->-$$Nest$fgetmOpenCount(Landroid/content/res/XmlBlock;)I
 HSPLandroid/content/res/XmlBlock;->-$$Nest$fputmOpenCount(Landroid/content/res/XmlBlock;I)V
 HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetAttributeCount(J)I
@@ -5360,7 +5363,7 @@
 HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetText(J)I
 HSPLandroid/content/res/XmlBlock;-><init>(Landroid/content/res/AssetManager;J)V
 HSPLandroid/content/res/XmlBlock;->close()V
-HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V+]Ljava/lang/Object;Landroid/content/res/XmlBlock;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
+HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;]Ljava/lang/Object;Landroid/content/res/XmlBlock;
 HSPLandroid/content/res/XmlBlock;->finalize()V
 HSPLandroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser;
@@ -5371,10 +5374,10 @@
 HSPLandroid/database/AbstractCursor$SelfContentObserver;-><init>(Landroid/database/AbstractCursor;)V
 HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V
 HSPLandroid/database/AbstractCursor;-><init>()V
-HSPLandroid/database/AbstractCursor;->checkPosition()V
+HSPLandroid/database/AbstractCursor;->checkPosition()V+]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor;,Landroid/database/sqlite/SQLiteCursor;
 HSPLandroid/database/AbstractCursor;->close()V
 HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V
-HSPLandroid/database/AbstractCursor;->finalize()V
+HSPLandroid/database/AbstractCursor;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLandroid/database/AbstractCursor;->getColumnCount()I
 HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I
 HSPLandroid/database/AbstractCursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
@@ -5407,13 +5410,13 @@
 HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B
 HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D
 HSPLandroid/database/AbstractWindowedCursor;->getFloat(I)F
-HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I
-HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J
-HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;
+HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/BulkCursorToCursorAdaptor;,Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->getType(I)I
 HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->hasWindow()Z
-HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z
+HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->onDeactivateOrClose()V
 HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V
 HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor;
@@ -5479,16 +5482,16 @@
 HSPLandroid/database/CursorWindow;->clear()V
 HSPLandroid/database/CursorWindow;->dispose()V
 HSPLandroid/database/CursorWindow;->finalize()V
-HSPLandroid/database/CursorWindow;->getBlob(II)[B
+HSPLandroid/database/CursorWindow;->getBlob(II)[B+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->getCursorWindowSize()I
 HSPLandroid/database/CursorWindow;->getDouble(II)D
 HSPLandroid/database/CursorWindow;->getFloat(II)F
 HSPLandroid/database/CursorWindow;->getInt(II)I
-HSPLandroid/database/CursorWindow;->getLong(II)J
+HSPLandroid/database/CursorWindow;->getLong(II)J+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->getNumRows()I
 HSPLandroid/database/CursorWindow;->getStartPosition()I
-HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String;
-HSPLandroid/database/CursorWindow;->getType(II)I
+HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String;+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/CursorWindow;->getType(II)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V
 HSPLandroid/database/CursorWindow;->putLong(JII)Z
@@ -5590,7 +5593,7 @@
 HSPLandroid/database/sqlite/SQLiteClosable;-><init>()V
 HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V
 HSPLandroid/database/sqlite/SQLiteClosable;->close()V
-HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V
+HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteStatement;
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V
@@ -5600,7 +5603,7 @@
 HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V
 HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
-HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->dump(Landroid/util/Printer;)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperation(I)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z
@@ -5625,7 +5628,7 @@
 HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatementLI(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;
 HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V
-HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V+]Ljava/lang/Number;Ljava/lang/Double;,Ljava/lang/Integer;,Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->checkDatabaseWiped()V
 HSPLandroid/database/sqlite/SQLiteConnection;->close()V
@@ -5633,11 +5636,11 @@
 HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V
 HSPLandroid/database/sqlite/SQLiteConnection;->dumpUnsafe(Landroid/util/Printer;Z)V
-HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog;]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J
-HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J
+HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog;]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->executePerConnectionSqlFromConfiguration(I)V
 HSPLandroid/database/sqlite/SQLiteConnection;->finalize()V
@@ -5720,7 +5723,7 @@
 HSPLandroid/database/sqlite/SQLiteCursor;->getColumnNames()[Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I
 HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;
-HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z
+HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;-><init>(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda2;-><init>()V
@@ -5752,7 +5755,7 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V
-HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;
+HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteDatabase;->createSession()Landroid/database/sqlite/SQLiteSession;
 HSPLandroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
 HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;)Z
@@ -5780,7 +5783,7 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
 HSPLandroid/database/sqlite/SQLiteDatabase;->insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
-HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J
+HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J+]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z
@@ -5925,7 +5928,7 @@
 HSPLandroid/database/sqlite/SQLiteSession;->yieldTransaction(JZLandroid/os/CancellationSignal;)Z
 HSPLandroid/database/sqlite/SQLiteSession;->yieldTransactionUnchecked(JLandroid/os/CancellationSignal;)Z
 HSPLandroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/database/sqlite/SQLiteStatement;->execute()V
+HSPLandroid/database/sqlite/SQLiteStatement;->execute()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;
 HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J
 HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I
 HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J
@@ -5983,9 +5986,9 @@
 HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;missing_types]Landroid/graphics/Path;Landroid/graphics/Path;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas;
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V+]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V
@@ -6133,8 +6136,8 @@
 HSPLandroid/graphics/Canvas;->save()I
 HSPLandroid/graphics/Canvas;->save(I)I
 HSPLandroid/graphics/Canvas;->saveLayer(FFFFLandroid/graphics/Paint;I)I
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;
+HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;
 HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFI)I
 HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFII)I
 HSPLandroid/graphics/Canvas;->saveUnclippedLayer(IIII)I
@@ -6414,7 +6417,7 @@
 HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V
 HSPLandroid/graphics/Outline;->setRect(IIII)V
 HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline;
+HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;
 HSPLandroid/graphics/Paint$FontMetrics;-><init>()V
 HSPLandroid/graphics/Paint$FontMetricsInt;-><init>()V
@@ -6433,12 +6436,12 @@
 HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F
 HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;
 HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I
-HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V
+HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/graphics/Paint;->getFontVariationSettings()Ljava/lang/String;
 HSPLandroid/graphics/Paint;->getHinting()I
 HSPLandroid/graphics/Paint;->getLetterSpacing()F
 HSPLandroid/graphics/Paint;->getMaskFilter()Landroid/graphics/MaskFilter;
-HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader;
+HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/BitmapShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/drawable/RippleShader;
 HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F
 HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F
 HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F
@@ -6501,7 +6504,7 @@
 HSPLandroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;
 HSPLandroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;
 HSPLandroid/graphics/Paint;->setShadowLayer(FFFI)V
-HSPLandroid/graphics/Paint;->setShadowLayer(FFFJ)V
+HSPLandroid/graphics/Paint;->setShadowLayer(FFFJ)V+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb;
 HSPLandroid/graphics/Paint;->setStartHyphenEdit(I)V
 HSPLandroid/graphics/Paint;->setStrokeCap(Landroid/graphics/Paint$Cap;)V
 HSPLandroid/graphics/Paint;->setStrokeJoin(Landroid/graphics/Paint$Join;)V
@@ -6516,7 +6519,7 @@
 HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Paint;->setUnderlineText(Z)V
 HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;
-HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/LocaleList;Landroid/os/LocaleList;
+HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/graphics/PaintFlagsDrawFilter;-><init>(II)V
 HSPLandroid/graphics/Path;-><init>()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/graphics/Path;-><init>(Landroid/graphics/Path;)V
@@ -6527,7 +6530,7 @@
 HSPLandroid/graphics/Path;->addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;
 HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V
-HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V
+HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V+]Landroid/graphics/Path;Landroid/graphics/Path;
 HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V
@@ -6650,7 +6653,7 @@
 HSPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String;
 HSPLandroid/graphics/Rect;->toString()Ljava/lang/String;
 HSPLandroid/graphics/Rect;->union(IIII)V
-HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V
+HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/graphics/Rect;->width()I
 HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/graphics/RectF;-><init>()V
@@ -6768,7 +6771,7 @@
 HSPLandroid/graphics/Shader;->discardNativeInstance()V
 HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V
 HSPLandroid/graphics/Shader;->getNativeInstance()J
-HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
+HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/BitmapShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/drawable/RippleShader;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V
 HSPLandroid/graphics/Shader;->shouldDiscardNativeInstance(Z)Z
 HSPLandroid/graphics/SurfaceTexture$1;->handleMessage(Landroid/os/Message;)V
@@ -6786,7 +6789,7 @@
 HSPLandroid/graphics/TextureLayer;->close()V
 HSPLandroid/graphics/TextureLayer;->detachSurfaceTexture()V
 HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;-><init>(Landroid/graphics/fonts/FontFamily;)V
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder;
@@ -6800,9 +6803,9 @@
 HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface;->deserializeFontMap(Ljava/nio/ByteBuffer;Ljava/util/Map;)[J
 HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z
-HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
+HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;+]Landroid/util/LruCache;Landroid/util/LruCache;
 HSPLandroid/graphics/Typeface;->getStyle()I
-HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;
+HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;+]Ljava/util/Map;Landroid/util/ArrayMap;
 HSPLandroid/graphics/Typeface;->getSystemFontFamilyName()Ljava/lang/String;
 HSPLandroid/graphics/Typeface;->hasFontFamily(Ljava/lang/String;)Z
 HSPLandroid/graphics/Typeface;->readString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
@@ -7065,7 +7068,7 @@
 HSPLandroid/graphics/drawable/ColorDrawable;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable-IA;)V
 HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V
-HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;
 HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I
@@ -7107,7 +7110,7 @@
 HSPLandroid/graphics/drawable/Drawable;->getLayoutDirection()I
 HSPLandroid/graphics/drawable/Drawable;->getLevel()I
 HSPLandroid/graphics/drawable/Drawable;->getMinimumHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/Drawable;->getMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/graphics/drawable/Drawable;->getMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/Drawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/Drawable;->getState()[I
@@ -7124,14 +7127,14 @@
 HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode;
-HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I
+HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I
 HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F
 HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I
 HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V
 HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types
 HSPLandroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V
 HSPLandroid/graphics/drawable/Drawable;->setChangingConfigurations(I)V
 HSPLandroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V
@@ -7140,20 +7143,20 @@
 HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z
 HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z
 HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V
-HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types
 HSPLandroid/graphics/drawable/Drawable;->setTint(I)V
 HSPLandroid/graphics/drawable/Drawable;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V
-HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/VectorDrawable;
+HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ShapeDrawable;,Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback-IA;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback;
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
-HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z
@@ -7196,11 +7199,11 @@
 HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;
 HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/StateListDrawable;,Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;
 HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->isAutoMirrored()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z
-HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V
+HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V
@@ -7234,14 +7237,14 @@
 HSPLandroid/graphics/drawable/DrawableWrapper;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/DrawableWrapper;->clearMutated()V
 HSPLandroid/graphics/drawable/DrawableWrapper;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I
+HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/graphics/drawable/InsetDrawable$InsetState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicWidth()I
 HSPLandroid/graphics/drawable/DrawableWrapper;->getOpacity()I
-HSPLandroid/graphics/drawable/DrawableWrapper;->getPadding(Landroid/graphics/Rect;)Z
+HSPLandroid/graphics/drawable/DrawableWrapper;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->inflateChildDrawable(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable$Callback;Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/DrawableWrapper;Landroid/graphics/drawable/InsetDrawable;
@@ -7251,10 +7254,10 @@
 HSPLandroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z
-HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setTintBlendMode(Landroid/graphics/BlendMode;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V
@@ -7284,8 +7287,8 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V
-HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z
+HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
@@ -7326,7 +7329,7 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -7351,7 +7354,7 @@
 HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-$$Nest$fputmThemeAttrs(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)V
-HSPLandroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->onDensityChanged(II)V
@@ -7367,11 +7370,11 @@
 HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable-IA;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue;
-HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/InsetDrawable;Landroid/graphics/drawable/InsetDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;
-HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I
-HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I
+HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;]Landroid/graphics/drawable/InsetDrawable;missing_types
+HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
+HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
 HSPLandroid/graphics/drawable/InsetDrawable;->getOpacity()I
-HSPLandroid/graphics/drawable/InsetDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/InsetDrawable;Landroid/graphics/drawable/InsetDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable;
+HSPLandroid/graphics/drawable/InsetDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
 HSPLandroid/graphics/drawable/InsetDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/InsetDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
@@ -7379,7 +7382,7 @@
 HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(I)V
-HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V
@@ -7399,11 +7402,11 @@
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>()V
-HSPLandroid/graphics/drawable/LayerDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/LayerDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
-HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;)I
+HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable;+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;)I+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/RippleDrawable$RippleState;
 HSPLandroid/graphics/drawable/LayerDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/LayerDrawable;->clearMutated()V
@@ -7418,11 +7421,11 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/LayerDrawable;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;
+HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->getNumberOfLayers()I
 HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/LayerDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;
-HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/RippleDrawable$RippleState;]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
@@ -7432,7 +7435,7 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V
 HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I
@@ -7452,7 +7455,7 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable$$ExternalSyntheticLambda0;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
@@ -7549,12 +7552,12 @@
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>()V
-HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/RippleDrawable;missing_types
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable-IA;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V
+HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V
 HSPLandroid/graphics/drawable/RippleDrawable;->computeRadius()F
 HSPLandroid/graphics/drawable/RippleDrawable;->createAnimationProperties(FFFFFF)Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;
@@ -7563,27 +7566,27 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V
+HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;]Landroid/graphics/drawable/RippleDrawable;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/RippleDrawable;->drawPatternedBackground(Landroid/graphics/Canvas;FF)V
 HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedAnimation()V
-HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V
+HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->getComputedRadius()I
 HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
-HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I
 HSPLandroid/graphics/drawable/RippleDrawable;->getOpacity()I
-HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;
+HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/StateListDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V
 HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
-HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z
+HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->onHotspotBoundsChanged()V
-HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->pruneRipples()V
 HSPLandroid/graphics/drawable/RippleDrawable;->setBackgroundActive(ZZZZ)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setColor(Landroid/content/res/ColorStateList;)V
@@ -7592,11 +7595,11 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->setPaddingMode(I)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setRippleActive(Z)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setVisible(ZZ)Z
-HSPLandroid/graphics/drawable/RippleDrawable;->startBackgroundAnimation()V
+HSPLandroid/graphics/drawable/RippleDrawable;->startBackgroundAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
 HSPLandroid/graphics/drawable/RippleDrawable;->tryRippleEnter()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateLocalState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateMaskShaderIfNeeded()V
-HSPLandroid/graphics/drawable/RippleDrawable;->updateRipplePaint()Landroid/graphics/Paint;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/RippleShader;Landroid/graphics/drawable/RippleShader;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/BitmapShader;Landroid/graphics/BitmapShader;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;
+HSPLandroid/graphics/drawable/RippleDrawable;->updateRipplePaint()Landroid/graphics/Paint;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BitmapShader;Landroid/graphics/BitmapShader;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/RippleShader;Landroid/graphics/drawable/RippleShader;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/RippleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RippleForeground$1;->onAnimationEnd(Landroid/animation/Animator;)V
@@ -7674,7 +7677,7 @@
 HSPLandroid/graphics/drawable/ShapeDrawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPaint()Landroid/graphics/Paint;
-HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;
 HSPLandroid/graphics/drawable/ShapeDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/ShapeDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
@@ -7684,7 +7687,7 @@
 HSPLandroid/graphics/drawable/ShapeDrawable;->setShape(Landroid/graphics/drawable/shapes/Shape;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->updateLocalState()V
-HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V
+HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/ShapeDrawable;Landroid/graphics/drawable/PaintDrawable;]Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/drawable/shapes/OvalShape;,Landroid/graphics/drawable/shapes/RoundRectShape;
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/graphics/drawable/StateListDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->canApplyTheme()Z
@@ -7733,23 +7736,23 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/lang/String;)I
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Landroid/content/res/GradientColor;Landroid/content/res/GradientColor;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Shader;Landroid/graphics/LinearGradient;]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmChangingConfigurations(Landroid/graphics/drawable/VectorDrawable$VGroup;)I
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmNativePtr(Landroid/graphics/drawable/VectorDrawable$VGroup;)J
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>()V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VObject;-><init>()V
 HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z
@@ -7759,13 +7762,13 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String;
 HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->-$$Nest$mcreateNativeTree(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I
@@ -7774,10 +7777,10 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V
 HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnAddChild(JJ)V
 HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnCreateFullPath()J
@@ -7804,7 +7807,7 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/VectorDrawable;->computeVectorSize()V
-HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
@@ -7815,13 +7818,13 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getPixelSize()F
 HSPLandroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object;
-HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;
-HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Stack;Ljava/util/Stack;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
+HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/graphics/drawable/VectorDrawable$VClipPath;Landroid/graphics/drawable/VectorDrawable$VClipPath;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Stack;Ljava/util/Stack;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z
-HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z
-HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V
@@ -7830,7 +7833,7 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V
-HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/shapes/OvalShape;-><init>()V
 HSPLandroid/graphics/drawable/shapes/OvalShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/drawable/shapes/OvalShape;->getOutline(Landroid/graphics/Outline;)V
@@ -7913,7 +7916,7 @@
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(I)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(Z)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeLayout(Z)Landroid/graphics/text/MeasuredText$Builder;
-HSPLandroid/graphics/text/MeasuredText;->getCharWidthAt(I)F
+HSPLandroid/graphics/text/MeasuredText;->getCharWidthAt(I)F+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/graphics/text/MeasuredText;->getChars()[C
 HSPLandroid/graphics/text/MeasuredText;->getNativePtr()J
 HSPLandroid/hardware/Camera$CameraInfo;-><init>()V
@@ -7983,7 +7986,7 @@
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;-><init>(Landroid/hardware/SensorEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchAdditionalInfoEvent(III[F[I)V
-HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V+]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchSensorEvent(I[FIJ)V
@@ -8185,6 +8188,7 @@
 HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager;
 HSPLandroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()I
+HSPLandroid/hardware/display/DisplayManagerGlobal;->extraLogging()Z
 HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/content/res/Resources;)Landroid/view/Display;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/view/DisplayAdjustments;)Landroid/view/Display;
@@ -8199,6 +8203,7 @@
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->initExtraLogging()Z
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V
+HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;JLjava/lang/String;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerNativeChoreographerForRefreshRateCallbacks()V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->updateCallbackIfNeededLocked()V
@@ -8441,7 +8446,7 @@
 HSPLandroid/icu/impl/FormattedStringBuilder;->unwrapField(Ljava/lang/Object;)Ljava/text/Format$Field;
 HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->isIntOrGroup(Ljava/lang/Object;)Z
 HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z
-HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition;
 HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I
 HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I
 HSPLandroid/icu/impl/Grego;->fieldsToDay(III)J
@@ -8625,7 +8630,7 @@
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
-HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer;
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
@@ -8857,14 +8862,14 @@
 HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/StringSegment;-><init>(Ljava/lang/String;Z)V
 HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V
-HSPLandroid/icu/impl/StringSegment;->charAt(I)C
+HSPLandroid/icu/impl/StringSegment;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->codePointsEqual(IIZ)Z
-HSPLandroid/icu/impl/StringSegment;->getCodePoint()I
+HSPLandroid/icu/impl/StringSegment;->getCodePoint()I+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->getCommonPrefixLength(Ljava/lang/CharSequence;)I
 HSPLandroid/icu/impl/StringSegment;->getOffset()I
-HSPLandroid/icu/impl/StringSegment;->getPrefixLengthInternal(Ljava/lang/CharSequence;Z)I
+HSPLandroid/icu/impl/StringSegment;->getPrefixLengthInternal(Ljava/lang/CharSequence;Z)I+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->length()I
-HSPLandroid/icu/impl/StringSegment;->startsWith(Landroid/icu/text/UnicodeSet;)Z
+HSPLandroid/icu/impl/StringSegment;->startsWith(Landroid/icu/text/UnicodeSet;)Z+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/StringSegment;->startsWith(Ljava/lang/CharSequence;)Z
 HSPLandroid/icu/impl/TextTrieMap$Node;-><init>(Landroid/icu/impl/TextTrieMap;)V
 HSPLandroid/icu/impl/TextTrieMap;-><init>(Z)V
@@ -8922,7 +8927,7 @@
 HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I
 HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I
 HSPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I
-HSPLandroid/icu/impl/UCaseProps;->fold(II)I
+HSPLandroid/icu/impl/UCaseProps;->fold(II)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16;
 HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I
 HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/util/Locale;)I
 HSPLandroid/icu/impl/UCaseProps;->getDelta(I)I
@@ -9212,11 +9217,11 @@
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->adjustMagnitude(I)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->appendDigit(BIZ)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->appendDigit(BIZ)V+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->applyMaxInteger(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->copyFrom(Landroid/icu/impl/number/DecimalQuantity;)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getLowerDisplayMagnitude()I
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getMagnitude()I
@@ -9239,8 +9244,8 @@
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToInt(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->signum()Landroid/icu/impl/number/Modifier$Signum;
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J
-HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>()V+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(D)V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(J)V
@@ -9345,14 +9350,14 @@
 HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Landroid/icu/impl/number/parse/AffixMatcher;Landroid/icu/impl/number/parse/AffixMatcher;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher;-><init>(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)V
-HSPLandroid/icu/impl/number/parse/AffixMatcher;->createMatchers(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->createMatchers(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)V+]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->getInstance(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)Landroid/icu/impl/number/parse/AffixMatcher;
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->isInteresting(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->length(Landroid/icu/impl/number/parse/AffixPatternMatcher;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->matched(Landroid/icu/impl/number/parse/AffixPatternMatcher;Ljava/lang/String;)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
-HSPLandroid/icu/impl/number/parse/AffixMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z+]Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->consumeToken(I)V
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->equals(Ljava/lang/Object;)Z
@@ -9360,7 +9365,7 @@
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->getPattern()Ljava/lang/String;
 HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;-><init>()V
 HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;->minusSign()Landroid/icu/impl/number/parse/MinusSignMatcher;
-HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)V
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)V+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)Landroid/icu/impl/number/parse/DecimalMatcher;
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;I)Z
@@ -9381,7 +9386,7 @@
 HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parseGreedy(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;-><init>()V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->clear()V
-HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->postProcess()V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->seenNumber()Z
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->setCharsConsumed(Landroid/icu/impl/StringSegment;)V
@@ -9390,7 +9395,7 @@
 HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
 HSPLandroid/icu/impl/number/parse/RequireNumberValidator;-><init>()V
 HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
-HSPLandroid/icu/impl/number/parse/ScientificMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)Landroid/icu/impl/number/parse/ScientificMatcher;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->minusSignSet()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->plusSignSet()Landroid/icu/text/UnicodeSet;
@@ -9418,7 +9423,7 @@
 HSPLandroid/icu/impl/number/range/StandardPluralRanges;->setCapacity(I)V
 HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I
 HSPLandroid/icu/lang/UCharacter;->digit(I)I
-HSPLandroid/icu/lang/UCharacter;->foldCase(II)I
+HSPLandroid/icu/lang/UCharacter;->foldCase(II)I+]Landroid/icu/impl/UCaseProps;Landroid/icu/impl/UCaseProps;
 HSPLandroid/icu/lang/UCharacter;->foldCase(IZ)I
 HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
 HSPLandroid/icu/lang/UCharacter;->getType(I)I
@@ -9450,7 +9455,7 @@
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffix(BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixImpl(Landroid/icu/impl/number/MicroPropsGenerator;BLandroid/icu/impl/FormattedStringBuilder;)I
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixStatic(Landroid/icu/impl/number/MacroProps;BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
-HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;
+HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;
 HSPLandroid/icu/number/NumberFormatterImpl;->preProcess(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/number/NumberFormatterImpl;->unitIsBaseUnit(Landroid/icu/util/MeasureUnit;)Z
@@ -9750,7 +9755,7 @@
 HSPLandroid/icu/text/DecimalFormat;->setParseStrictMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)V
 HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter;
-HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
@@ -11447,7 +11452,7 @@
 HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String;
-HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathSegmentsBuilder;Landroid/net/Uri$PathSegmentsBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart;
+HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;
 HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathSegments;-><init>([Ljava/lang/String;I)V
 HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;
@@ -11493,24 +11498,24 @@
 HSPLandroid/net/Uri;->compareTo(Ljava/lang/Object;)I
 HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z
 HSPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->getBooleanQueryParameter(Ljava/lang/String;Z)Z
-HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set;
+HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;+]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set;+]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Set;Ljava/util/LinkedHashSet;
 HSPLandroid/net/Uri;->hashCode()I
 HSPLandroid/net/Uri;->isAbsolute()Z
-HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z
+HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/net/Uri;->isOpaque()Z
 HSPLandroid/net/Uri;->normalizeScheme()Landroid/net/Uri;
 HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String;
 HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V
-HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
-HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;
 HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
 HSPLandroid/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C
 HSPLandroid/net/UriCodec;->hexCharToValue(C)I
@@ -11581,7 +11586,7 @@
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/BaseBundle;)V
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/BaseBundle;Z)V
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/Parcel;I)V
-HSPLandroid/os/BaseBundle;-><init>(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/os/BaseBundle;-><init>(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/os/Bundle;
 HSPLandroid/os/BaseBundle;->clear()V
 HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z
 HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object;
@@ -11617,7 +11622,7 @@
 HSPLandroid/os/BaseBundle;->isEmptyParcel()Z
 HSPLandroid/os/BaseBundle;->isEmptyParcel(Landroid/os/Parcel;)Z
 HSPLandroid/os/BaseBundle;->isParcelled()Z
-HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;
+HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;+]Landroid/os/BaseBundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V
 HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V
@@ -11644,8 +11649,8 @@
 HSPLandroid/os/BaseBundle;->size()I
 HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/Bundle;
 HSPLandroid/os/BaseBundle;->unparcel(Z)V
-HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
-HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/function/BiFunction;Landroid/os/Parcel$LazyValue;
+HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/BatteryManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Landroid/os/IBatteryPropertiesRegistrar;)V
 HSPLandroid/os/BatteryManager;->getIntProperty(I)I
 HSPLandroid/os/BatteryManager;->getLongProperty(I)J
@@ -11717,7 +11722,7 @@
 HSPLandroid/os/BinderProxy$ProxyMap;->remove(II)V
 HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V
 HSPLandroid/os/BinderProxy;-><init>(J)V
-HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap;
+HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/os/BinderProxy;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V+]Ljava/util/List;Ljava/util/Collections$SynchronizedRandomAccessList;
 HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;
 HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V
@@ -11767,7 +11772,7 @@
 HSPLandroid/os/Bundle;->maybePrefillHasFds()V
 HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V
 HSPLandroid/os/Bundle;->putBinder(Ljava/lang/String;Landroid/os/IBinder;)V
-HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;
+HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V
 HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
 HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V
@@ -12161,12 +12166,12 @@
 HSPLandroid/os/IpcDataCache;->query(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/os/LocaleList$1;Landroid/os/LocaleList$1;
-HSPLandroid/os/LocaleList;-><init>([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/os/LocaleList;-><init>([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->computeFirstMatch(Ljava/util/Collection;Z)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->computeFirstMatchIndex(Ljava/util/Collection;Z)I
 HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z
 HSPLandroid/os/LocaleList;->findFirstMatchIndex(Ljava/util/Locale;)I
-HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList;+]Ljava/lang/Object;Ljava/util/Locale;
@@ -12244,7 +12249,7 @@
 HSPLandroid/os/MessageQueue;->finalize()V
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
-HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/MessageQueue$IdleHandler;Landroid/app/ActivityThread$PurgeIdler;,Landroid/app/ActivityThread$Idler;]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue$IdleHandler;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/os/MessageQueue;->postSyncBarrier()I
 HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I+]Landroid/os/Message;Landroid/os/Message;
 HSPLandroid/os/MessageQueue;->quit(Z)V
@@ -12268,9 +12273,9 @@
 HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V
 HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/Parcel$2;-><init>(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;
+HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;
 HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILjava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/os/Parcel$LazyValue;->writeToParcel(Landroid/os/Parcel;)V
 HSPLandroid/os/Parcel$ReadWriteHelper;->readString16(Landroid/os/Parcel;)Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12293,11 +12298,11 @@
 HSPLandroid/os/Parcel;->createIntArray()[I+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->createLongArray()[J
 HSPLandroid/os/Parcel;->createString16Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;
+HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->createStringArray()[Ljava/lang/String;
 HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList;
-HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;Landroid/view/InsetsSourceControl$1;,Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;missing_types
+HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->dataAvail()I
 HSPLandroid/os/Parcel;->dataPosition()I
 HSPLandroid/os/Parcel;->dataSize()I
@@ -12329,7 +12334,7 @@
 HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;)I
 HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;
+HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLandroid/os/Parcel;->readBinderList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->readBlob()[B
 HSPLandroid/os/Parcel;->readBoolean()Z+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12367,16 +12372,16 @@
 HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/os/Parcel;->readParcelableArrayInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
-HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types
 HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List;
 HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;
-HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle;
 HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;
 HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor;
 HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable;
-HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;
 HSPLandroid/os/Parcel;->readSize()Landroid/util/Size;
 HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;
 HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/util/SparseArray;
@@ -12396,11 +12401,11 @@
 HSPLandroid/os/Parcel;->readStrongBinder()Landroid/os/IBinder;
 HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V
-HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;megamorphic_types
 HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;
-HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;
-HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->recycle()V
 HSPLandroid/os/Parcel;->resetSqaushingState()V
 HSPLandroid/os/Parcel;->restoreAllowFds(Z)V
@@ -12410,7 +12415,7 @@
 HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V
 HSPLandroid/os/Parcel;->unmarshall([BII)V
 HSPLandroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V
-HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V
 HSPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->writeBlob([B)V
@@ -12429,19 +12434,19 @@
 HSPLandroid/os/Parcel;->writeInt(I)V
 HSPLandroid/os/Parcel;->writeIntArray([I)V
 HSPLandroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V
-HSPLandroid/os/Parcel;->writeList(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeList(Ljava/util/List;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->writeLong(J)V
 HSPLandroid/os/Parcel;->writeLongArray([J)V
 HSPLandroid/os/Parcel;->writeMap(Ljava/util/Map;)V
 HSPLandroid/os/Parcel;->writeMapInternal(Ljava/util/Map;)V
 HSPLandroid/os/Parcel;->writeNoException()V
-HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;missing_types]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable;missing_types
 HSPLandroid/os/Parcel;->writeParcelableArray([Landroid/os/Parcelable;I)V
-HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
 HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V
 HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V
-HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/os/Parcel;->writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V
 HSPLandroid/os/Parcel;->writeSparseIntArray(Landroid/util/SparseIntArray;)V
 HSPLandroid/os/Parcel;->writeString(Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12459,8 +12464,8 @@
 HSPLandroid/os/Parcel;->writeTypedArrayMap(Landroid/util/ArrayMap;I)V
 HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V
-HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;Landroid/os/Bundle;,Landroid/view/SurfaceControl$Transaction;,Landroid/app/FragmentState;,Landroid/content/Intent;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable;Landroid/app/FragmentState;,Landroid/content/Intent;,Landroid/os/Bundle;,Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -12650,7 +12655,7 @@
 HSPLandroid/os/ServiceManager;->getServiceOrThrow(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V
 HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z
-HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;]Landroid/os/IServiceManager;Landroid/os/ServiceManagerProxy;
+HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;+]Landroid/os/IServiceManager;Landroid/os/ServiceManagerProxy;]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
 HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
 HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder;
@@ -12886,7 +12891,7 @@
 HSPLandroid/os/Trace;->asyncTraceForTrackBegin(JLjava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/os/Trace;->asyncTraceForTrackEnd(JLjava/lang/String;I)V
 HSPLandroid/os/Trace;->beginAsyncSection(Ljava/lang/String;I)V
-HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V
+HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/os/Trace;->endAsyncSection(Ljava/lang/String;I)V
 HSPLandroid/os/Trace;->endSection()V
 HSPLandroid/os/Trace;->instant(JLjava/lang/String;)V
@@ -13213,7 +13218,7 @@
 HSPLandroid/provider/Settings$Config;->checkCallingOrSelfPermission(Ljava/lang/String;)I
 HSPLandroid/provider/Settings$Config;->createCompositeName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Config;->createNamespaceUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Config;->getContentResolver()Landroid/content/ContentResolver;
 HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;
 HSPLandroid/provider/Settings$Config;->getStrings(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;
@@ -13238,7 +13243,7 @@
 HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
 HSPLandroid/provider/Settings$NameValueCache$$ExternalSyntheticLambda0;-><init>(Landroid/provider/Settings$NameValueCache;)V
 HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefixStripPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/Arrays$ArrayItr;]Landroid/net/Uri;Landroid/net/Uri$StringUri;
+HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefixStripPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/content/IContentProvider;Landroid/content/ContentProvider$Transport;,Landroid/content/ContentProviderProxy;]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/Arrays$ArrayItr;,Ljava/util/HashMap$EntryIterator;]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLandroid/provider/Settings$NameValueCache;->isCallerExemptFromReadableRestriction()Z
 HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
 HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
@@ -14170,7 +14175,7 @@
 HSPLandroid/telephony/SignalStrength;->getLevel()I
 HSPLandroid/telephony/SignalStrength;->getPrimary()Landroid/telephony/CellSignalStrength;
 HSPLandroid/telephony/SignalStrength;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SubscriptionInfo;+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/telephony/SubscriptionInfo$Builder;Landroid/telephony/SubscriptionInfo$Builder;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SubscriptionInfo;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/telephony/SubscriptionInfo$Builder;Landroid/telephony/SubscriptionInfo$Builder;
 HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/telephony/SubscriptionInfo$Builder;->-$$Nest$fgetmAreUiccApplicationsEnabled(Landroid/telephony/SubscriptionInfo$Builder;)Z
 HSPLandroid/telephony/SubscriptionInfo$Builder;->-$$Nest$fgetmCardId(Landroid/telephony/SubscriptionInfo$Builder;)I
@@ -14475,7 +14480,7 @@
 HSPLandroid/telephony/data/ApnSetting;->getApnTypeBitmask()I
 HSPLandroid/telephony/data/ApnSetting;->getApnTypesStringFromBitmask(I)Ljava/lang/String;
 HSPLandroid/telephony/data/ApnSetting;->portToString(I)Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->toString()Ljava/lang/String;
+HSPLandroid/telephony/data/ApnSetting;->toString()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Landroid/util/ArrayMap;
 HSPLandroid/telephony/euicc/EuiccManager;->getIEuiccController()Lcom/android/internal/telephony/euicc/IEuiccController;
 HSPLandroid/telephony/euicc/EuiccManager;->isEnabled()Z
 HSPLandroid/telephony/ims/ImsMmTelManager;->createForSubscriptionId(I)Landroid/telephony/ims/ImsMmTelManager;
@@ -14524,7 +14529,7 @@
 HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/CharSequence;
 HSPLandroid/text/BoringLayout$Metrics;->-$$Nest$mreset(Landroid/text/BoringLayout$Metrics;)V
 HSPLandroid/text/BoringLayout$Metrics;-><init>()V
-HSPLandroid/text/BoringLayout$Metrics;->reset()V
+HSPLandroid/text/BoringLayout$Metrics;->reset()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V
@@ -14605,7 +14610,7 @@
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;I)Landroid/text/Spanned;
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;ILandroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;
 HSPLandroid/text/HtmlToSpannedConverter;-><init>(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;Lorg/ccil/cowan/tagsoup/Parser;I)V
-HSPLandroid/text/HtmlToSpannedConverter;->characters([CII)V
+HSPLandroid/text/HtmlToSpannedConverter;->characters([CII)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/HtmlToSpannedConverter;->convert()Landroid/text/Spanned;
 HSPLandroid/text/HtmlToSpannedConverter;->end(Landroid/text/Editable;Ljava/lang/Class;Ljava/lang/Object;)V
 HSPLandroid/text/HtmlToSpannedConverter;->endA(Landroid/text/Editable;)V
@@ -14614,8 +14619,8 @@
 HSPLandroid/text/HtmlToSpannedConverter;->endPrefixMapping(Ljava/lang/String;)V
 HSPLandroid/text/HtmlToSpannedConverter;->getLast(Landroid/text/Spanned;Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/text/HtmlToSpannedConverter;->handleBr(Landroid/text/Editable;)V
-HSPLandroid/text/HtmlToSpannedConverter;->handleEndTag(Ljava/lang/String;)V
-HSPLandroid/text/HtmlToSpannedConverter;->handleStartTag(Ljava/lang/String;Lorg/xml/sax/Attributes;)V
+HSPLandroid/text/HtmlToSpannedConverter;->handleEndTag(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/text/HtmlToSpannedConverter;->handleStartTag(Ljava/lang/String;Lorg/xml/sax/Attributes;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/text/HtmlToSpannedConverter;->setDocumentLocator(Lorg/xml/sax/Locator;)V
 HSPLandroid/text/HtmlToSpannedConverter;->setSpanFromMark(Landroid/text/Spannable;Ljava/lang/Object;[Ljava/lang/Object;)V
 HSPLandroid/text/HtmlToSpannedConverter;->start(Landroid/text/Editable;Ljava/lang/Object;)V
@@ -14633,7 +14638,7 @@
 HSPLandroid/text/Layout$Directions;->isRunRtl(I)Z
 HSPLandroid/text/Layout$Ellipsizer;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/Layout$Ellipsizer;->charAt(I)C
-HSPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V
+HSPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V+]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout$Ellipsizer;->length()I
 HSPLandroid/text/Layout$HorizontalMeasurementProvider;->init()V
 HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanEnd(Ljava/lang/Object;)I
@@ -14647,7 +14652,7 @@
 HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V
-HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/Spanned;Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;
 HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V
 HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V
 HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V
@@ -14663,13 +14668,13 @@
 HSPLandroid/text/Layout;->getLineBottom(I)I
 HSPLandroid/text/Layout;->getLineBottom(IZ)I
 HSPLandroid/text/Layout;->getLineEnd(I)I
-HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F
+HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/Layout;->getLineExtent(IZ)F
-HSPLandroid/text/Layout;->getLineForOffset(I)I
+HSPLandroid/text/Layout;->getLineForOffset(I)I+]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout;->getLineForVertical(I)I+]Landroid/text/Layout;Landroid/text/BoringLayout;
 HSPLandroid/text/Layout;->getLineLeft(I)F
 HSPLandroid/text/Layout;->getLineMax(I)F
-HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J
+HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J+]Landroid/graphics/Canvas;missing_types]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout;->getLineRight(I)F
 HSPLandroid/text/Layout;->getLineStartPos(III)I
 HSPLandroid/text/Layout;->getLineVisibleEnd(I)I
@@ -14701,7 +14706,7 @@
 HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V
 HSPLandroid/text/Layout;->shouldClampCursor(I)Z
 HSPLandroid/text/MeasuredParagraph;-><init>()V
-HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;[Landroid/text/style/MetricAffectingSpan;[Landroid/text/style/LineBreakConfigSpan;IILandroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V+]Landroid/text/style/MetricAffectingSpan;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/text/LineBreakConfig$Builder;Landroid/graphics/text/LineBreakConfig$Builder;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;
+HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;[Landroid/text/style/MetricAffectingSpan;[Landroid/text/style/LineBreakConfigSpan;IILandroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V+]Landroid/graphics/text/LineBreakConfig$Builder;Landroid/graphics/text/LineBreakConfig$Builder;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/style/MetricAffectingSpan;missing_types
 HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I
 HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
 HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
@@ -14898,7 +14903,7 @@
 HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;
 HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder;
 HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V
-HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;
+HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/text/StaticLayout;->getBottomPadding()I
 HSPLandroid/text/StaticLayout;->getEllipsisCount(I)I
 HSPLandroid/text/StaticLayout;->getEllipsisStart(I)I
@@ -14922,7 +14927,7 @@
 HSPLandroid/text/StaticLayout;->unpackEndHyphenEdit(I)I
 HSPLandroid/text/StaticLayout;->unpackStartHyphenEdit(I)I
 HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I
-HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z
+HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z+]Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;Landroid/text/TextDirectionHeuristics$FirstStrong;]Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII)Z
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z
@@ -14939,9 +14944,9 @@
 HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
 HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
 HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z
-HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
+HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
-HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
+HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/TextLine;->getOffsetBeforeAfter(IIIZIZ)I
 HSPLandroid/text/TextLine;->getOffsetToLeftRightOf(IZ)I
 HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
@@ -14975,9 +14980,9 @@
 HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I
-HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V
+HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V+]Landroid/text/GetChars;Landroid/text/Layout$Ellipsizer;,Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;]Ljava/lang/Object;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/TextUtils;->getEllipsisString(Landroid/text/TextUtils$TruncateAt;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I
 HSPLandroid/text/TextUtils;->getTrimmedLength(Ljava/lang/CharSequence;)I
@@ -14987,7 +14992,7 @@
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I
 HSPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z
-HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
+HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Landroid/text/SpannableStringBuilder;,Ljava/lang/String;
 HSPLandroid/text/TextUtils;->isGraphic(Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;
@@ -15201,7 +15206,7 @@
 HSPLandroid/transition/Transition$2;->onAnimationStart(Landroid/animation/Animator;)V
 HSPLandroid/transition/Transition$3;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/transition/Transition;-><init>()V
-HSPLandroid/transition/Transition;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Ljava/lang/Object;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/transition/Transition;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;megamorphic_types
 HSPLandroid/transition/Transition;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;
 HSPLandroid/transition/Transition;->addTarget(Landroid/view/View;)Landroid/transition/Transition;
 HSPLandroid/transition/Transition;->addUnmatched(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
@@ -15232,7 +15237,7 @@
 HSPLandroid/transition/Transition;->start()V
 HSPLandroid/transition/TransitionInflater;-><init>(Landroid/content/Context;)V
 HSPLandroid/transition/TransitionInflater;->createCustom(Landroid/util/AttributeSet;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
-HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater;
 HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition;
 HSPLandroid/transition/TransitionListenerAdapter;-><init>()V
@@ -15340,7 +15345,7 @@
 HSPLandroid/util/ArraySet;->addAll(Landroid/util/ArraySet;)V
 HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z
 HSPLandroid/util/ArraySet;->allocArrays(I)V
-HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V
+HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Object;Landroid/app/PendingIntent;,Lcom/android/org/conscrypt/OpenSSLRSAPublicKey;
 HSPLandroid/util/ArraySet;->binarySearch([II)I
 HSPLandroid/util/ArraySet;->clear()V
 HSPLandroid/util/ArraySet;->contains(Ljava/lang/Object;)Z
@@ -15378,11 +15383,11 @@
 HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z
 HSPLandroid/util/Base64$Encoder;-><init>(I[B)V
 HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z
-HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B
+HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/util/Base64;->decode([BI)[B
-HSPLandroid/util/Base64;->decode([BIII)[B
+HSPLandroid/util/Base64;->decode([BIII)[B+]Landroid/util/Base64$Decoder;Landroid/util/Base64$Decoder;
 HSPLandroid/util/Base64;->encode([BI)[B
-HSPLandroid/util/Base64;->encode([BIII)[B
+HSPLandroid/util/Base64;->encode([BIII)[B+]Landroid/util/Base64$Encoder;Landroid/util/Base64$Encoder;
 HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String;
 HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String;
 HSPLandroid/util/CloseGuard;-><init>()V
@@ -15535,7 +15540,7 @@
 HSPLandroid/util/LongSparseArray;->clear()V
 HSPLandroid/util/LongSparseArray;->delete(J)V
 HSPLandroid/util/LongSparseArray;->gc()V
-HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object;
+HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLandroid/util/LongSparseArray;->get(JLjava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/LongSparseArray;->indexOfKey(J)I
 HSPLandroid/util/LongSparseArray;->keyAt(I)J
@@ -15703,7 +15708,7 @@
 HSPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I
 HSPLandroid/util/SparseArray;->keyAt(I)I
 HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V
-HSPLandroid/util/SparseArray;->remove(I)V
+HSPLandroid/util/SparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/util/SparseArray;->removeAt(I)V
 HSPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object;
 HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V
@@ -15881,8 +15886,8 @@
 HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer$CallbackRecord;-><init>()V
 HSPLandroid/view/Choreographer$CallbackRecord;-><init>(Landroid/view/Choreographer$CallbackRecord-IA;)V
-HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;Landroid/view/ViewPropertyAnimator$1;,Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;,Lcom/android/internal/util/function/pooled/PooledLambdaImpl;,Landroid/view/ViewRootImpl$TraversalRunnable;
-HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;
+HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;Landroid/view/ViewPropertyAnimator$1;,Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;,Landroid/view/ViewRootImpl$TraversalRunnable;,Lcom/android/internal/util/function/pooled/PooledLambdaImpl;
+HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;
 HSPLandroid/view/Choreographer$FrameData;->-$$Nest$fgetmFrameTimeNanos(Landroid/view/Choreographer$FrameData;)J
 HSPLandroid/view/Choreographer$FrameData;-><init>()V
 HSPLandroid/view/Choreographer$FrameData;->allocateFrameTimelines(I)V
@@ -15895,7 +15900,7 @@
 HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver$VsyncEventData;)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/Choreographer$FrameTimeline;Landroid/view/Choreographer$FrameTimeline;
 HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver;J)Landroid/view/Choreographer$FrameTimeline;
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;IJ)V
-HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;
+HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer$FrameHandler;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;)V
 HSPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V
@@ -15913,8 +15918,8 @@
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;I)V
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;IJ)V
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;ILandroid/view/Choreographer-IA;)V
-HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;
-HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;
+HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;
+HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/Choreographer;->doScheduleCallback(I)V
 HSPLandroid/view/Choreographer;->doScheduleVsync()V
 HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J
@@ -15929,7 +15934,7 @@
 HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord;
 HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V
-HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;
+HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;
 HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V
 HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V
@@ -15949,7 +15954,7 @@
 HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources;
 HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;+]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper;
-HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V
+HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper;
 HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V
 HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V
 HSPLandroid/view/CrossWindowBlurListeners;-><clinit>()V
@@ -16033,7 +16038,7 @@
 HSPLandroid/view/DisplayCutout$Bounds;->getRects()[Landroid/graphics/Rect;
 HSPLandroid/view/DisplayCutout$Bounds;->isEmpty()Z
 HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;-><init>(IIIIFLjava/lang/String;IFF)V
-HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayCutout$ParcelableWrapper;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;-><init>()V
@@ -16087,12 +16092,12 @@
 HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V
 HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
 HSPLandroid/view/DisplayInfo;->getMaxBoundsMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
-HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V
+HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode;
 HSPLandroid/view/DisplayInfo;->getRefreshRate()F
 HSPLandroid/view/DisplayInfo;->hasAccess(I)Z
 HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z
-HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;
 HSPLandroid/view/DisplayInfo;->toString()Ljava/lang/String;
 HSPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/DisplayShape$1;-><init>()V
@@ -16123,7 +16128,7 @@
 HSPLandroid/view/FrameMetrics;->getMetric(I)J
 HSPLandroid/view/FrameMetricsObserver;-><init>(Landroid/view/Window;Landroid/os/Handler;Landroid/view/Window$OnFrameMetricsAvailableListener;)V
 HSPLandroid/view/FrameMetricsObserver;->getRendererObserver()Landroid/graphics/HardwareRendererObserver;
-HSPLandroid/view/FrameMetricsObserver;->onFrameMetricsAvailable(I)V
+HSPLandroid/view/FrameMetricsObserver;->onFrameMetricsAvailable(I)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;)V
 HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;Landroid/os/Handler;)V
 HSPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V
@@ -16224,7 +16229,7 @@
 HSPLandroid/view/ImeFocusController;->onPreWindowFocus(ZLandroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ImeFocusController;->onProcessImeInputStage(Ljava/lang/Object;Landroid/view/InputEvent;Landroid/view/WindowManager$LayoutParams;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;)I
 HSPLandroid/view/ImeFocusController;->onTraversal(ZLandroid/view/WindowManager$LayoutParams;)V
-HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V
+HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V+]Landroid/view/ImeFocusController$InputMethodManagerDelegate;Landroid/view/inputmethod/InputMethodManager$DelegateImpl;
 HSPLandroid/view/ImeFocusController;->onViewFocusChanged(Landroid/view/View;Z)V
 HSPLandroid/view/ImeFocusController;->onWindowDismissed()V
 HSPLandroid/view/ImeInsetsSourceConsumer;-><init>(ILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V
@@ -16268,7 +16273,7 @@
 HSPLandroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z
 HSPLandroid/view/InputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
 HSPLandroid/view/InputEventReceiver;->consumeBatchedInputEvents(J)Z
-HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/InputEventReceiver;->dispose()V
 HSPLandroid/view/InputEventReceiver;->dispose(Z)V
 HSPLandroid/view/InputEventReceiver;->finalize()V
@@ -16387,7 +16392,7 @@
 HSPLandroid/view/InsetsController;->notifyControlRevoked(Landroid/view/InsetsSourceConsumer;)V
 HSPLandroid/view/InsetsController;->notifyFinished(Landroid/view/InsetsAnimationControlRunner;Z)V
 HSPLandroid/view/InsetsController;->notifyVisibilityChanged()V
-HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/ImeInsetsSourceConsumer;,Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/InsetsController;->onFrameChanged(Landroid/graphics/Rect;)V
 HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z
 HSPLandroid/view/InsetsController;->onWindowFocusGained(Z)V
@@ -16403,13 +16408,13 @@
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/InsetsSource$1;Landroid/view/InsetsSource$1;
 HSPLandroid/view/InsetsSource;-><init>(II)V
-HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;
 HSPLandroid/view/InsetsSource;-><init>(Landroid/view/InsetsSource;)V
-HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
 HSPLandroid/view/InsetsSource;->calculateVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Insets;
 HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Ljava/lang/Object;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Ljava/lang/Object;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource;->getFlags()I
 HSPLandroid/view/InsetsSource;->getFrame()Landroid/graphics/Rect;
 HSPLandroid/view/InsetsSource;->getId()I
@@ -16470,9 +16475,9 @@
 HSPLandroid/view/InsetsState;->calculateRelativeDisplayShape(Landroid/graphics/Rect;)Landroid/view/DisplayShape;
 HSPLandroid/view/InsetsState;->calculateRelativePrivacyIndicatorBounds(Landroid/graphics/Rect;)Landroid/view/PrivacyIndicatorBounds;
 HSPLandroid/view/InsetsState;->calculateRelativeRoundedCorners(Landroid/graphics/Rect;)Landroid/view/RoundedCorners;
-HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;IIII)Landroid/graphics/Insets;
-HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->clearsCompatInsets(IIII)Z
 HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z
@@ -16484,9 +16489,9 @@
 HSPLandroid/view/InsetsState;->getRoundedCorners()Landroid/view/RoundedCorners;
 HSPLandroid/view/InsetsState;->isSourceOrDefaultVisible(II)Z
 HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource;
-HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;I)V
-HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;
+HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
 HSPLandroid/view/InsetsState;->setDisplayCutout(Landroid/view/DisplayCutout;)V
 HSPLandroid/view/InsetsState;->setDisplayFrame(Landroid/graphics/Rect;)V
 HSPLandroid/view/InsetsState;->setPrivacyIndicatorBounds(Landroid/view/PrivacyIndicatorBounds;)V
@@ -16545,28 +16550,28 @@
 HSPLandroid/view/LayoutInflater;-><init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V
 HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
+HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/content/Context;missing_types]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
-HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
 HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context;
 HSPLandroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory;
 HSPLandroid/view/LayoutInflater;->getFactory2()Landroid/view/LayoutInflater$Factory2;
 HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
-HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/View;missing_types]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V
-HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;
-HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V
+HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
+HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types
 HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V
 HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater$Factory2;missing_types]Ljava/lang/Object;Ljava/lang/String;
-HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z
+HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z+]Landroid/content/Context;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
 HSPLandroid/view/MenuInflater;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/MotionEvent$PointerCoords;-><init>()V
 HSPLandroid/view/MotionEvent$PointerProperties;-><init>()V
@@ -16969,15 +16974,15 @@
 HSPLandroid/view/View$TransformationInfo;-><init>()V
 HSPLandroid/view/View$UnsetPressedState;->run()V
 HSPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/view/View;-><init>(Landroid/content/Context;)V+]Landroid/view/View;missing_types]Ljava/lang/Object;missing_types]Landroid/content/Context;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/view/View;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V
 HSPLandroid/view/View;->addFrameMetricsListener(Landroid/view/Window;Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V
 HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V
-HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
+HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V
 HSPLandroid/view/View;->appendId(Ljava/lang/StringBuilder;)V
@@ -16988,7 +16993,7 @@
 HSPLandroid/view/View;->areDrawablesResolved()Z
 HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V
 HSPLandroid/view/View;->awakenScrollBars()Z
-HSPLandroid/view/View;->awakenScrollBars(IZ)Z
+HSPLandroid/view/View;->awakenScrollBars(IZ)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->bringToFront()V
 HSPLandroid/view/View;->buildDrawingCache(Z)V
 HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V
@@ -16996,10 +17001,10 @@
 HSPLandroid/view/View;->calculateAccessibilityDataSensitive()V
 HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z
 HSPLandroid/view/View;->canHaveDisplayList()Z
-HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z
+HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->canReceivePointerEvents()Z
-HSPLandroid/view/View;->canResolveLayoutDirection()Z
-HSPLandroid/view/View;->canResolveTextDirection()Z
+HSPLandroid/view/View;->canResolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->canResolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->canScrollHorizontally(I)Z
 HSPLandroid/view/View;->canScrollVertically(I)Z
 HSPLandroid/view/View;->canTakeFocus()Z
@@ -17008,8 +17013,8 @@
 HSPLandroid/view/View;->cancelPendingInputEvents()V
 HSPLandroid/view/View;->checkForLongClick(JFFI)V
 HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z
-HSPLandroid/view/View;->cleanupDraw()V
-HSPLandroid/view/View;->clearAccessibilityFocus()V
+HSPLandroid/view/View;->cleanupDraw()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/View;->clearAccessibilityFocus()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V
 HSPLandroid/view/View;->clearAccessibilityThrottles()V
 HSPLandroid/view/View;->clearAnimation()V
@@ -17032,15 +17037,15 @@
 HSPLandroid/view/View;->computeVerticalScrollExtent()I
 HSPLandroid/view/View;->computeVerticalScrollOffset()I
 HSPLandroid/view/View;->computeVerticalScrollRange()I
-HSPLandroid/view/View;->damageInParent()V
+HSPLandroid/view/View;->damageInParent()V+]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->destroyDrawingCache()V
 HSPLandroid/view/View;->destroyHardwareResources()V
-HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
-HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;
+HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/View;missing_types]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/view/View;->dispatchCancelPendingInputEvents()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/List;Ljava/util/Collections$EmptyList;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V
 HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V
@@ -17071,12 +17076,12 @@
 HSPLandroid/view/View;->dispatchWindowSystemUiVisiblityChanged(I)V
 HSPLandroid/view/View;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types
-HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/view/View;missing_types]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/AnimationSet;,Landroid/view/animation/RotateAnimation;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V
-HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->drawDefaultFocusHighlight(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->drawableHotspotChanged(FF)V
-HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
 HSPLandroid/view/View;->ensureTransformationInfo()V
 HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View;
@@ -17121,8 +17126,8 @@
 HSPLandroid/view/View;->getContext()Landroid/content/Context;
 HSPLandroid/view/View;->getDefaultSize(II)I
 HSPLandroid/view/View;->getDisplay()Landroid/view/Display;
-HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Ljava/lang/Object;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->getDrawableState()[I
+HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/drawable/Drawable;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
+HSPLandroid/view/View;->getDrawableState()[I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getDrawingCache(Z)Landroid/graphics/Bitmap;
 HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getDrawingTime()J
@@ -17151,7 +17156,7 @@
 HSPLandroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix;
 HSPLandroid/view/View;->getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;
 HSPLandroid/view/View;->getLayerType()I
-HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/view/View;->getLeft()I
 HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo;
@@ -17172,9 +17177,9 @@
 HSPLandroid/view/View;->getOverScrollMode()I
 HSPLandroid/view/View;->getPaddingBottom()I
 HSPLandroid/view/View;->getPaddingEnd()I
-HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;
+HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getPaddingRight()I
-HSPLandroid/view/View;->getPaddingStart()I
+HSPLandroid/view/View;->getPaddingStart()I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getPaddingTop()I
 HSPLandroid/view/View;->getParent()Landroid/view/ViewParent;
 HSPLandroid/view/View;->getPivotX()F
@@ -17198,9 +17203,9 @@
 HSPLandroid/view/View;->getScrollY()I
 HSPLandroid/view/View;->getSolidColor()I
 HSPLandroid/view/View;->getStateListAnimator()Landroid/animation/StateListAnimator;
-HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
-HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List;
 HSPLandroid/view/View;->getSystemUiVisibility()I
 HSPLandroid/view/View;->getTag()Ljava/lang/Object;
@@ -17215,7 +17220,7 @@
 HSPLandroid/view/View;->getTranslationY()F
 HSPLandroid/view/View;->getTranslationZ()F
 HSPLandroid/view/View;->getVerticalFadingEdgeLength()I
-HSPLandroid/view/View;->getVerticalScrollbarWidth()I
+HSPLandroid/view/View;->getVerticalScrollbarWidth()I+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;
 HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->getViewTranslationCallback()Landroid/view/translation/ViewTranslationCallback;
 HSPLandroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver;
@@ -17227,7 +17232,7 @@
 HSPLandroid/view/View;->getWindowSystemUiVisibility()I
 HSPLandroid/view/View;->getWindowToken()Landroid/os/IBinder;
 HSPLandroid/view/View;->getWindowVisibility()I
-HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V
+HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->getX()F
 HSPLandroid/view/View;->getY()F
 HSPLandroid/view/View;->getZ()F
@@ -17245,7 +17250,7 @@
 HSPLandroid/view/View;->hasNestedScrollingParent()Z
 HSPLandroid/view/View;->hasOnClickListeners()Z
 HSPLandroid/view/View;->hasOverlappingRendering()Z
-HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/Context;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
 HSPLandroid/view/View;->hasSize()Z
 HSPLandroid/view/View;->hasTransientState()Z
 HSPLandroid/view/View;->hasTranslationTransientState()Z
@@ -17258,7 +17263,7 @@
 HSPLandroid/view/View;->includeForAccessibility(Z)Z
 HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
 HSPLandroid/view/View;->initScrollCache()V
-HSPLandroid/view/View;->initialAwakenScrollBars()Z
+HSPLandroid/view/View;->initialAwakenScrollBars()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->initializeFadingEdgeInternal(Landroid/content/res/TypedArray;)V
 HSPLandroid/view/View;->initializeScrollIndicatorsInternal()V
 HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V
@@ -17267,13 +17272,13 @@
 HSPLandroid/view/View;->invalidate(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->invalidate(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->invalidate(Z)V+]Landroid/view/View;missing_types
-HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->invalidateOutline()V
+HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
+HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->invalidateOutline()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->invalidateParentCaches()V
 HSPLandroid/view/View;->invalidateParentIfNeeded()V
 HSPLandroid/view/View;->invalidateParentIfNeededAndWasQuickRejected()V
-HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->isAccessibilityFocused()Z
 HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z
 HSPLandroid/view/View;->isAccessibilityPane()Z
@@ -17282,7 +17287,7 @@
 HSPLandroid/view/View;->isAggregatedVisible()Z
 HSPLandroid/view/View;->isAttachedToWindow()Z
 HSPLandroid/view/View;->isAutoHandwritingEnabled()Z
-HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/View;->isAutofilled()Z
 HSPLandroid/view/View;->isClickable()Z
 HSPLandroid/view/View;->isContextClickable()Z
@@ -17300,7 +17305,7 @@
 HSPLandroid/view/View;->isHorizontalFadingEdgeEnabled()Z
 HSPLandroid/view/View;->isHorizontalScrollBarEnabled()Z
 HSPLandroid/view/View;->isImportantForAccessibility()Z
-HSPLandroid/view/View;->isImportantForAutofill()Z
+HSPLandroid/view/View;->isImportantForAutofill()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->isImportantForContentCapture()Z
 HSPLandroid/view/View;->isInEditMode()Z
 HSPLandroid/view/View;->isInLayout()Z
@@ -17321,7 +17326,7 @@
 HSPLandroid/view/View;->isPressed()Z
 HSPLandroid/view/View;->isProjectionReceiver()Z
 HSPLandroid/view/View;->isRootNamespace()Z
-HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->isSelected()Z
 HSPLandroid/view/View;->isShowingLayoutBounds()Z
 HSPLandroid/view/View;->isShown()Z
@@ -17343,24 +17348,24 @@
 HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V
 HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V
 HSPLandroid/view/View;->mapRectFromViewToWindowCoords(Landroid/graphics/RectF;Z)V
-HSPLandroid/view/View;->measure(II)V+]Landroid/view/View;missing_types]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
+HSPLandroid/view/View;->measure(II)V+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->mergeDrawableStates([I[I)[I
 HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V
 HSPLandroid/view/View;->needRtlPropertiesResolution()Z
 HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V
 HSPLandroid/view/View;->notifyAutofillManagerOnClick()V
-HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V
+HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V
 HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedByParentIfNeeded()V
-HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V
-HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V
+HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
+HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
 HSPLandroid/view/View;->offsetLeftAndRight(I)V
 HSPLandroid/view/View;->offsetTopAndBottom(I)V
 HSPLandroid/view/View;->onAnimationEnd()V
 HSPLandroid/view/View;->onAnimationStart()V
 HSPLandroid/view/View;->onApplyFrameworkOptionalFitSystemWindows(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
-HSPLandroid/view/View;->onAttachedToWindow()V
+HSPLandroid/view/View;->onAttachedToWindow()V+]Landroid/view/View;missing_types]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;
 HSPLandroid/view/View;->onCancelPendingInputEvents()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onCheckIsTextEditor()Z
 HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V
@@ -17368,7 +17373,7 @@
 HSPLandroid/view/View;->onCreateDrawableState(I)[I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
 HSPLandroid/view/View;->onDetachedFromWindow()V
-HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;
 HSPLandroid/view/View;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
@@ -17394,14 +17399,14 @@
 HSPLandroid/view/View;->onRtlPropertiesChanged(I)V
 HSPLandroid/view/View;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/view/View;->onScreenStateChanged(I)V
-HSPLandroid/view/View;->onScrollChanged(IIII)V
+HSPLandroid/view/View;->onScrollChanged(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onSetAlpha(I)Z
 HSPLandroid/view/View;->onSizeChanged(IIII)V
 HSPLandroid/view/View;->onStartTemporaryDetach()V
 HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V
-HSPLandroid/view/View;->onWindowFocusChanged(Z)V
+HSPLandroid/view/View;->onWindowFocusChanged(Z)V+]Landroid/view/View;megamorphic_types
 HSPLandroid/view/View;->onWindowSystemUiVisibilityChanged(I)V
 HSPLandroid/view/View;->onWindowVisibilityChanged(I)V
 HSPLandroid/view/View;->overScrollBy(IIIIIIIIZ)Z
@@ -17420,14 +17425,14 @@
 HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z
 HSPLandroid/view/View;->postInvalidate()V
 HSPLandroid/view/View;->postInvalidateDelayed(J)V
-HSPLandroid/view/View;->postInvalidateOnAnimation()V
+HSPLandroid/view/View;->postInvalidateOnAnimation()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V
 HSPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V
 HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V
 HSPLandroid/view/View;->postUpdate(Ljava/lang/Runnable;)V
-HSPLandroid/view/View;->rebuildOutline()V+]Landroid/view/ViewOutlineProvider;Landroid/view/ViewOutlineProvider$1;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Outline;Landroid/graphics/Outline;
+HSPLandroid/view/View;->rebuildOutline()V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/ViewOutlineProvider;missing_types
 HSPLandroid/view/View;->recomputePadding()V
-HSPLandroid/view/View;->refreshDrawableState()V
+HSPLandroid/view/View;->refreshDrawableState()V+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V
 HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z
 HSPLandroid/view/View;->removeFrameMetricsListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V
@@ -17443,30 +17448,30 @@
 HSPLandroid/view/View;->requestFocus(I)Z
 HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z
-HSPLandroid/view/View;->requestLayout()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->requestLayout()V+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/View;->requireViewById(I)Landroid/view/View;
-HSPLandroid/view/View;->resetDisplayList()V
+HSPLandroid/view/View;->resetDisplayList()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->resetPressedState()V
-HSPLandroid/view/View;->resetResolvedDrawables()V
+HSPLandroid/view/View;->resetResolvedDrawables()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetResolvedDrawablesInternal()V
 HSPLandroid/view/View;->resetResolvedLayoutDirection()V
-HSPLandroid/view/View;->resetResolvedPadding()V
+HSPLandroid/view/View;->resetResolvedPadding()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetResolvedPaddingInternal()V
 HSPLandroid/view/View;->resetResolvedTextAlignment()V
 HSPLandroid/view/View;->resetResolvedTextDirection()V
 HSPLandroid/view/View;->resetRtlProperties()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetSubtreeAccessibilityStateChanged()V
-HSPLandroid/view/View;->resolveDrawables()V
-HSPLandroid/view/View;->resolveLayoutDirection()Z
+HSPLandroid/view/View;->resolveDrawables()V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/view/View;missing_types
+HSPLandroid/view/View;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup$LayoutParams;missing_types
-HSPLandroid/view/View;->resolvePadding()V
+HSPLandroid/view/View;->resolvePadding()V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
 HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resolveSize(II)I
 HSPLandroid/view/View;->resolveSizeAndState(III)I
-HSPLandroid/view/View;->resolveTextAlignment()Z
-HSPLandroid/view/View;->resolveTextDirection()Z
+HSPLandroid/view/View;->resolveTextAlignment()Z+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V
 HSPLandroid/view/View;->retrieveExplicitStyle(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
 HSPLandroid/view/View;->rootViewRequestFocus()Z
@@ -17495,11 +17500,11 @@
 HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/view/View;->setBackgroundBounds()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/view/View;->setBackgroundColor(I)V
-HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
 HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->setBackgroundResource(I)V
 HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/view/View;->setBottom(I)V
+HSPLandroid/view/View;->setBottom(I)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->setClickable(Z)V
 HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->setClipToOutline(Z)V
@@ -17511,7 +17516,7 @@
 HSPLandroid/view/View;->setElevation(F)V
 HSPLandroid/view/View;->setEnabled(Z)V
 HSPLandroid/view/View;->setFitsSystemWindows(Z)V
-HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
 HSPLandroid/view/View;->setFocusable(I)V
 HSPLandroid/view/View;->setFocusable(Z)V
 HSPLandroid/view/View;->setFocusableInTouchMode(Z)V
@@ -17530,7 +17535,7 @@
 HSPLandroid/view/View;->setIsRootNamespace(Z)V
 HSPLandroid/view/View;->setKeepScreenOn(Z)V
 HSPLandroid/view/View;->setKeyboardNavigationCluster(Z)V
-HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V
+HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V
 HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V
 HSPLandroid/view/View;->setLayoutDirection(I)V
@@ -17559,14 +17564,14 @@
 HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V
 HSPLandroid/view/View;->setOutlineSpotShadowColor(I)V
 HSPLandroid/view/View;->setOverScrollMode(I)V
-HSPLandroid/view/View;->setPadding(IIII)V
+HSPLandroid/view/View;->setPadding(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->setPaddingRelative(IIII)V
 HSPLandroid/view/View;->setPivotX(F)V
 HSPLandroid/view/View;->setPivotY(F)V
 HSPLandroid/view/View;->setPointerIcon(Landroid/view/PointerIcon;)V
 HSPLandroid/view/View;->setPressed(Z)V
 HSPLandroid/view/View;->setRenderEffect(Landroid/graphics/RenderEffect;)V
-HSPLandroid/view/View;->setRight(I)V
+HSPLandroid/view/View;->setRight(I)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->setRotation(F)V
 HSPLandroid/view/View;->setRotationX(F)V
 HSPLandroid/view/View;->setRotationY(F)V
@@ -17602,8 +17607,8 @@
 HSPLandroid/view/View;->setWillNotDraw(Z)V
 HSPLandroid/view/View;->setX(F)V
 HSPLandroid/view/View;->setY(F)V
-HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLandroid/view/View;->sizeChange(IIII)V
+HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/view/View;->sizeChange(IIII)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/View;->skipInvalidate()Z+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
 HSPLandroid/view/View;->startNestedScroll(I)Z
@@ -17614,20 +17619,19 @@
 HSPLandroid/view/View;->unFocus(Landroid/view/View;)V
 HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V
-HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V
 HSPLandroid/view/View;->updateHandwritingArea()V
 HSPLandroid/view/View;->updateKeepClearRects()V
 HSPLandroid/view/View;->updateLocalSystemUiVisibility(II)Z
 HSPLandroid/view/View;->updatePflags3AndNotifyA11yIfChanged(IZ)V
-HSPLandroid/view/View;->updatePositionUpdateListener()V
+HSPLandroid/view/View;->updatePositionUpdateListener()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/view/View;->updatePreferKeepClearForFocus()V
 HSPLandroid/view/View;->updateSystemGestureExclusionRects()V
 HSPLandroid/view/View;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/view/View;->willNotDraw()Z
 HSPLandroid/view/ViewAnimationHostBridge;-><init>(Landroid/view/View;)V
 HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z
-HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
 HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
 HSPLandroid/view/ViewConfiguration;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -17679,7 +17683,7 @@
 HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V
 HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(II)V
-HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewGroup$MarginLayoutParams;missing_types
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;->doResolveMargins()V
@@ -17705,12 +17709,12 @@
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V
-HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z
-HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList;
 HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList;
@@ -17736,11 +17740,11 @@
 HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V
-HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/animation/LayoutAnimationController;Landroid/view/animation/LayoutAnimationController;
 HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V
 HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V
 HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V
-HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types
+HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V
@@ -17754,14 +17758,14 @@
 HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V
 HSPLandroid/view/ViewGroup;->dispatchSystemUiVisibilityChanged(I)V
 HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V
-HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
-HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Landroid/view/View;
-HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V+]Landroid/view/View;missing_types
-HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V
+HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V
 HSPLandroid/view/ViewGroup;->dispatchWindowSystemUiVisiblityChanged(I)V
 HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types
@@ -17790,7 +17794,7 @@
 HSPLandroid/view/ViewGroup;->getChildMeasureSpec(III)I
 HSPLandroid/view/ViewGroup;->getChildTransformation()Landroid/view/animation/Transformation;
 HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
-HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z
+HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewGroup;->getChildrenForAutofill(I)Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
 HSPLandroid/view/ViewGroup;->getChildrenForContentCapture()Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
 HSPLandroid/view/ViewGroup;->getClipChildren()Z
@@ -17816,8 +17820,8 @@
 HSPLandroid/view/ViewGroup;->hasUnhandledKeyListener()Z
 HSPLandroid/view/ViewGroup;->hasWindowInsetsAnimationCallback()Z
 HSPLandroid/view/ViewGroup;->indexOfChild(Landroid/view/View;)I
-HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/view/ViewGroup;missing_types]Landroid/content/Context;missing_types
+HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/content/Context;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V
 HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;
@@ -17826,7 +17830,7 @@
 HSPLandroid/view/ViewGroup;->isLayoutSuppressed()Z
 HSPLandroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z
 HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z
-HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V
+HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->layout(IIII)V
 HSPLandroid/view/ViewGroup;->makeFrameworkOptionalFitsSystemWindows()V
 HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
@@ -17871,17 +17875,17 @@
 HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V
 HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z
-HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V
+HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->resetResolvedPadding()V
-HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V
-HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V
-HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V
+HSPLandroid/view/ViewGroup;->resetResolvedPadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->resetTouchState()V
 HSPLandroid/view/ViewGroup;->resolveDrawables()V
 HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z
 HSPLandroid/view/ViewGroup;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->resolvePadding()V
+HSPLandroid/view/ViewGroup;->resolvePadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z
 HSPLandroid/view/ViewGroup;->resolveTextDirection()Z
@@ -17902,13 +17906,13 @@
 HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z
 HSPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->suppressLayout(Z)V
-HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V+]Landroid/content/Context;missing_types
 HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V
 HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z
 HSPLandroid/view/ViewGroupOverlay;->add(Landroid/view/View;)V
 HSPLandroid/view/ViewGroupOverlay;->remove(Landroid/view/View;)V
-HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/view/View;missing_types]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V
 HSPLandroid/view/ViewOutlineProvider;-><init>()V
 HSPLandroid/view/ViewOverlay$OverlayViewGroup;-><init>(Landroid/content/Context;Landroid/view/View;)V
@@ -17934,7 +17938,7 @@
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V
-HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
+HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;-><init>(IFF)V
 HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;-><init>(ILjava/util/ArrayList;)V
 HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z
@@ -17974,7 +17978,7 @@
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processMotionEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/ViewRootImpl$HighContrastTextManager;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
@@ -17990,12 +17994,12 @@
 HSPLandroid/view/ViewRootImpl$InputStage;->onDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V
 HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z+]Landroid/view/InputEvent;Landroid/view/MotionEvent;
-HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;,Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;-><init>(Landroid/view/ViewRootImpl;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
@@ -18029,7 +18033,7 @@
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/view/HandwritingInitiator;Landroid/view/HandwritingInitiator;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/HandwritingInitiator;Landroid/view/HandwritingInitiator;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewRootHandler;-><init>(Landroid/view/ViewRootImpl;)V
@@ -18041,7 +18045,6 @@
 HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V
-HSPLandroid/view/ViewRootImpl$W;->insetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl$W;->moved(II)V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;-><init>(Landroid/view/ViewRootImpl;Landroid/view/InputChannel;Landroid/os/Looper;)V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V
@@ -18050,10 +18053,9 @@
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
 HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue;
 HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V
-HSPLandroid/view/ViewRootImpl;->-$$Nest$mdispatchInsetsControlChanged(Landroid/view/ViewRootImpl;Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRootImpl;Z)V
 HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V
-HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/WindowLeaked;Landroid/view/WindowLeaked;]Ljava/util/Optional;Ljava/util/Optional;]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowLeaked;Landroid/view/WindowLeaked;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Optional;Ljava/util/Optional;
 HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V
 HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V
 HSPLandroid/view/ViewRootImpl;->addSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V
@@ -18061,17 +18063,17 @@
 HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ViewRootImpl;->applyTransactionOnDraw(Landroid/view/SurfaceControl$Transaction;)Z
 HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z
-HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;
 HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewRootImpl;->checkThread()V
 HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V
 HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->clearLowProfileModeIfNeeded(IZ)V
-HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
+HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->controlInsetsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V
-HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;
-HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V
 HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V
 HSPLandroid/view/ViewRootImpl;->destroySurface()V
@@ -18083,15 +18085,14 @@
 HSPLandroid/view/ViewRootImpl;->dispatchDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl;->dispatchDispatchSystemUiVisibilityChanged()V
 HSPLandroid/view/ViewRootImpl;->dispatchFocusEvent(ZZ)V
-HSPLandroid/view/ViewRootImpl;->dispatchInsetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V
 HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->dispatchMoved(II)V
 HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)Z
 HSPLandroid/view/ViewRootImpl;->doDie()V
 HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo;
-HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;
-HSPLandroid/view/ViewRootImpl;->draw(ZLandroid/window/SurfaceSyncGroup;Z)Z+]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;
+HSPLandroid/view/ViewRootImpl;->draw(ZLandroid/window/SurfaceSyncGroup;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;
 HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V
 HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V
@@ -18113,10 +18114,10 @@
 HSPLandroid/view/ViewRootImpl;->getBufferTransformHint()I
 HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
 HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration;
-HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;
+HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/view/ViewRootImpl;->getDisplayId()I
 HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator;
-HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
+HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController;
 HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I
 HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController;
@@ -18136,8 +18137,8 @@
 HSPLandroid/view/ViewRootImpl;->getViewBoundsSandboxingEnabled()Z
 HSPLandroid/view/ViewRootImpl;->getWindowBoundsInsetSystemBars()Landroid/graphics/Rect;
 HSPLandroid/view/ViewRootImpl;->getWindowFlags()I
-HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/graphics/Insets;Landroid/graphics/Insets;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/Insets;Landroid/graphics/Insets;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;
+HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V
 HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged()V
@@ -18165,7 +18166,7 @@
 HSPLandroid/view/ViewRootImpl;->maybeFireAccessibilityWindowStateChangedEvent()V
 HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
 HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V
-HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->mergeWithNextTransaction(Landroid/view/SurfaceControl$Transaction;J)V
 HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V
 HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -18181,10 +18182,10 @@
 HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/view/ViewRootImpl;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
 HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V
-HSPLandroid/view/ViewRootImpl;->performDraw(Landroid/window/SurfaceSyncGroup;)Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
-HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/view/ViewRootImpl;->performMeasure(II)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
-HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/content/Context;missing_types]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl;->performDraw(Landroid/window/SurfaceSyncGroup;)Z+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl;->performMeasure(II)V+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
+HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/content/Context;missing_types]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V
 HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V
 HSPLandroid/view/ViewRootImpl;->prepareSurfaces()V
@@ -18198,7 +18199,7 @@
 HSPLandroid/view/ViewRootImpl;->registerCompatOnBackInvokedCallback()V
 HSPLandroid/view/ViewRootImpl;->registerListeners()V
 HSPLandroid/view/ViewRootImpl;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V
-HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I
+HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->removeSendWindowContentChangedCallback()V
 HSPLandroid/view/ViewRootImpl;->removeSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V
 HSPLandroid/view/ViewRootImpl;->removeWindowCallbacks(Landroid/view/WindowCallbacks;)V
@@ -18211,8 +18212,8 @@
 HSPLandroid/view/ViewRootImpl;->requestLayout()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z
 HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V
-HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
+HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/ViewRootImpl;->sendBackKeyEvent(I)V
 HSPLandroid/view/ViewRootImpl;->setAccessibilityFocus(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V
@@ -18220,10 +18221,10 @@
 HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
 HSPLandroid/view/ViewRootImpl;->setBoundsLayerCrop(Landroid/view/SurfaceControl$Transaction;)V
 HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;Z)V
-HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
 HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V
 HSPLandroid/view/ViewRootImpl;->setTag()V
-HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V+]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/PendingInsetsController;Landroid/view/PendingInsetsController;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/FallbackEventHandler;Lcom/android/internal/policy/PhoneFallbackEventHandler;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/Display;Landroid/view/Display;
+HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/view/FallbackEventHandler;Lcom/android/internal/policy/PhoneFallbackEventHandler;]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/PendingInsetsController;Landroid/view/PendingInsetsController;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl;->setWindowStopped(Z)V
 HSPLandroid/view/ViewRootImpl;->shouldDispatchCutout()Z
 HSPLandroid/view/ViewRootImpl;->shouldOptimizeMeasure(Landroid/view/WindowManager$LayoutParams;)Z
@@ -18409,13 +18410,13 @@
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I
-HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect;
 HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Insets;)Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets;
-HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets;+]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;
+HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets;+]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;
 HSPLandroid/view/WindowInsets;->isConsumed()Z
 HSPLandroid/view/WindowInsets;->isRound()Z
 HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets;
@@ -18426,7 +18427,7 @@
 HSPLandroid/view/WindowInsetsAnimation;->setAlpha(F)V
 HSPLandroid/view/WindowLayout;-><clinit>()V
 HSPLandroid/view/WindowLayout;-><init>()V
-HSPLandroid/view/WindowLayout;->computeFrames(Landroid/view/WindowManager$LayoutParams;Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/graphics/Rect;IIIIFLandroid/window/ClientWindowFrames;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/WindowLayout;->computeFrames(Landroid/view/WindowManager$LayoutParams;Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/graphics/Rect;IIIIFLandroid/window/ClientWindowFrames;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
 HSPLandroid/view/WindowLayout;->computeSurfaceSize(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IILandroid/graphics/Rect;ZLandroid/graphics/Point;)V
 HSPLandroid/view/WindowLeaked;-><init>(Ljava/lang/String;)V
 HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams;
@@ -18472,7 +18473,7 @@
 HSPLandroid/view/WindowManagerGlobal;->peekWindowSession()Landroid/view/IWindowSession;
 HSPLandroid/view/WindowManagerGlobal;->removeView(Landroid/view/View;Z)V
 HSPLandroid/view/WindowManagerGlobal;->removeViewLocked(IZ)V
-HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/WindowManagerGlobal;Landroid/view/WindowManagerGlobal;
+HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowManagerGlobal;Landroid/view/WindowManagerGlobal;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/WindowManagerGlobal;->trimMemory(I)V
 HSPLandroid/view/WindowManagerGlobal;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;)V
@@ -18529,8 +18530,8 @@
 HSPLandroid/view/accessibility/AccessibilityManager;->updateUiTimeout(J)V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;-><init>()V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager;
-HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V
-HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V
+HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray;
+HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray;
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;-><init>(ILjava/lang/CharSequence;)V
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getId()I
@@ -18570,9 +18571,9 @@
 HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;I)V
 HSPLandroid/view/accessibility/WeakSparseArray;-><init>()V
-HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V
-HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V
-HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V
+HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;-><init>()V
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F
@@ -18591,7 +18592,7 @@
 HSPLandroid/view/animation/Animation$Description;-><init>()V
 HSPLandroid/view/animation/Animation$Description;->parseValue(Landroid/util/TypedValue;Landroid/content/Context;)Landroid/view/animation/Animation$Description;
 HSPLandroid/view/animation/Animation;-><init>()V
-HSPLandroid/view/animation/Animation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/animation/Animation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
 HSPLandroid/view/animation/Animation;->cancel()V
 HSPLandroid/view/animation/Animation;->detach()V
 HSPLandroid/view/animation/Animation;->dispatchAnimationEnd()V
@@ -18600,12 +18601,12 @@
 HSPLandroid/view/animation/Animation;->finalize()V
 HSPLandroid/view/animation/Animation;->getDuration()J
 HSPLandroid/view/animation/Animation;->getFillAfter()Z
-HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
+HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/animation/Animation;->getScaleFactor()F
 HSPLandroid/view/animation/Animation;->getStartOffset()J
-HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
+HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
-HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Interpolator;Landroid/view/animation/LinearInterpolator;,Landroid/view/animation/AccelerateDecelerateInterpolator;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
+HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/view/animation/Interpolator;Landroid/view/animation/AccelerateDecelerateInterpolator;,Landroid/view/animation/LinearInterpolator;
 HSPLandroid/view/animation/Animation;->hasAlpha()Z
 HSPLandroid/view/animation/Animation;->hasEnded()Z
 HSPLandroid/view/animation/Animation;->hasStarted()Z
@@ -18662,7 +18663,7 @@
 HSPLandroid/view/animation/AnimationUtils$AnimationState;-><init>(Landroid/view/animation/AnimationUtils$AnimationState-IA;)V
 HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation;
-HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;
+HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;+]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
 HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;
@@ -18702,7 +18703,7 @@
 HSPLandroid/view/animation/Transformation;->getInsets()Landroid/graphics/Insets;
 HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix;
 HSPLandroid/view/animation/Transformation;->getTransformationType()I
-HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/animation/Transformation;->setAlpha(F)V
 HSPLandroid/view/animation/Transformation;->setInsets(Landroid/graphics/Insets;)V
 HSPLandroid/view/animation/TranslateAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
@@ -18775,7 +18776,7 @@
 HSPLandroid/view/autofill/AutofillManager;->isActiveLocked()Z
 HSPLandroid/view/autofill/AutofillManager;->isDisabledByServiceLocked()Z
 HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z
-HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V
+HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;I)V
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForAugmentedAutofill(Landroid/view/View;)V
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForFillDialog(Landroid/view/View;)V
@@ -19374,17 +19375,17 @@
 HSPLandroid/widget/AbsListView$DeviceConfigChangeListener;-><init>()V
 HSPLandroid/widget/AbsListView$DeviceConfigChangeListener;-><init>(Landroid/widget/AbsListView$DeviceConfigChangeListener-IA;)V
 HSPLandroid/widget/AbsListView$PerformClick;->run()V
-HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V
+HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;]Landroid/widget/AbsListView;Landroid/widget/ListView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/AbsListView$RecycleBin;->clear()V
 HSPLandroid/widget/AbsListView$RecycleBin;->clearTransientStateViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->fillActiveViews(II)V
 HSPLandroid/widget/AbsListView$RecycleBin;->getActiveView(I)Landroid/view/View;
-HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View;
+HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View;+]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView$RecycleBin;->getTransientStateView(I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->markChildrenDirty()V
 HSPLandroid/widget/AbsListView$RecycleBin;->pruneScrapViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->removeSkippedScrap()V
-HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View;
+HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View;+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/ListAdapter;Landroid/preference/PreferenceGroupAdapter;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/AbsListView$RecycleBin;->scrapActiveViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V
 HSPLandroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z
@@ -19394,12 +19395,12 @@
 HSPLandroid/widget/AbsListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/AbsListView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/AbsListView;->clearChoices()V
-HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I
-HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I
+HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types
+HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types
 HSPLandroid/widget/AbsListView;->computeVerticalScrollRange()I
 HSPLandroid/widget/AbsListView;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/AbsListView;->dispatchSetPressed(Z)V
-HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/widget/AbsListView;missing_types]Landroid/widget/EdgeEffect;Landroid/widget/EdgeEffect;
 HSPLandroid/widget/AbsListView;->drawableStateChanged()V
 HSPLandroid/widget/AbsListView;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
@@ -19417,7 +19418,7 @@
 HSPLandroid/widget/AbsListView;->isInFilterMode()Z
 HSPLandroid/widget/AbsListView;->isVerticalScrollBarHidden()Z
 HSPLandroid/widget/AbsListView;->jumpDrawablesToCurrentState()V
-HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View;
+HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View;+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView;->onAttachedToWindow()V
 HSPLandroid/widget/AbsListView;->onCancelPendingInputEvents()V
 HSPLandroid/widget/AbsListView;->onDetachedFromWindow()V
@@ -19427,9 +19428,9 @@
 HSPLandroid/widget/AbsListView;->onRtlPropertiesChanged(I)V
 HSPLandroid/widget/AbsListView;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/widget/AbsListView;->onTouchDown(Landroid/view/MotionEvent;)V
-HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z
+HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/VelocityTracker;Landroid/view/VelocityTracker;]Landroid/widget/AbsListView;Landroid/widget/ListView;
 HSPLandroid/widget/AbsListView;->onTouchModeChanged(Z)V
-HSPLandroid/widget/AbsListView;->onTouchMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+HSPLandroid/widget/AbsListView;->onTouchMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;Landroid/widget/ListView;
 HSPLandroid/widget/AbsListView;->onTouchUp(Landroid/view/MotionEvent;)V
 HSPLandroid/widget/AbsListView;->onWindowFocusChanged(Z)V
 HSPLandroid/widget/AbsListView;->performItemClick(Landroid/view/View;IJ)Z
@@ -19444,7 +19445,7 @@
 HSPLandroid/widget/AbsListView;->setFastScrollEnabled(Z)V
 HSPLandroid/widget/AbsListView;->setFastScrollStyle(I)V
 HSPLandroid/widget/AbsListView;->setFrame(IIII)Z
-HSPLandroid/widget/AbsListView;->setItemViewLayoutParams(Landroid/view/View;I)V
+HSPLandroid/widget/AbsListView;->setItemViewLayoutParams(Landroid/view/View;I)V+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView;->setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V
 HSPLandroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
 HSPLandroid/widget/AbsListView;->setSelectionFromTop(II)V
@@ -19576,15 +19577,15 @@
 HSPLandroid/widget/EdgeEffect;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/EdgeEffect;->calculateDistanceFromGlowValues(FF)F
 HSPLandroid/widget/EdgeEffect;->dampStretchVector(F)F
-HSPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z
+HSPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/widget/EdgeEffect;->finish()V
 HSPLandroid/widget/EdgeEffect;->getCurrentEdgeEffectBehavior()I
 HSPLandroid/widget/EdgeEffect;->getDistance()F
 HSPLandroid/widget/EdgeEffect;->isAtEquilibrium()Z
 HSPLandroid/widget/EdgeEffect;->isFinished()Z
 HSPLandroid/widget/EdgeEffect;->onAbsorb(I)V
-HSPLandroid/widget/EdgeEffect;->onPull(FF)V
-HSPLandroid/widget/EdgeEffect;->onPullDistance(FF)F
+HSPLandroid/widget/EdgeEffect;->onPull(FF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/widget/EdgeEffect;->onPullDistance(FF)F+]Landroid/widget/EdgeEffect;Landroid/widget/EdgeEffect;
 HSPLandroid/widget/EdgeEffect;->onRelease()V
 HSPLandroid/widget/EdgeEffect;->setSize(II)V
 HSPLandroid/widget/EdgeEffect;->update()V
@@ -19765,12 +19766,12 @@
 HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(III)V
-HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams;
@@ -19782,9 +19783,9 @@
 HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I+]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I+]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I+]Landroid/widget/FrameLayout;missing_types
-HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types
+HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/view/View;missing_types]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V+]Landroid/widget/FrameLayout;missing_types
-HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/view/View;missing_types]Landroid/widget/FrameLayout;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V
 HSPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V
 HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z
@@ -19881,13 +19882,13 @@
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->applyAlpha()V
 HSPLandroid/widget/ImageView;->applyColorFilter()V
-HSPLandroid/widget/ImageView;->applyImageTint()V
+HSPLandroid/widget/ImageView;->applyImageTint()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/widget/ImageView;->applyXfermode()V
 HSPLandroid/widget/ImageView;->clearColorFilter()V
-HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V
 HSPLandroid/widget/ImageView;->drawableStateChanged()V
 HSPLandroid/widget/ImageView;->getAccessibilityClassName()Ljava/lang/CharSequence;
@@ -19896,18 +19897,18 @@
 HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix;
 HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType;
 HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z
-HSPLandroid/widget/ImageView;->initImageView()V
-HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/widget/ImageView;->initImageView()V+]Landroid/widget/ImageView;missing_types
+HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->isFilledByImage()Z
-HSPLandroid/widget/ImageView;->isOpaque()Z
-HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V
+HSPLandroid/widget/ImageView;->isOpaque()Z+]Landroid/graphics/drawable/Drawable;megamorphic_types
+HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->onAttachedToWindow()V
 HSPLandroid/widget/ImageView;->onCreateDrawableState(I)[I
 HSPLandroid/widget/ImageView;->onDetachedFromWindow()V
-HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->onMeasure(II)V+]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V
-HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V
+HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->resizeFromDrawable()V
 HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I
 HSPLandroid/widget/ImageView;->resolveUri()V+]Landroid/widget/ImageView;missing_types
@@ -19931,16 +19932,16 @@
 HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V
 HSPLandroid/widget/ImageView;->setSelected(Z)V
 HSPLandroid/widget/ImageView;->setVisibility(I)V
-HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
-HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z
 HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V
@@ -19962,11 +19963,11 @@
 HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View;+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z
-HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V
-HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types
+HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout;
+HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;megamorphic_types]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V+]Landroid/widget/LinearLayout;missing_types
-HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types
-HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types
+HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout;
+HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;megamorphic_types]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->onMeasure(II)V+]Landroid/widget/LinearLayout;missing_types
@@ -19996,7 +19997,7 @@
 HSPLandroid/widget/ListView;->adjustViewsUpOrDown()V
 HSPLandroid/widget/ListView;->clearRecycledState(Ljava/util/ArrayList;)V
 HSPLandroid/widget/ListView;->correctTooHigh(I)V
-HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/ListAdapter;Landroid/preference/PreferenceGroupAdapter;]Landroid/widget/ListView;Landroid/widget/ListView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/ListView;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z
 HSPLandroid/widget/ListView;->fillDown(II)Landroid/view/View;
 HSPLandroid/widget/ListView;->fillFromTop(I)Landroid/view/View;
@@ -20012,8 +20013,8 @@
 HSPLandroid/widget/ListView;->layoutChildren()V
 HSPLandroid/widget/ListView;->lookForSelectablePosition(IZ)I
 HSPLandroid/widget/ListView;->makeAndAddView(IIZIZ)Landroid/view/View;
-HSPLandroid/widget/ListView;->measureHeightOfChildren(IIIII)I
-HSPLandroid/widget/ListView;->measureScrapChild(Landroid/view/View;III)V
+HSPLandroid/widget/ListView;->measureHeightOfChildren(IIIII)I+]Landroid/view/View;Landroid/widget/CheckedTextView;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;
+HSPLandroid/widget/ListView;->measureScrapChild(Landroid/view/View;III)V+]Landroid/view/View;Landroid/widget/CheckedTextView;
 HSPLandroid/widget/ListView;->onDetachedFromWindow()V
 HSPLandroid/widget/ListView;->onFinishInflate()V
 HSPLandroid/widget/ListView;->onMeasure(II)V
@@ -20025,7 +20026,7 @@
 HSPLandroid/widget/ListView;->setCacheColorHint(I)V
 HSPLandroid/widget/ListView;->setDivider(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ListView;->setSelection(I)V
-HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V
+HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/Checkable;Landroid/widget/CheckedTextView;]Landroid/widget/ListAdapter;missing_types]Landroid/widget/ListView;missing_types
 HSPLandroid/widget/OverScroller$SplineOverScroller;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/OverScroller$SplineOverScroller;->adjustDuration(III)V
 HSPLandroid/widget/OverScroller$SplineOverScroller;->continueWhenFinished()Z
@@ -20172,8 +20173,8 @@
 HSPLandroid/widget/RelativeLayout$DependencyGraph;-><init>()V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->add(Landroid/view/View;)V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->clear()V
-HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;
-HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V
+HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmBottom(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmLeft(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmRight(Landroid/widget/RelativeLayout$LayoutParams;)I
@@ -20196,7 +20197,7 @@
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/RelativeLayout;->applyHorizontalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;I[I)V
-HSPLandroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V
+HSPLandroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->centerHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
 HSPLandroid/widget/RelativeLayout;->centerVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
 HSPLandroid/widget/RelativeLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
@@ -20208,21 +20209,21 @@
 HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/widget/RelativeLayout;->getBaseline()I
 HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I
-HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;
+HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;
 HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I
 HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
-HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
+HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/TextView;
+HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/TextView;
 HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V
-HSPLandroid/widget/RelativeLayout;->onMeasure(II)V
+HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
 HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
-HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
-HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
+HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
+HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V
 HSPLandroid/widget/RelativeLayout;->requestLayout()V
 HSPLandroid/widget/RelativeLayout;->shouldDelayChildPressedState()Z
-HSPLandroid/widget/RelativeLayout;->sortChildren()V
+HSPLandroid/widget/RelativeLayout;->sortChildren()V+]Landroid/widget/RelativeLayout$DependencyGraph;Landroid/widget/RelativeLayout$DependencyGraph;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/RemoteViews;
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/widget/RemoteViews$Action;-><init>()V
@@ -20298,8 +20299,8 @@
 HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V
 HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V
 HSPLandroid/widget/ScrollBarDrawable;-><init>()V
-HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V
+HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;
+HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I
 HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z
@@ -20307,7 +20308,7 @@
 HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z
 HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V
+HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
@@ -20421,7 +20422,7 @@
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->addSearchHighlightPaths()V
 HSPLandroid/widget/TextView;->addTextChangedListener(Landroid/text/TextWatcher;)V
 HSPLandroid/widget/TextView;->applyCompoundDrawableTint()V
@@ -20432,13 +20433,13 @@
 HSPLandroid/widget/TextView;->beginBatchEdit()V
 HSPLandroid/widget/TextView;->bringPointIntoView(I)Z
 HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z
-HSPLandroid/widget/TextView;->bringTextIntoView()Z
+HSPLandroid/widget/TextView;->bringTextIntoView()Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->canMarquee()Z
 HSPLandroid/widget/TextView;->cancelLongPress()V
 HSPLandroid/widget/TextView;->checkForRelayout()V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->checkForResize()V
 HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I
-HSPLandroid/widget/TextView;->compressText(F)Z
+HSPLandroid/widget/TextView;->compressText(F)Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;Landroid/widget/CheckedTextView;,Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->computeHorizontalScrollRange()I
 HSPLandroid/widget/TextView;->computeScroll()V
 HSPLandroid/widget/TextView;->computeVerticalScrollExtent()I
@@ -20448,7 +20449,7 @@
 HSPLandroid/widget/TextView;->didTouchFocusSelect()Z
 HSPLandroid/widget/TextView;->doKeyDown(ILandroid/view/KeyEvent;Landroid/view/KeyEvent;)I
 HSPLandroid/widget/TextView;->drawableHotspotChanged(FF)V
-HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;
+HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->endBatchEdit()V
 HSPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I
 HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V
@@ -20494,7 +20495,7 @@
 HSPLandroid/widget/TextView;->getJustificationMode()I
 HSPLandroid/widget/TextView;->getKeyListener()Landroid/text/method/KeyListener;
 HSPLandroid/widget/TextView;->getLayout()Landroid/text/Layout;
-HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment;
+HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment;+]Landroid/widget/TextView;Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->getLineAtCoordinate(F)I
 HSPLandroid/widget/TextView;->getLineAtCoordinateUnclamped(F)I
 HSPLandroid/widget/TextView;->getLineCount()I
@@ -20517,7 +20518,7 @@
 HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence;
 HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList;
 HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;
+HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale;
 HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList;
 HSPLandroid/widget/TextView;->getTextSelectHandle()Landroid/graphics/drawable/Drawable;
@@ -20531,18 +20532,18 @@
 HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod;
 HSPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface;
 HSPLandroid/widget/TextView;->getTypefaceStyle()I
-HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;
+HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->getVerticalOffset(Z)I+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/widget/TextView;->handleBackInTextActionModeIfNeeded(Landroid/view/KeyEvent;)Z
 HSPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/widget/TextView;->hasGesturePreviewHighlight()Z
-HSPLandroid/widget/TextView;->hasOverlappingRendering()Z
+HSPLandroid/widget/TextView;->hasOverlappingRendering()Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z
 HSPLandroid/widget/TextView;->hasSelection()Z
 HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V
 HSPLandroid/widget/TextView;->invalidateCursor()V
 HSPLandroid/widget/TextView;->invalidateCursorPath()V
-HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V
 HSPLandroid/widget/TextView;->isAnyPasswordInputType()Z
 HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z
@@ -20562,22 +20563,22 @@
 HSPLandroid/widget/TextView;->isTextEditable()Z
 HSPLandroid/widget/TextView;->isTextSelectable()Z
 HSPLandroid/widget/TextView;->isVisibleToAccessibility()Z
-HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V
+HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/TextView;->length()I
-HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/widget/TextView;missing_types
-HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;
-HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V
+HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types
+HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V+]Landroid/widget/TextView;missing_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V
-HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V
+HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->nullLayouts()V
 HSPLandroid/widget/TextView;->onAttachedToWindow()V
 HSPLandroid/widget/TextView;->onBeginBatchEdit()V
 HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z
 HSPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I
+HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
 HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V
-HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable;
+HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onEditorAction(I)V
 HSPLandroid/widget/TextView;->onEndBatchEdit()V
 HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V
@@ -20588,7 +20589,7 @@
 HSPLandroid/widget/TextView;->onKeyUp(ILandroid/view/KeyEvent;)Z
 HSPLandroid/widget/TextView;->onLayout(ZIIII)V
 HSPLandroid/widget/TextView;->onLocaleChanged()V
-HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
+HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onPreDraw()Z
 HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V
 HSPLandroid/widget/TextView;->onResolveDrawables(I)V
@@ -20605,7 +20606,7 @@
 HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V
 HSPLandroid/widget/TextView;->originalToTransformed(II)I
 HSPLandroid/widget/TextView;->preloadFontCache()V
-HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;
 HSPLandroid/widget/TextView;->registerForPreDraw()V
 HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V
 HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V
@@ -20625,7 +20626,7 @@
 HSPLandroid/widget/TextView;->setBreakStrategy(I)V
 HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V
 HSPLandroid/widget/TextView;->setCompoundDrawableTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
@@ -20655,7 +20656,7 @@
 HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V
 HSPLandroid/widget/TextView;->setKeyListener(Landroid/text/method/KeyListener;)V
 HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V
-HSPLandroid/widget/TextView;->setLetterSpacing(F)V
+HSPLandroid/widget/TextView;->setLetterSpacing(F)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/widget/TextView;->setLineHeight(I)V
 HSPLandroid/widget/TextView;->setLineSpacing(FF)V
 HSPLandroid/widget/TextView;->setLines(I)V
@@ -20672,7 +20673,7 @@
 HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V
 HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V
 HSPLandroid/widget/TextView;->setRawInputType(I)V
-HSPLandroid/widget/TextView;->setRawTextSize(FZ)V
+HSPLandroid/widget/TextView;->setRawTextSize(FZ)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setSelected(Z)V
 HSPLandroid/widget/TextView;->setShadowLayer(FFFI)V
@@ -20681,7 +20682,7 @@
 HSPLandroid/widget/TextView;->setText(I)V
 HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
 HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V
-HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
+HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/text/Editable$Factory;Landroid/text/Editable$Factory;]Landroid/text/InputFilter;Landroid/text/InputFilter$LengthFilter;]Landroid/text/Spannable$Factory;Landroid/text/Spannable$Factory;]Landroid/text/Spannable;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder;]Landroid/text/Spanned;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannedString;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/method/MovementMethod;Landroid/text/method/ArrowKeyMovementMethod;,Landroid/text/method/LinkMovementMethod;]Landroid/text/method/TransformationMethod;Landroid/text/method/AllCapsTransformationMethod;,Landroid/text/method/SingleLineTransformationMethod;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannedString;,Ljava/lang/String;
 HSPLandroid/widget/TextView;->setTextAppearance(I)V
 HSPLandroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V
 HSPLandroid/widget/TextView;->setTextColor(I)V
@@ -20693,14 +20694,14 @@
 HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V
 HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V
 HSPLandroid/widget/TextView;->setTransformationMethodInternal(Landroid/text/method/TransformationMethod;Z)V
-HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V
-HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V
+HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
+HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V
 HSPLandroid/widget/TextView;->setupAutoSizeText()Z
 HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z
 HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z
 HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V
-HSPLandroid/widget/TextView;->startMarquee()V
+HSPLandroid/widget/TextView;->startMarquee()V+]Landroid/widget/TextView;Landroid/widget/CheckedTextView;,Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->startStopMarquee(Z)V
 HSPLandroid/widget/TextView;->stopMarquee()V
 HSPLandroid/widget/TextView;->stopTextActionMode()V
@@ -20710,8 +20711,8 @@
 HSPLandroid/widget/TextView;->unregisterForPreDraw()V
 HSPLandroid/widget/TextView;->updateAfterEdit()V
 HSPLandroid/widget/TextView;->updateCursorVisibleInternal()V
-HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/widget/TextView;->useDynamicLayout()Z
+HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/widget/TextView;->useDynamicLayout()Z+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->validateAndSetAutoSizeTextTypeUniformConfiguration(FFF)V
 HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/TextView;->viewClicked(Landroid/view/inputmethod/InputMethodManager;)V
@@ -21077,7 +21078,7 @@
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getID()Ljava/lang/String;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getLatestDstSavingsMillis(J)Ljava/lang/Integer;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I
-HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I
+HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getRawOffset()I
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getTransitions()[J
 HSPLcom/android/i18n/timezone/ZoneInfoData;->hashCode()I
@@ -21144,7 +21145,7 @@
 HSPLcom/android/icu/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder;
 HSPLcom/android/icu/charset/NativeConverter;->U_FAILURE(I)Z
 HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V
-HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V
 HSPLcom/android/icu/charset/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V
 HSPLcom/android/icu/charset/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I
 HSPLcom/android/icu/text/CompatibleDecimalFormatFactory;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/text/DecimalFormat;
@@ -21399,7 +21400,7 @@
 HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPostExecute(Z)V
 HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPreExecute()V
 HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V
-HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;Lcom/android/wifi/x/com/android/modules/utils/HandlerExecutor;,Landroid/net/connectivity/com/android/modules/utils/HandlerExecutor;,Landroid/os/HandlerExecutor;]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda3;,Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2;]Ljava/util/function/Supplier;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1;
+HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2;,Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda3;]Ljava/util/concurrent/Executor;Landroid/net/connectivity/com/android/modules/utils/HandlerExecutor;,Landroid/os/HandlerExecutor;,Lcom/android/wifi/x/com/android/modules/utils/HandlerExecutor;]Ljava/util/function/Supplier;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1;
 HSPLcom/android/internal/listeners/ListenerExecutor;->lambda$executeSafely$0(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V
 HSPLcom/android/internal/logging/AndroidConfig;-><init>()V
 HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String;
@@ -21647,20 +21648,16 @@
 HSPLcom/android/internal/policy/DecorView;->draw(Landroid/graphics/Canvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawLegacyNavigationBarBackground(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawableChanged()V
-HSPLcom/android/internal/policy/DecorView;->enforceNonTranslucentBackground(Landroid/graphics/drawable/Drawable;Z)Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/policy/DecorView;->finishChanging()V
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Landroid/graphics/Region;)Z
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Lcom/android/internal/policy/DecorView$ColorViewState;Landroid/graphics/Region;)Z
 HSPLcom/android/internal/policy/DecorView;->getAccessibilityViewId()I
 HSPLcom/android/internal/policy/DecorView;->getBackground()Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/policy/DecorView;->getNavBarSize(III)I
-HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;
+HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources;+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->getTitleSuffix(Landroid/view/WindowManager$LayoutParams;)Ljava/lang/String;
 HSPLcom/android/internal/policy/DecorView;->getWindowInsetsController()Landroid/view/WindowInsetsController;
 HSPLcom/android/internal/policy/DecorView;->initializeElevation()V
 HSPLcom/android/internal/policy/DecorView;->isNavBarToLeftEdge(II)Z
 HSPLcom/android/internal/policy/DecorView;->isNavBarToRightEdge(II)Z
-HSPLcom/android/internal/policy/DecorView;->isResizing()Z
 HSPLcom/android/internal/policy/DecorView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->onAttachedToWindow()V
 HSPLcom/android/internal/policy/DecorView;->onCloseSystemDialogs(Ljava/lang/String;)V
@@ -21670,7 +21667,7 @@
 HSPLcom/android/internal/policy/DecorView;->onDraw(Landroid/graphics/Canvas;)V
 HSPLcom/android/internal/policy/DecorView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->onLayout(ZIIII)V+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
-HSPLcom/android/internal/policy/DecorView;->onMeasure(II)V+]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLcom/android/internal/policy/DecorView;->onMeasure(II)V+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
 HSPLcom/android/internal/policy/DecorView;->onPostDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->onResourcesLoaded(Landroid/view/LayoutInflater;I)V
 HSPLcom/android/internal/policy/DecorView;->onRootViewScrollYChanged(I)V
@@ -21679,13 +21676,12 @@
 HSPLcom/android/internal/policy/DecorView;->onWindowFocusChanged(Z)V
 HSPLcom/android/internal/policy/DecorView;->onWindowSystemUiVisibilityChanged(I)V
 HSPLcom/android/internal/policy/DecorView;->providePendingInsetsController()Landroid/view/PendingInsetsController;
-HSPLcom/android/internal/policy/DecorView;->releaseThreadedRenderer()V
 HSPLcom/android/internal/policy/DecorView;->removeBackgroundBlurDrawable()V
 HSPLcom/android/internal/policy/DecorView;->sendAccessibilityEvent(I)V
 HSPLcom/android/internal/policy/DecorView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setBackgroundFallback(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setColor(Landroid/view/View;IIZZ)V
-HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->setWindow(Lcom/android/internal/policy/PhoneWindow;)V
 HSPLcom/android/internal/policy/DecorView;->setWindowBackground(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setWindowFrame(Landroid/graphics/drawable/Drawable;)V
@@ -21694,10 +21690,10 @@
 HSPLcom/android/internal/policy/DecorView;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->updateBackgroundBlurRadius()V
 HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V
-HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V
+HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V+]Landroid/view/View;Landroid/view/View;]Landroid/view/ViewPropertyAnimator;Landroid/view/ViewPropertyAnimator;]Lcom/android/internal/policy/DecorView$ColorViewAttributes;Lcom/android/internal/policy/DecorView$ColorViewAttributes;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
 HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V
-HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController;
-HSPLcom/android/internal/policy/DecorView;->updateElevation()V+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
+HSPLcom/android/internal/policy/DecorView;->updateElevation()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->updateLogTag(Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/internal/policy/DecorView;->updateStatusGuard(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->willYouTakeTheInputQueue()Landroid/view/InputQueue$Callback;
@@ -21735,7 +21731,7 @@
 HSPLcom/android/internal/policy/PhoneWindow;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/internal/policy/PhoneWindow;->doInvalidatePanelMenu(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->generateDecor(I)Lcom/android/internal/policy/DecorView;
-HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup;+]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HSPLcom/android/internal/policy/PhoneWindow;->getCurrentFocus()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->getDecorView()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->getLayoutInflater()Landroid/view/LayoutInflater;
@@ -21982,9 +21978,9 @@
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>()V
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>(I)V
 HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V
-HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V
-HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V
-HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V
+HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/internal/util/FastXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/FastXmlSerializer;->endDocument()V
 HSPLcom/android/internal/util/FastXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
@@ -22010,7 +22006,7 @@
 HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J
-HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/Object;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;[Ljava/lang/Object;
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z
 HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
 HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
@@ -22132,7 +22128,7 @@
 HSPLcom/android/internal/util/XmlSerializerWrapper;->setFeature(Ljava/lang/String;Z)V
 HSPLcom/android/internal/util/XmlSerializerWrapper;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V
 HSPLcom/android/internal/util/XmlSerializerWrapper;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V
-HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
+HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer;
 HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z
@@ -22161,13 +22157,13 @@
 HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
+HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
 HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
 HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
+HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/internal/util/function/pooled/OmniFunction;->run()V
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/HexConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
@@ -22203,7 +22199,6 @@
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList(I)Ljava/util/List;
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->isImeTraceEnabled()Z
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V
@@ -22335,8 +22330,8 @@
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(I)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->removeAttribute(I)V
-HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V
-HSPLorg/ccil/cowan/tagsoup/Element;-><init>(Lorg/ccil/cowan/tagsoup/ElementType;Z)V
+HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V+]Lorg/ccil/cowan/tagsoup/AttributesImpl;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;
+HSPLorg/ccil/cowan/tagsoup/Element;-><init>(Lorg/ccil/cowan/tagsoup/ElementType;Z)V+]Lorg/ccil/cowan/tagsoup/ElementType;Lorg/ccil/cowan/tagsoup/ElementType;
 HSPLorg/ccil/cowan/tagsoup/Element;->atts()Lorg/ccil/cowan/tagsoup/AttributesImpl;
 HSPLorg/ccil/cowan/tagsoup/Element;->canContain(Lorg/ccil/cowan/tagsoup/Element;)Z
 HSPLorg/ccil/cowan/tagsoup/Element;->clean()V
@@ -22365,10 +22360,10 @@
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->mark()V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->resetDocumentLocator(Ljava/lang/String;Ljava/lang/String;)V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->save(ILorg/ccil/cowan/tagsoup/ScanHandler;)V
-HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V
+HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V+]Ljava/io/PushbackReader;Ljava/io/PushbackReader;]Lorg/ccil/cowan/tagsoup/ScanHandler;Lorg/ccil/cowan/tagsoup/Parser;
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->unread(Ljava/io/PushbackReader;I)V
 HSPLorg/ccil/cowan/tagsoup/Parser$1;-><init>(Lorg/ccil/cowan/tagsoup/Parser;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V
+HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLorg/ccil/cowan/tagsoup/Parser;->aname([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->aval([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->entity([CII)V
@@ -22383,16 +22378,16 @@
 HSPLorg/ccil/cowan/tagsoup/Parser;->gi([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->lookupEntity([CII)I
 HSPLorg/ccil/cowan/tagsoup/Parser;->makeName([CII)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V
+HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V+]Ljava/lang/Object;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Scanner;Lorg/ccil/cowan/tagsoup/HTMLScanner;]Lorg/ccil/cowan/tagsoup/Schema;Lorg/ccil/cowan/tagsoup/HTMLSchema;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;]Lorg/xml/sax/InputSource;Lorg/xml/sax/InputSource;
 HSPLorg/ccil/cowan/tagsoup/Parser;->pcdata([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V
+HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V+]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;
 HSPLorg/ccil/cowan/tagsoup/Parser;->prefixOf(Ljava/lang/String;)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V
+HSPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V+]Ljava/lang/String;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;
+HSPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V+]Ljava/lang/Object;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;
 HSPLorg/ccil/cowan/tagsoup/Parser;->restart(Lorg/ccil/cowan/tagsoup/Element;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setContentHandler(Lorg/xml/sax/ContentHandler;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V
+HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V+]Lorg/ccil/cowan/tagsoup/Schema;Lorg/ccil/cowan/tagsoup/HTMLSchema;
 HSPLorg/ccil/cowan/tagsoup/Parser;->stagc([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->truthValue(Z)Ljava/lang/Boolean;
 HSPLorg/ccil/cowan/tagsoup/Schema;->getElementType(Ljava/lang/String;)Lorg/ccil/cowan/tagsoup/ElementType;
@@ -22460,7 +22455,6 @@
 Landroid/accounts/IAccountManager$Stub$Proxy;
 Landroid/accounts/IAccountManager$Stub;
 Landroid/accounts/IAccountManager;
-Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
 Landroid/accounts/IAccountManagerResponse$Stub;
 Landroid/accounts/IAccountManagerResponse;
 Landroid/accounts/NetworkErrorException;
@@ -22921,7 +22915,6 @@
 Landroid/app/IStopUserCallback$Stub$Proxy;
 Landroid/app/IStopUserCallback$Stub;
 Landroid/app/IStopUserCallback;
-Landroid/app/ITaskStackListener$Stub$Proxy;
 Landroid/app/ITaskStackListener$Stub;
 Landroid/app/ITaskStackListener;
 Landroid/app/ITransientNotification$Stub$Proxy;
@@ -23600,7 +23593,6 @@
 Landroid/app/servertransaction/TopResumedActivityChangeItem;
 Landroid/app/servertransaction/TransactionExecutor;
 Landroid/app/servertransaction/TransactionExecutorHelper;
-Landroid/app/servertransaction/WindowStateResizeItem$ResizeListener;
 Landroid/app/slice/ISliceManager$Stub$Proxy;
 Landroid/app/slice/ISliceManager$Stub;
 Landroid/app/slice/ISliceManager;
@@ -24652,6 +24644,7 @@
 Landroid/graphics/LinearGradient;
 Landroid/graphics/MaskFilter;
 Landroid/graphics/Matrix$1;
+Landroid/graphics/Matrix$ExtraNatives;
 Landroid/graphics/Matrix$NoImagePreloadHolder;
 Landroid/graphics/Matrix$ScaleToFit;
 Landroid/graphics/Matrix;
@@ -24675,6 +24668,7 @@
 Landroid/graphics/PaintFlagsDrawFilter;
 Landroid/graphics/Path$Direction;
 Landroid/graphics/Path$FillType;
+Landroid/graphics/Path$NoImagePreloadHolder;
 Landroid/graphics/Path$Op;
 Landroid/graphics/Path;
 Landroid/graphics/PathDashPathEffect;
@@ -24885,6 +24879,7 @@
 Landroid/graphics/drawable/shapes/RoundRectShape;
 Landroid/graphics/drawable/shapes/Shape;
 Landroid/graphics/fonts/Font$Builder;
+Landroid/graphics/fonts/Font$NoImagePreloadHolder;
 Landroid/graphics/fonts/Font;
 Landroid/graphics/fonts/FontCustomizationParser$Result;
 Landroid/graphics/fonts/FontCustomizationParser;
@@ -27313,7 +27308,6 @@
 Landroid/internal/hidl/manager/V1_2/IServiceManager;
 Landroid/internal/hidl/safe_union/V1_0/Monostate;
 Landroid/internal/modules/utils/build/SdkLevel;
-Landroid/internal/modules/utils/build/UnboundedSdkLevel;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda0;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda10;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda11;
@@ -27371,6 +27365,7 @@
 Landroid/media/AudioGainConfig;
 Landroid/media/AudioHandle;
 Landroid/media/AudioManager$1;
+Landroid/media/AudioManager$2;
 Landroid/media/AudioManager$3;
 Landroid/media/AudioManager$4;
 Landroid/media/AudioManager$AudioPlaybackCallback;
@@ -27514,6 +27509,7 @@
 Landroid/media/IMediaRouterService$Stub;
 Landroid/media/IMediaRouterService;
 Landroid/media/INearbyMediaDevicesProvider;
+Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;
 Landroid/media/IPlaybackConfigDispatcher$Stub;
 Landroid/media/IPlaybackConfigDispatcher;
 Landroid/media/IPlayer$Stub$Proxy;
@@ -28927,9 +28923,6 @@
 Landroid/permission/PermissionManager$SplitPermissionInfo;
 Landroid/permission/PermissionManager;
 Landroid/permission/PermissionManagerInternal;
-Landroid/permission/flags/FeatureFlags;
-Landroid/permission/flags/FeatureFlagsImpl;
-Landroid/permission/flags/Flags;
 Landroid/preference/DialogPreference;
 Landroid/preference/GenericInflater$Parent;
 Landroid/preference/GenericInflater;
@@ -30373,7 +30366,6 @@
 Landroid/telephony/ims/aidl/IImsRcsController;
 Landroid/telephony/ims/aidl/IImsRcsFeature$Stub;
 Landroid/telephony/ims/aidl/IImsRcsFeature;
-Landroid/telephony/ims/aidl/IImsRegistration$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsRegistration$Stub;
 Landroid/telephony/ims/aidl/IImsRegistration;
 Landroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;
@@ -30451,7 +30443,6 @@
 Landroid/text/FontConfig$1;
 Landroid/text/FontConfig$Alias$1;
 Landroid/text/FontConfig$Alias;
-Landroid/text/FontConfig$Customization$LocaleFallback;
 Landroid/text/FontConfig$Font$1;
 Landroid/text/FontConfig$Font;
 Landroid/text/FontConfig$FontFamily$1;
@@ -30693,6 +30684,7 @@
 Landroid/timezone/TelephonyNetwork;
 Landroid/timezone/TelephonyNetworkFinder;
 Landroid/timezone/TimeZoneFinder;
+Landroid/tracing/Flags;
 Landroid/tracing/perfetto/CreateIncrementalStateArgs;
 Landroid/tracing/perfetto/CreateTlsStateArgs;
 Landroid/tracing/perfetto/DataSource;
@@ -31630,6 +31622,7 @@
 Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
 Landroid/view/WindowManagerPolicyConstants;
 Landroid/view/WindowMetrics;
+Landroid/view/WindowRelayoutResult;
 Landroid/view/WindowlessWindowLayout;
 Landroid/view/WindowlessWindowManager;
 Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;
@@ -32633,6 +32626,7 @@
 Landroid/window/BackProgressAnimator$1;
 Landroid/window/BackProgressAnimator$ProgressCallback;
 Landroid/window/BackProgressAnimator;
+Landroid/window/BackTouchTracker$TouchTrackerState;
 Landroid/window/BackTouchTracker;
 Landroid/window/ClientWindowFrames$1;
 Landroid/window/ClientWindowFrames-IA;
@@ -32667,7 +32661,6 @@
 Landroid/window/ITaskFragmentOrganizer;
 Landroid/window/ITaskFragmentOrganizerController$Stub;
 Landroid/window/ITaskFragmentOrganizerController;
-Landroid/window/ITaskOrganizer$Stub$Proxy;
 Landroid/window/ITaskOrganizer$Stub;
 Landroid/window/ITaskOrganizer;
 Landroid/window/ITaskOrganizerController$Stub$Proxy;
@@ -32866,6 +32859,7 @@
 Lcom/android/framework/protobuf/nano/InvalidProtocolBufferNanoException;
 Lcom/android/framework/protobuf/nano/MessageNano;
 Lcom/android/framework/protobuf/nano/WireFormatNano;
+Lcom/android/graphics/flags/Flags;
 Lcom/android/graphics/hwui/flags/FeatureFlags;
 Lcom/android/graphics/hwui/flags/FeatureFlagsImpl;
 Lcom/android/graphics/hwui/flags/Flags;
@@ -33512,6 +33506,7 @@
 Lcom/android/internal/colorextraction/types/Tonal$TonalPalette;
 Lcom/android/internal/colorextraction/types/Tonal;
 Lcom/android/internal/compat/AndroidBuildClassifier;
+Lcom/android/internal/compat/ChangeReporter$$ExternalSyntheticLambda0;
 Lcom/android/internal/compat/ChangeReporter$ChangeReport;
 Lcom/android/internal/compat/ChangeReporter;
 Lcom/android/internal/compat/CompatibilityChangeConfig$1;
@@ -33546,7 +33541,6 @@
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda3;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda4;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda5;
-Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda6;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda7;
 Lcom/android/internal/content/om/OverlayConfig$Configuration;
 Lcom/android/internal/content/om/OverlayConfig$IdmapInvocation;
@@ -33555,7 +33549,6 @@
 Lcom/android/internal/content/om/OverlayConfigParser$OverlayPartition;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsedConfigFile;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsedConfiguration;
-Lcom/android/internal/content/om/OverlayConfigParser$ParsingContext-IA;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsingContext;
 Lcom/android/internal/content/om/OverlayConfigParser;
 Lcom/android/internal/content/om/OverlayManagerImpl;
@@ -33599,6 +33592,9 @@
 Lcom/android/internal/graphics/drawable/BackgroundBlurDrawable-IA;
 Lcom/android/internal/graphics/drawable/BackgroundBlurDrawable;
 Lcom/android/internal/hidden_from_bootclasspath/android/app/job/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/Flags;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlags;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/Flags;
@@ -33900,7 +33896,6 @@
 Lcom/android/internal/pm/pkg/component/flags/Flags;
 Lcom/android/internal/pm/pkg/parsing/ParsingPackageUtils$Callback;
 Lcom/android/internal/policy/AttributeCache;
-Lcom/android/internal/policy/BackdropFrameRenderer;
 Lcom/android/internal/policy/DecorContext;
 Lcom/android/internal/policy/DecorView$$ExternalSyntheticLambda0;
 Lcom/android/internal/policy/DecorView$$ExternalSyntheticLambda1;
@@ -34205,7 +34200,6 @@
 Lcom/android/internal/telephony/ISub$Stub$Proxy;
 Lcom/android/internal/telephony/ISub$Stub;
 Lcom/android/internal/telephony/ISub;
-Lcom/android/internal/telephony/ITelephony$Stub$Proxy;
 Lcom/android/internal/telephony/ITelephony$Stub;
 Lcom/android/internal/telephony/ITelephony;
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;
@@ -36916,6 +36910,7 @@
 [Landroid/widget/SpellChecker$SpellParser;
 [Landroid/widget/TextView$BufferType;
 [Landroid/widget/TextView$ChangeWatcher;
+[Landroid/window/BackTouchTracker$TouchTrackerState;
 [Landroid/window/TransitionFilter$Requirement;
 [Lcom/android/framework/protobuf/GeneratedMessageLite$MethodToInvoke;
 [Lcom/android/framework/protobuf/MessageInfoFactory;
diff --git a/boot/preloaded-classes b/boot/preloaded-classes
index c8defe9..40318ed 100644
--- a/boot/preloaded-classes
+++ b/boot/preloaded-classes
@@ -395,6 +395,7 @@
 android.app.BackgroundServiceStartNotAllowedException$1
 android.app.BackgroundServiceStartNotAllowedException
 android.app.BroadcastOptions
+android.app.CameraCompatTaskInfo
 android.app.ClientTransactionHandler
 android.app.ComponentCaller
 android.app.ComponentOptions
@@ -737,7 +738,6 @@
 android.app.SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0
 android.app.SharedPreferencesImpl$EditorImpl$1
 android.app.SharedPreferencesImpl$EditorImpl$2
-android.app.SharedPreferencesImpl$EditorImpl
 android.app.SharedPreferencesImpl$MemoryCommitResult-IA
 android.app.SharedPreferencesImpl$MemoryCommitResult
 android.app.SharedPreferencesImpl$SharedPreferencesThreadFactory
@@ -1216,7 +1216,6 @@
 android.app.servertransaction.TopResumedActivityChangeItem
 android.app.servertransaction.TransactionExecutor
 android.app.servertransaction.TransactionExecutorHelper
-android.app.servertransaction.WindowStateResizeItem$ResizeListener
 android.app.slice.ISliceManager$Stub$Proxy
 android.app.slice.ISliceManager$Stub
 android.app.slice.ISliceManager
@@ -1988,7 +1987,6 @@
 android.content.res.ResourceTimer$Timer
 android.content.res.ResourceTimer
 android.content.res.Resources$$ExternalSyntheticLambda0
-android.content.res.Resources$$ExternalSyntheticLambda1
 android.content.res.Resources$AssetManagerUpdateHandler
 android.content.res.Resources$NotFoundException
 android.content.res.Resources$Theme-IA
@@ -2196,10 +2194,7 @@
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9
 android.graphics.ColorSpace$Rgb$NoImagePreloadHolder
 android.graphics.ColorSpace$Rgb$TransferParameters
 android.graphics.ColorSpace$Rgb-IA
@@ -2959,6 +2954,7 @@
 android.hardware.hdmi.HdmiRecordSources$RecordSource
 android.hardware.input.HostUsiVersion$1
 android.hardware.input.HostUsiVersion
+android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
 android.hardware.input.IInputDevicesChangedListener$Stub
 android.hardware.input.IInputDevicesChangedListener
 android.hardware.input.IInputManager$Stub$Proxy
@@ -2975,6 +2971,7 @@
 android.hardware.input.InputManager
 android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate
 android.hardware.input.InputManagerGlobal$InputDevicesChangedListener-IA
+android.hardware.input.InputManagerGlobal$InputDevicesChangedListener
 android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate
 android.hardware.input.InputManagerGlobal
 android.hardware.input.InputSettings
@@ -3733,6 +3730,7 @@
 android.icu.impl.UCharacterProperty$26
 android.icu.impl.UCharacterProperty$27
 android.icu.impl.UCharacterProperty$28
+android.icu.impl.UCharacterProperty$29
 android.icu.impl.UCharacterProperty$2
 android.icu.impl.UCharacterProperty$3
 android.icu.impl.UCharacterProperty$4
@@ -3941,6 +3939,9 @@
 android.icu.impl.locale.LSR$CachedDecoder
 android.icu.impl.locale.LSR
 android.icu.impl.locale.LanguageTag
+android.icu.impl.locale.LikelySubtags$1
+android.icu.impl.locale.LikelySubtags$Data
+android.icu.impl.locale.LikelySubtags
 android.icu.impl.locale.LocaleDistance$Data
 android.icu.impl.locale.LocaleDistance
 android.icu.impl.locale.LocaleExtensions
@@ -4101,6 +4102,7 @@
 android.icu.lang.UCharacter$EastAsianWidth
 android.icu.lang.UCharacter$GraphemeClusterBreak
 android.icu.lang.UCharacter$HangulSyllableType
+android.icu.lang.UCharacter$IdentifierType
 android.icu.lang.UCharacter$IndicPositionalCategory
 android.icu.lang.UCharacter$IndicSyllabicCategory
 android.icu.lang.UCharacter$JoiningGroup
@@ -4693,6 +4695,7 @@
 android.icu.text.UnicodeSet$EntryRangeIterator
 android.icu.text.UnicodeSet$Filter
 android.icu.text.UnicodeSet$GeneralCategoryMaskFilter
+android.icu.text.UnicodeSet$IdentifierTypeFilter
 android.icu.text.UnicodeSet$IntPropertyFilter
 android.icu.text.UnicodeSet$NumericValueFilter
 android.icu.text.UnicodeSet$ScriptExtensionsFilter
@@ -4799,7 +4802,12 @@
 android.icu.util.IllformedLocaleException
 android.icu.util.IndianCalendar
 android.icu.util.InitialTimeZoneRule
+android.icu.util.IslamicCalendar$Algorithm
 android.icu.util.IslamicCalendar$CalculationType
+android.icu.util.IslamicCalendar$CivilAlgorithm
+android.icu.util.IslamicCalendar$IslamicAlgorithm
+android.icu.util.IslamicCalendar$TBLAAlgorithm
+android.icu.util.IslamicCalendar$UmalquraAlgorithm
 android.icu.util.IslamicCalendar
 android.icu.util.JapaneseCalendar
 android.icu.util.LocaleData$MeasurementSystem
@@ -5146,6 +5154,8 @@
 android.media.ImageWriter$WriterSurfaceImage
 android.media.ImageWriter
 android.media.JetPlayer
+android.media.MediaCodec$$ExternalSyntheticLambda6
+android.media.MediaCodec$$ExternalSyntheticLambda7
 android.media.MediaCodec$BufferInfo
 android.media.MediaCodec$BufferMap$CodecBuffer-IA
 android.media.MediaCodec$BufferMap$CodecBuffer
@@ -6007,6 +6017,7 @@
 android.os.Handler$MessengerImpl-IA
 android.os.Handler$MessengerImpl
 android.os.Handler
+android.os.HandlerExecutor
 android.os.HandlerThread
 android.os.HardwarePropertiesManager
 android.os.HidlMemory
@@ -6511,9 +6522,6 @@
 android.permission.PermissionManager$SplitPermissionInfo-IA
 android.permission.PermissionManager$SplitPermissionInfo
 android.permission.PermissionManagerInternal
-android.permission.flags.FeatureFlags
-android.permission.flags.FeatureFlagsImpl
-android.permission.flags.Flags
 android.preference.DialogPreference
 android.preference.GenericInflater$Parent
 android.preference.GenericInflater
@@ -7641,6 +7649,7 @@
 android.telephony.TelephonyCallback$CallForwardingIndicatorListener
 android.telephony.TelephonyCallback$CallStateListener
 android.telephony.TelephonyCallback$CarrierNetworkListener
+android.telephony.TelephonyCallback$CarrierRoamingNtnModeListener
 android.telephony.TelephonyCallback$CellInfoListener
 android.telephony.TelephonyCallback$CellLocationListener
 android.telephony.TelephonyCallback$DataActivationStateListener
@@ -7718,7 +7727,6 @@
 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1
 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2
 android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0
-android.telephony.TelephonyRegistryManager$1
 android.telephony.TelephonyRegistryManager$2
 android.telephony.TelephonyRegistryManager$3
 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0
@@ -8388,7 +8396,6 @@
 android.util.FloatProperty
 android.util.Half
 android.util.IconDrawableFactory
-android.util.IndentingPrintWriter
 android.util.IntArray
 android.util.IntProperty
 android.util.JsonReader$1
@@ -8646,7 +8653,6 @@
 android.view.IDisplayFoldListener$Stub$Proxy
 android.view.IDisplayFoldListener$Stub
 android.view.IDisplayFoldListener
-android.view.IDisplayWindowInsetsController$Stub$Proxy
 android.view.IDisplayWindowInsetsController$Stub
 android.view.IDisplayWindowInsetsController
 android.view.IDisplayWindowListener$Stub$Proxy
@@ -9197,7 +9203,6 @@
 android.view.WindowManagerGlobal$TrustedPresentationListener-IA
 android.view.WindowManagerGlobal$TrustedPresentationListener
 android.view.WindowManagerGlobal
-android.view.WindowManagerImpl
 android.view.WindowManagerPolicyConstants$PointerEventListener
 android.view.WindowManagerPolicyConstants
 android.view.WindowMetrics
@@ -9213,6 +9218,7 @@
 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1
 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3
 android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0
+android.view.accessibility.AccessibilityManager$1
 android.view.accessibility.AccessibilityManager$AccessibilityPolicy
 android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
 android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
@@ -9256,6 +9262,7 @@
 android.view.accessibility.IAccessibilityManager$Stub$Proxy
 android.view.accessibility.IAccessibilityManager$Stub
 android.view.accessibility.IAccessibilityManager
+android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
 android.view.accessibility.IAccessibilityManagerClient$Stub
 android.view.accessibility.IAccessibilityManagerClient
 android.view.accessibility.WeakSparseArray$WeakReferenceWithId
@@ -9439,7 +9446,6 @@
 android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda8
 android.view.inputmethod.IInputMethodSessionInvoker
 android.view.inputmethod.ImeTracker$1$$ExternalSyntheticLambda0
-android.view.inputmethod.ImeTracker$1
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda0
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda1
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda2
@@ -10200,6 +10206,7 @@
 android.window.BackProgressAnimator$1
 android.window.BackProgressAnimator$ProgressCallback
 android.window.BackProgressAnimator
+android.window.BackTouchTracker
 android.window.ClientWindowFrames$1
 android.window.ClientWindowFrames-IA
 android.window.ClientWindowFrames
@@ -10640,7 +10647,6 @@
 com.android.ims.ImsMultiEndpoint
 com.android.ims.ImsServiceClass
 com.android.ims.ImsUt$IImsUtListenerProxy
-com.android.ims.ImsUt
 com.android.ims.ImsUtInterface
 com.android.ims.MmTelFeatureConnection$BinderAccessState
 com.android.ims.MmTelFeatureConnection$CapabilityCallbackManager
@@ -11074,6 +11080,7 @@
 com.android.internal.colorextraction.types.Tonal$TonalPalette
 com.android.internal.colorextraction.types.Tonal
 com.android.internal.compat.AndroidBuildClassifier
+com.android.internal.compat.ChangeReporter$$ExternalSyntheticLambda0
 com.android.internal.compat.ChangeReporter$ChangeReport
 com.android.internal.compat.ChangeReporter
 com.android.internal.compat.CompatibilityChangeConfig$1
@@ -11339,6 +11346,9 @@
 com.android.internal.os.CachedDeviceState
 com.android.internal.os.ClassLoaderFactory
 com.android.internal.os.Clock
+com.android.internal.os.FeatureFlags
+com.android.internal.os.FeatureFlagsImpl
+com.android.internal.os.Flags
 com.android.internal.os.FuseAppLoop$1
 com.android.internal.os.FuseAppLoop
 com.android.internal.os.FuseUnavailableMountException
@@ -11450,7 +11460,6 @@
 com.android.internal.pm.pkg.component.flags.Flags
 com.android.internal.pm.pkg.parsing.ParsingPackageUtils$Callback
 com.android.internal.policy.AttributeCache
-com.android.internal.policy.BackdropFrameRenderer
 com.android.internal.policy.DecorContext
 com.android.internal.policy.DecorView$$ExternalSyntheticLambda0
 com.android.internal.policy.DecorView$$ExternalSyntheticLambda1
@@ -11919,7 +11928,6 @@
 com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9
 com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper
 com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper
-com.android.internal.telephony.PhoneSubInfoController
 com.android.internal.telephony.ProxyController$1
 com.android.internal.telephony.ProxyController
 com.android.internal.telephony.RIL$RadioProxyDeathRecipient
@@ -12312,7 +12320,6 @@
 com.android.internal.telephony.euicc.EuiccController$DownloadSubscriptionGetMetadataCommandCallback
 com.android.internal.telephony.euicc.EuiccController$GetDefaultListCommandCallback
 com.android.internal.telephony.euicc.EuiccController$GetMetadataCommandCallback
-com.android.internal.telephony.euicc.EuiccController
 com.android.internal.telephony.euicc.EuiccOperation$1
 com.android.internal.telephony.euicc.EuiccOperation$Action
 com.android.internal.telephony.euicc.EuiccOperation
@@ -12474,7 +12481,6 @@
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda2
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda3
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$10
-com.android.internal.telephony.imsphone.ImsPhoneCallTracker$11
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$12
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$1
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$2
@@ -14202,6 +14208,7 @@
 [Landroid.icu.impl.units.MeasureUnitImpl$InitialCompoundPart;
 [Landroid.icu.impl.units.MeasureUnitImpl$PowerPart;
 [Landroid.icu.impl.units.MeasureUnitImpl$UnitsParser$Token$Type;
+[Landroid.icu.lang.UCharacter$IdentifierType;
 [Landroid.icu.lang.UCharacter$UnicodeBlock;
 [Landroid.icu.lang.UScript$ScriptUsage;
 [Landroid.icu.lang.UScriptRun$ParenStackEntry;
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 5adcd93..7eb9d0f 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -1335,7 +1335,8 @@
                 if (path.string() == animation.parts[j].path.c_str()) {
                     uint16_t method;
                     // supports only stored png files
-                    if (zip->getEntryInfo(entry, &method, nullptr, nullptr, nullptr, nullptr, nullptr)) {
+                    if (zip->getEntryInfo(entry, &method, nullptr, nullptr, nullptr, nullptr,
+                            nullptr, nullptr)) {
                         if (method == ZipFileRO::kCompressStored) {
                             FileMap* map = zip->createEntryFileMap(entry);
                             if (map) {
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt
index af52d9b..c830a7b 100644
--- a/config/boot-image-profile.txt
+++ b/config/boot-image-profile.txt
@@ -128,10 +128,10 @@
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
 HSPLandroid/animation/AnimationHandler;-><init>()V
-HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
+HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Landroid/animation/AnimationHandler$MyFrameCallbackProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V
 HSPLandroid/animation/AnimationHandler;->cleanUpList()V
-HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Lcom/android/internal/dynamicanimation/animation/SpringAnimation;,Landroid/animation/AnimatorSet;,Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Landroid/animation/AnimatorSet;,Landroid/animation/ValueAnimator;,Lcom/android/internal/dynamicanimation/animation/SpringAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimationHandler;->getAnimationCount()I
 HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler;
 HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
@@ -162,12 +162,12 @@
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator;
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object;
 HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
-HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types
+HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
 HSPLandroid/animation/Animator;-><init>()V
-HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V
+HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V
 HSPLandroid/animation/Animator;->appendChangingConfigurations(I)V
-HSPLandroid/animation/Animator;->callOnList(Ljava/util/ArrayList;Landroid/animation/Animator$AnimatorCaller;Ljava/lang/Object;Z)V+]Landroid/animation/Animator$AnimatorCaller;Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda2;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda1;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda0;,Landroid/animation/Animator$AnimatorCaller$$ExternalSyntheticLambda6;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLandroid/animation/Animator;->callOnList(Ljava/util/ArrayList;Landroid/animation/Animator$AnimatorCaller;Ljava/lang/Object;Z)V+]Landroid/animation/Animator$AnimatorCaller;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/Animator;->getBackgroundPauseDelay()J
@@ -176,7 +176,7 @@
 HSPLandroid/animation/Animator;->getStartAndEndTimes(Landroid/util/LongArray;J)V
 HSPLandroid/animation/Animator;->notifyEndListeners(Z)V
 HSPLandroid/animation/Animator;->notifyListeners(Landroid/animation/Animator$AnimatorCaller;Z)V
-HSPLandroid/animation/Animator;->notifyStartListeners(Z)V
+HSPLandroid/animation/Animator;->notifyStartListeners(Z)V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/Animator;->pause()V
 HSPLandroid/animation/Animator;->removeAllListeners()V
 HSPLandroid/animation/Animator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V
@@ -218,18 +218,18 @@
 HSPLandroid/animation/AnimatorSet$Node;->addParent(Landroid/animation/AnimatorSet$Node;)V
 HSPLandroid/animation/AnimatorSet$Node;->addParents(Ljava/util/ArrayList;)V
 HSPLandroid/animation/AnimatorSet$Node;->addSibling(Landroid/animation/AnimatorSet$Node;)V
-HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node;
+HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/AnimatorSet$SeekState;-><init>(Landroid/animation/AnimatorSet;)V
 HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J
 HSPLandroid/animation/AnimatorSet$SeekState;->isActive()Z
 HSPLandroid/animation/AnimatorSet$SeekState;->reset()V
-HSPLandroid/animation/AnimatorSet;-><init>()V
+HSPLandroid/animation/AnimatorSet;-><init>()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->addAnimationCallback(J)V
 HSPLandroid/animation/AnimatorSet;->addAnimationEndListener()V
 HSPLandroid/animation/AnimatorSet;->cancel()V
 HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator;
-HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V
+HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;]Landroid/animation/AnimatorSet$AnimationEvent;Landroid/animation/AnimatorSet$AnimationEvent;]Landroid/animation/AnimatorSet$Node;Landroid/animation/AnimatorSet$Node;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z+]Landroid/animation/AnimatorSet$SeekState;Landroid/animation/AnimatorSet$SeekState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->end()V
 HSPLandroid/animation/AnimatorSet;->endAnimation()V
@@ -265,7 +265,7 @@
 HSPLandroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V
 HSPLandroid/animation/AnimatorSet;->shouldPlayTogether()Z
 HSPLandroid/animation/AnimatorSet;->skipToEndValue(Z)V
-HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V
+HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/AnimatorSet;->start()V
 HSPLandroid/animation/AnimatorSet;->start(ZZ)V
 HSPLandroid/animation/AnimatorSet;->startAnimation()V
@@ -278,25 +278,25 @@
 HSPLandroid/animation/FloatKeyframeSet;-><init>([Landroid/animation/Keyframe$FloatKeyframe;)V
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet;
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes;
-HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object;
 HSPLandroid/animation/IntKeyframeSet;-><init>([Landroid/animation/Keyframe$IntKeyframe;)V
-HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet;
+HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet;+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/Keyframes;
-HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I
+HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I+]Landroid/animation/Keyframe$IntKeyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(F)V
 HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(FF)V
-HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe;+]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->getFloatValue()F
 HSPLandroid/animation/Keyframe$FloatKeyframe;->getValue()Ljava/lang/Object;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->setValue(Ljava/lang/Object;)V
 HSPLandroid/animation/Keyframe$IntKeyframe;-><init>(FI)V
-HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe;
+HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe;+]Landroid/animation/Keyframe$IntKeyframe;Landroid/animation/Keyframe$IntKeyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->getIntValue()I
 HSPLandroid/animation/Keyframe$IntKeyframe;->getValue()Ljava/lang/Object;
-HSPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V
+HSPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/Integer;
 HSPLandroid/animation/Keyframe$ObjectKeyframe;-><init>(FLjava/lang/Object;)V
 HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe$ObjectKeyframe;
 HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe;
@@ -312,17 +312,17 @@
 HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V
 HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z
-HSPLandroid/animation/KeyframeSet;-><init>([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;
+HSPLandroid/animation/KeyframeSet;-><init>([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$ObjectKeyframe;
 HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List;
-HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;
+HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;
 HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->setEvaluator(Landroid/animation/TypeEvaluator;)V
 HSPLandroid/animation/LayoutTransition$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V
+HSPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V+]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/lang/Object;Ljava/lang/Integer;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLandroid/animation/LayoutTransition$3;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/animation/LayoutTransition$3;->onAnimationStart(Landroid/animation/Animator;)V
 HSPLandroid/animation/LayoutTransition$4;->onAnimationEnd(Landroid/animation/Animator;)V
@@ -350,20 +350,20 @@
 HSPLandroid/animation/LayoutTransition;->setDuration(J)V
 HSPLandroid/animation/LayoutTransition;->setInterpolator(ILandroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/LayoutTransition;->setStartDelay(IJ)V
-HSPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V
+HSPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V+]Landroid/animation/Animator;Landroid/animation/ObjectAnimator;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/view/View;missing_types]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/LayoutTransition;->showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V
 HSPLandroid/animation/LayoutTransition;->startChangingAnimations()V
 HSPLandroid/animation/ObjectAnimator;-><init>()V
 HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Landroid/util/Property;)V
 HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Ljava/lang/String;)V
-HSPLandroid/animation/ObjectAnimator;->animateValue(F)V
+HSPLandroid/animation/ObjectAnimator;->animateValue(F)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator;
-HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String;
-HSPLandroid/animation/ObjectAnimator;->getPropertyName()Ljava/lang/String;
-HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object;
+HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String;+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/animation/ObjectAnimator;->getPropertyName()Ljava/lang/String;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/animation/ObjectAnimator;->hasSameTargetAndProperties(Landroid/animation/Animator;)Z
-HSPLandroid/animation/ObjectAnimator;->initAnimation()V
+HSPLandroid/animation/ObjectAnimator;->initAnimation()V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/ObjectAnimator;->isInitialized()Z
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;
@@ -381,7 +381,7 @@
 HSPLandroid/animation/ObjectAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ObjectAnimator;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/ObjectAnimator;->setPropertyName(Ljava/lang/String;)V
-HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V
+HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->setupEndValues()V
 HSPLandroid/animation/ObjectAnimator;->setupStartValues()V
 HSPLandroid/animation/ObjectAnimator;->shouldAutoCancel(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z
@@ -402,32 +402,32 @@
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
-HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V+]Landroid/util/FloatProperty;Landroid/view/View$12;,Landroid/view/View$13;]Landroid/util/Property;missing_types
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setFloatValues([F)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[I)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->calculateValue(F)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
-HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
+HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;+]Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValues([I)V
-HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
+HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/PropertyValuesHolder$PropertyValues;-><init>()V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;)V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/PropertyValuesHolder-IA;)V
 HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V
-HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
+HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;+]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;,Landroid/animation/IntKeyframeSet;,Landroid/animation/KeyframeSet;
 HSPLandroid/animation/PropertyValuesHolder;->convertBack(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
 HSPLandroid/animation/PropertyValuesHolder;->getMethodName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/animation/PropertyValuesHolder;->getPropertyFunction(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLandroid/animation/PropertyValuesHolder;->getPropertyName()Ljava/lang/String;
-HSPLandroid/animation/PropertyValuesHolder;->getPropertyValues(Landroid/animation/PropertyValuesHolder$PropertyValues;)V
+HSPLandroid/animation/PropertyValuesHolder;->getPropertyValues(Landroid/animation/PropertyValuesHolder$PropertyValues;)V+]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/PropertyValuesHolder;->getValueType()Ljava/lang/Class;
-HSPLandroid/animation/PropertyValuesHolder;->init()V
+HSPLandroid/animation/PropertyValuesHolder;->init()V+]Landroid/animation/Keyframes;Landroid/animation/KeyframeSet;
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;
@@ -440,12 +440,12 @@
 HSPLandroid/animation/PropertyValuesHolder;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder;->setPropertyName(Ljava/lang/String;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V+]Landroid/animation/Keyframes;Landroid/animation/IntKeyframeSet;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
 HSPLandroid/animation/PropertyValuesHolder;->setupGetter(Ljava/lang/Class;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V
+HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$FloatKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$ObjectKeyframe;]Landroid/animation/Keyframes;Landroid/animation/FloatKeyframeSet;,Landroid/animation/IntKeyframeSet;,Landroid/animation/KeyframeSet;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;]Ljava/lang/Object;missing_types]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
+HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V+]Landroid/animation/Keyframes;Landroid/animation/IntKeyframeSet;]Ljava/util/List;Ljava/util/Arrays$ArrayList;
+HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$IntKeyframe;]Ljava/lang/Object;missing_types]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;
 HSPLandroid/animation/StateListAnimator$1;-><init>(Landroid/animation/StateListAnimator;)V
 HSPLandroid/animation/StateListAnimator$1;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;-><init>(Landroid/animation/StateListAnimator;)V
@@ -453,10 +453,10 @@
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Ljava/lang/Object;
 HSPLandroid/animation/StateListAnimator$Tuple;-><init>([ILandroid/animation/Animator;)V
 HSPLandroid/animation/StateListAnimator;-><init>()V
-HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V
+HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/StateListAnimator;->appendChangingConfigurations(I)V
 HSPLandroid/animation/StateListAnimator;->clearTarget()V
-HSPLandroid/animation/StateListAnimator;->clone()Landroid/animation/StateListAnimator;
+HSPLandroid/animation/StateListAnimator;->clone()Landroid/animation/StateListAnimator;+]Landroid/animation/Animator;Landroid/animation/AnimatorSet;,Landroid/animation/ObjectAnimator;]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/animation/StateListAnimator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/StateListAnimator;->getChangingConfigurations()I
 HSPLandroid/animation/StateListAnimator;->getTarget()Landroid/view/View;
@@ -472,12 +472,12 @@
 HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V
 HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V
 HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/TimeInterpolator;Landroid/view/animation/LinearInterpolator;,Landroid/view/animation/PathInterpolator;,Landroid/view/animation/AccelerateDecelerateInterpolator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
+HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/TimeInterpolator;missing_types]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z
 HSPLandroid/animation/ValueAnimator;->cancel()V
 HSPLandroid/animation/ValueAnimator;->clampFraction(F)F
 HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator;
-HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
+HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->end()V
 HSPLandroid/animation/ValueAnimator;->endAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
@@ -513,25 +513,25 @@
 HSPLandroid/animation/ValueAnimator;->resolveDurationScale()F
 HSPLandroid/animation/ValueAnimator;->setAllowRunningAsynchronously(Z)V
 HSPLandroid/animation/ValueAnimator;->setAnimationHandler(Landroid/animation/AnimationHandler;)V
-HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V
+HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setCurrentPlayTime(J)V
 HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/Animator;
 HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setDurationScale(F)V
 HSPLandroid/animation/ValueAnimator;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V
+HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->setIntValues([I)V
 HSPLandroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/ValueAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ValueAnimator;->setRepeatCount(I)V
 HSPLandroid/animation/ValueAnimator;->setRepeatMode(I)V
 HSPLandroid/animation/ValueAnimator;->setStartDelay(J)V
-HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValuesHolder;)V
+HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValuesHolder;)V+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/animation/ValueAnimator;->shouldPlayBackward(IZ)Z
 HSPLandroid/animation/ValueAnimator;->skipToEndValue(Z)V
 HSPLandroid/animation/ValueAnimator;->start()V
 HSPLandroid/animation/ValueAnimator;->start(Z)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->startAnimation()V
+HSPLandroid/animation/ValueAnimator;->startAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V
 HSPLandroid/app/Activity$1;-><init>(Landroid/app/Activity;)V
 HSPLandroid/app/Activity$1;->isTaskRoot()Z
@@ -608,7 +608,7 @@
 HSPLandroid/app/Activity;->onCreateDescription()Ljava/lang/CharSequence;
 HSPLandroid/app/Activity;->onCreateOptionsMenu(Landroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onCreatePanelMenu(ILandroid/view/Menu;)Z
-HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/app/Activity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/app/Activity;->onDestroy()V
 HSPLandroid/app/Activity;->onDetachedFromWindow()V
@@ -1000,7 +1000,7 @@
 HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V
 HSPLandroid/app/ActivityThread;->peekPackageInfo(Ljava/lang/String;Z)Landroid/app/LoadedApk;
-HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/ActivityThread$ActivityClientRecord;]Landroid/app/Instrumentation;Landroid/app/Instrumentation;]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity;+]Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/ActivityThread$ActivityClientRecord;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/app/Instrumentation;Landroid/app/Instrumentation;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/app/ActivityThread;->performPauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;Landroid/app/servertransaction/PendingTransactionActions;)Landroid/os/Bundle;
 HSPLandroid/app/ActivityThread;->performPauseActivityIfNeeded(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->performRestartActivity(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
@@ -1264,7 +1264,7 @@
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(Landroid/content/pm/PackageManager$PackageInfoFlags;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;
+HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;+]Landroid/app/ApplicationPackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/ApplicationPackageManager;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
 HSPLandroid/app/ApplicationPackageManager;->getNameForUid(I)Ljava/lang/String;
 HSPLandroid/app/ApplicationPackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
@@ -1323,7 +1323,7 @@
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;II)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;I)Ljava/util/List;
+HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;I)Ljava/util/List;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/content/pm/PackageManager$ResolveInfoFlags;Landroid/content/pm/PackageManager$ResolveInfoFlags;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;Landroid/content/pm/PackageManager$ResolveInfoFlags;)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProvidersAsUser(Landroid/content/Intent;II)Ljava/util/List;
@@ -1411,7 +1411,7 @@
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V
-HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;IZ)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ContextParams;Landroid/content/ContextParams;
+HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;IZ)V+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/content/ContextParams;Landroid/content/ContextParams;
 HSPLandroid/app/ContextImpl;->bindIsolatedService(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z
 HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
 HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
@@ -1431,7 +1431,7 @@
 HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;)Landroid/app/ContextImpl;
 HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createAttributionContext(Ljava/lang/String;)Landroid/content/Context;
-HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;ZI)Landroid/content/AttributionSource;+]Ljava/util/Set;missing_types]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;
+HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;ZI)Landroid/content/AttributionSource;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Ljava/util/Set;missing_types
 HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createContext(Landroid/content/ContextParams;)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context;
@@ -1762,7 +1762,7 @@
 HSPLandroid/app/FragmentManagerImpl;->doPendingDeferredStart()V
 HSPLandroid/app/FragmentManagerImpl;->endAnimatingAwayFragments()V
 HSPLandroid/app/FragmentManagerImpl;->enqueueAction(Landroid/app/FragmentManagerImpl$OpGenerator;Z)V
-HSPLandroid/app/FragmentManagerImpl;->ensureExecReady(Z)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;
+HSPLandroid/app/FragmentManagerImpl;->ensureExecReady(Z)V+]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;]Landroid/os/Handler;Landroid/os/Handler;
 HSPLandroid/app/FragmentManagerImpl;->ensureInflatedFragmentView(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->execPendingActions()Z+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;
 HSPLandroid/app/FragmentManagerImpl;->executeOps(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V
@@ -1782,7 +1782,7 @@
 HSPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V
 HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V
-HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V
 HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
@@ -1841,10 +1841,10 @@
 HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;J)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
+HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/content/IIntentSender;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
 HSPLandroid/app/IActivityManager$Stub$Proxy;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
@@ -1872,7 +1872,7 @@
 HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
@@ -1931,7 +1931,7 @@
 HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z
 HSPLandroid/app/INotificationManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
@@ -2035,7 +2035,7 @@
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0;->run()V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable;
-HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0()V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0()V+]Landroid/app/LoadedApk$ReceiverDispatcher$Args;Landroid/app/LoadedApk$ReceiverDispatcher$Args;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher;-><init>(Landroid/app/IApplicationThread;Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V
@@ -2363,7 +2363,7 @@
 HSPLandroid/app/NotificationManager;->cancel(I)V
 HSPLandroid/app/NotificationManager;->cancel(Ljava/lang/String;I)V
 HSPLandroid/app/NotificationManager;->cancelAll()V
-HSPLandroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V
+HSPLandroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V+]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/os/UserHandle;Landroid/os/UserHandle;
 HSPLandroid/app/NotificationManager;->createNotificationChannel(Landroid/app/NotificationChannel;)V
 HSPLandroid/app/NotificationManager;->createNotificationChannelGroup(Landroid/app/NotificationChannelGroup;)V
 HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util/List;)V
@@ -2443,7 +2443,7 @@
 HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/PictureInPictureParams;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/PropertyInvalidatedCache$1;-><init>(Landroid/app/PropertyInvalidatedCache;IFZ)V
-HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$1;Landroid/app/PropertyInvalidatedCache$1;
 HSPLandroid/app/PropertyInvalidatedCache$DefaultComputer;-><init>(Landroid/app/PropertyInvalidatedCache;)V
 HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;-><clinit>()V
 HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J
@@ -2470,7 +2470,7 @@
 HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z
 HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z
 HSPLandroid/app/PropertyInvalidatedCache;->maybeCheckConsistency(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;]Landroid/app/PropertyInvalidatedCache;megamorphic_types
+HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/app/PropertyInvalidatedCache;megamorphic_types]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;
 HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V
@@ -2479,7 +2479,7 @@
 HSPLandroid/app/QueuedWork;->-$$Nest$smprocessPendingWork()V
 HSPLandroid/app/QueuedWork;->addFinisher(Ljava/lang/Runnable;)V
 HSPLandroid/app/QueuedWork;->getHandler()Landroid/os/Handler;
-HSPLandroid/app/QueuedWork;->handlerRemoveMessages(I)V
+HSPLandroid/app/QueuedWork;->handlerRemoveMessages(I)V+]Landroid/os/Handler;Landroid/app/QueuedWork$QueuedWorkHandler;
 HSPLandroid/app/QueuedWork;->hasPendingWork()Z
 HSPLandroid/app/QueuedWork;->processPendingWork()V
 HSPLandroid/app/QueuedWork;->queue(Ljava/lang/Runnable;Z)V
@@ -2514,8 +2514,8 @@
 HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;-><init>(Landroid/app/ResourcesManager;)V
 HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;->load(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
 HSPLandroid/app/ResourcesManager$ApkKey;-><init>(Ljava/lang/String;ZZ)V
-HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I
+HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;)V
 HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;Landroid/app/ResourcesManager$UpdateHandler-IA;)V
 HSPLandroid/app/ResourcesManager;->-$$Nest$mloadApkAssets(Landroid/app/ResourcesManager;Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
@@ -2540,7 +2540,7 @@
 HSPLandroid/app/ResourcesManager;->createResourcesForActivityLocked(Landroid/os/IBinder;Landroid/content/res/Configuration;Ljava/lang/Integer;Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
 HSPLandroid/app/ResourcesManager;->createResourcesImpl(Landroid/content/res/ResourcesKey;Landroid/app/ResourcesManager$ApkAssetsSupplier;)Landroid/content/res/ResourcesImpl;
 HSPLandroid/app/ResourcesManager;->createResourcesLocked(Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
-HSPLandroid/app/ResourcesManager;->extractApkKeys(Landroid/content/res/ResourcesKey;)Ljava/util/ArrayList;
+HSPLandroid/app/ResourcesManager;->extractApkKeys(Landroid/content/res/ResourcesKey;)Ljava/util/ArrayList;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/app/ResourcesManager;->findKeyForResourceImplLocked(Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey;
 HSPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
 HSPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;Landroid/app/ResourcesManager$ApkAssetsSupplier;)Landroid/content/res/ResourcesImpl;
@@ -2561,7 +2561,7 @@
 HSPLandroid/app/ResourcesManager;->isSameResourcesOverrideConfig(Landroid/os/IBinder;Landroid/content/res/Configuration;)Z
 HSPLandroid/app/ResourcesManager;->lambda$cleanupReferences$1(Ljava/util/function/Function;Ljava/util/HashSet;Ljava/lang/Object;)Z
 HSPLandroid/app/ResourcesManager;->lambda$createResourcesForActivityLocked$0(Landroid/app/ResourcesManager$ActivityResource;)Ljava/lang/ref/WeakReference;
-HSPLandroid/app/ResourcesManager;->loadApkAssets(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
+HSPLandroid/app/ResourcesManager;->loadApkAssets(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/app/ResourcesManager;->overlayPathToIdmapPath(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/app/ResourcesManager;->rebaseActivityOverrideConfig(Landroid/app/ResourcesManager$ActivityResource;Landroid/content/res/Configuration;I)Landroid/content/res/ResourcesKey;
 HSPLandroid/app/ResourcesManager;->rebaseKeyForActivity(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Z)V
@@ -2854,7 +2854,7 @@
 HSPLandroid/app/WallpaperManager;->setWallpaperZoomOut(Landroid/os/IBinder;F)V
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/WindowConfiguration;-><init>()V
+HSPLandroid/app/WindowConfiguration;-><init>()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z
@@ -2882,12 +2882,12 @@
 HSPLandroid/app/WindowConfiguration;->setRotation(I)V
 HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;I)V
-HSPLandroid/app/WindowConfiguration;->setToDefaults()V
+HSPLandroid/app/WindowConfiguration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration;->setWindowingMode(I)V
 HSPLandroid/app/WindowConfiguration;->tasksAreFloating()Z
 HSPLandroid/app/WindowConfiguration;->toString()Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->unset()V
-HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/app/WindowConfiguration;->windowingModeToString(I)Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/admin/DevicePolicyManager$$ExternalSyntheticLambda5;-><init>(Landroid/app/admin/DevicePolicyManager;)V
@@ -3153,10 +3153,10 @@
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/net/Uri;I)V
 HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;)V+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Bundle;Landroid/os/Bundle;
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;)V
 HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo-IA;)V
-HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/NetworkRequest$1;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/app/job/JobInfo;->enforceValidity(ZZZZ)V+]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/job/JobInfo;->enforceValidity(ZZZZ)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle;
 HSPLandroid/app/job/JobInfo;->getFlags()I
 HSPLandroid/app/job/JobInfo;->getFlexMillis()J
@@ -3263,11 +3263,11 @@
 HSPLandroid/app/servertransaction/ActivityTransactionItem;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ClientTransaction;
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V+]Ljava/lang/Object;Landroid/app/servertransaction/ClientTransaction;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V+]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/app/servertransaction/ClientTransaction;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ClientTransaction-IA;)V
 HSPLandroid/app/servertransaction/ClientTransaction;->getCallbacks()Ljava/util/List;
 HSPLandroid/app/servertransaction/ClientTransaction;->getLifecycleStateRequest()Landroid/app/servertransaction/ActivityLifecycleItem;
-HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types
+HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V+]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/app/servertransaction/ClientTransactionItem;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I
 HSPLandroid/app/servertransaction/ClientTransactionItem;->shouldHaveDefinedPreExecutionState()Z
@@ -3330,7 +3330,7 @@
 HSPLandroid/app/servertransaction/TransactionExecutor;->execute(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeCallbacks(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeLifecycleState(Landroid/app/servertransaction/ClientTransaction;)V
-HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;
+HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;]Landroid/util/IntArray;Landroid/util/IntArray;
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;-><init>()V
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestOfStates(Landroid/app/ActivityThread$ActivityClientRecord;[I)I
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestPreExecutionState(Landroid/app/ActivityThread$ActivityClientRecord;I)I
@@ -3402,7 +3402,7 @@
 HSPLandroid/app/usage/AppStandbyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/usage/AppStandbyInfo;-><init>(Ljava/lang/String;I)V
 HSPLandroid/app/usage/AppStandbyInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/app/usage/IStorageStatsManager$Stub$Proxy;Landroid/app/usage/IStorageStatsManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/app/usage/IStorageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IStorageStatsManager;
 HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
@@ -3426,10 +3426,10 @@
 HSPLandroid/app/usage/UsageEvents;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z
 HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z
-HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V
+HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/content/res/Configuration$1;
+HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/app/usage/UsageStats$1;Landroid/app/usage/UsageStats$1;
+HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/app/usage/UsageStats;-><init>()V
 HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String;
 HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V
@@ -3611,10 +3611,13 @@
 HSPLandroid/content/ComponentName;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions;
 HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->-$$Nest$smcreateFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions$ContentProtectionOptions;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;-><init>(ZILjava/util/List;Ljava/util/List;I)V
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions$ContentProtectionOptions;
-HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createGroupsFromParcel(Landroid/os/Parcel;)Ljava/util/List;+]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$11;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->createGroupsFromParcel(Landroid/os/Parcel;)Ljava/util/List;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$11;
+HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->lambda$createGroupsFromParcel$0(I)Ljava/util/ArrayList;
 HSPLandroid/content/ContentCaptureOptions$ContentProtectionOptions;->writeToParcel(Landroid/os/Parcel;)V
 HSPLandroid/content/ContentCaptureOptions;-><init>(IIIIILandroid/util/ArraySet;)V
 HSPLandroid/content/ContentCaptureOptions;-><init>(ZIIIIIZZLandroid/content/ContentCaptureOptions$ContentProtectionOptions;Landroid/util/ArraySet;)V
@@ -3862,7 +3865,7 @@
 HSPLandroid/content/ContentValues;->putObject(Ljava/lang/String;Ljava/lang/Object;)V
 HSPLandroid/content/ContentValues;->remove(Ljava/lang/String;)V
 HSPLandroid/content/ContentValues;->size()I
-HSPLandroid/content/ContentValues;->toString()Ljava/lang/String;
+HSPLandroid/content/ContentValues;->toString()Ljava/lang/String;+]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/content/ContentValues;->valueSet()Ljava/util/Set;
 HSPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/Context;-><init>()V
@@ -3876,11 +3879,11 @@
 HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence;
 HSPLandroid/content/Context;->getToken(Landroid/content/Context;)Landroid/os/IBinder;
-HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z
-HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
+HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z+]Landroid/content/Context;missing_types
+HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
-HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types
-HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
+HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
+HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V
 HSPLandroid/content/Context;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V
 HSPLandroid/content/ContextParams$Builder;-><init>()V
@@ -3933,7 +3936,7 @@
 HSPLandroid/content/ContextWrapper;->getAttributionSource()Landroid/content/AttributionSource;
 HSPLandroid/content/ContextWrapper;->getAttributionTag()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient;
-HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;
+HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;+]Landroid/content/Context;missing_types
 HSPLandroid/content/ContextWrapper;->getBaseContext()Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->getBasePackageName()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getCacheDir()Ljava/io/File;
@@ -3975,7 +3978,7 @@
 HSPLandroid/content/ContextWrapper;->getWindowContextToken()Landroid/os/IBinder;
 HSPLandroid/content/ContextWrapper;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V
 HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z
-HSPLandroid/content/ContextWrapper;->isRestricted()Z
+HSPLandroid/content/ContextWrapper;->isRestricted()Z+]Landroid/content/Context;missing_types
 HSPLandroid/content/ContextWrapper;->isUiContext()Z
 HSPLandroid/content/ContextWrapper;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;
 HSPLandroid/content/ContextWrapper;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;
@@ -4061,7 +4064,7 @@
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V
-HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
+HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/content/Intent;->addFlags(I)Landroid/content/Intent;
 HSPLandroid/content/Intent;->cloneFilter()Landroid/content/Intent;
 HSPLandroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
@@ -4306,7 +4309,7 @@
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo;
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/content/pm/ActivityInfo$WindowLayout;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I
 HSPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I
 HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I
@@ -4325,7 +4328,7 @@
 HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/ApplicationInfo;-><init>()V
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/content/pm/ApplicationInfo;)V
-HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
+HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo-IA;)V
 HSPLandroid/content/pm/ApplicationInfo;->getAllApkPaths()[Ljava/lang/String;
 HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
@@ -4371,7 +4374,7 @@
 HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List;
 HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;
 HSPLandroid/content/pm/BaseParceledListSlice;->readVerifyAndAddElement(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class;
-HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V
+HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V+]Ljava/lang/Object;Ljava/lang/Class;
 HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Checksum;
 HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -4418,15 +4421,15 @@
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;JI)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String;
@@ -4496,7 +4499,7 @@
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInfo;
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/PackageInfo;-><init>()V
-HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/content/pm/ApplicationInfo$1;,Landroid/content/pm/SigningInfo$1;
 HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/PackageInfo-IA;)V
 HSPLandroid/content/pm/PackageInfo;->composeLongVersionCode(II)J
 HSPLandroid/content/pm/PackageInfo;->getLongVersionCode()J
@@ -4692,7 +4695,7 @@
 HSPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SharedLibraryInfo;
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/SharedLibraryInfo-IA;)V
 HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;Ljava/util/List;Z)V
 HSPLandroid/content/pm/SharedLibraryInfo;->addDependency(Landroid/content/pm/SharedLibraryInfo;)V
@@ -4766,7 +4769,7 @@
 HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;Landroid/content/pm/Signature-IA;)V
 HSPLandroid/content/pm/Signature;-><init>(Ljava/lang/String;)V
 HSPLandroid/content/pm/Signature;-><init>([B)V
@@ -4779,11 +4782,11 @@
 HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String;
 HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningDetails;
 HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SigningDetails;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/SigningDetails;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/content/pm/SigningDetails;->getSignatures()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningInfo;
 HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/SigningInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/SigningInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/content/pm/SigningDetails$1;
 HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo;->getSigningCertificateHistory()[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/SigningInfo;->hasMultipleSigners()Z
@@ -4793,7 +4796,7 @@
 HSPLandroid/content/pm/StringParceledListSlice;->getList()Ljava/util/List;
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/UserInfo;
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/pm/UserInfo;->getUserHandle()Landroid/os/UserHandle;
 HSPLandroid/content/pm/UserInfo;->isAdmin()Z
 HSPLandroid/content/pm/UserInfo;->isEnabled()Z
@@ -4882,7 +4885,7 @@
 HSPLandroid/content/res/AssetManager$AssetInputStream;->read([BII)I
 HSPLandroid/content/res/AssetManager$Builder;-><init>()V
 HSPLandroid/content/res/AssetManager$Builder;->addApkAssets(Landroid/content/res/ApkAssets;)Landroid/content/res/AssetManager$Builder;
-HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;
+HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/content/res/AssetManager;->-$$Nest$fgetmObject(Landroid/content/res/AssetManager;)J
 HSPLandroid/content/res/AssetManager;->-$$Nest$fputmApkAssets(Landroid/content/res/AssetManager;[Landroid/content/res/ApkAssets;)V
 HSPLandroid/content/res/AssetManager;->-$$Nest$fputmLoaders(Landroid/content/res/AssetManager;[Landroid/content/res/loader/ResourcesLoader;)V
@@ -4930,7 +4933,7 @@
 HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/AssetManager;->getSizeConfigurations()[Landroid/content/res/Configuration;
 HSPLandroid/content/res/AssetManager;->getSystem()Landroid/content/res/AssetManager;
-HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V
 HSPLandroid/content/res/AssetManager;->isUpToDate()Z
 HSPLandroid/content/res/AssetManager;->list(Ljava/lang/String;)[Ljava/lang/String;
@@ -4969,7 +4972,7 @@
 HSPLandroid/content/res/ColorStateList;->getColorForState([II)I
 HSPLandroid/content/res/ColorStateList;->getConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/content/res/ColorStateList;->getDefaultColor()I
-HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/ColorStateList;->isStateful()Z
 HSPLandroid/content/res/ColorStateList;->modulateColor(IFF)I
 HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
@@ -5011,7 +5014,7 @@
 HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z
 HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Ljava/lang/Object;Ljava/util/Locale;]Landroid/os/LocaleList;Landroid/os/LocaleList;
+HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Object;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration;
 HSPLandroid/content/res/Configuration;->getGrammaticalGender()I
 HSPLandroid/content/res/Configuration;->getLayoutDirection()I
@@ -5023,19 +5026,19 @@
 HSPLandroid/content/res/Configuration;->isScreenRound()Z
 HSPLandroid/content/res/Configuration;->isScreenWideColorGamut()Z
 HSPLandroid/content/res/Configuration;->needNewResources(II)Z
-HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/content/res/Configuration;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V
 HSPLandroid/content/res/Configuration;->reduceScreenLayout(III)I
 HSPLandroid/content/res/Configuration;->resetScreenLayout(I)I
 HSPLandroid/content/res/Configuration;->setLayoutDirection(Ljava/util/Locale;)V
 HSPLandroid/content/res/Configuration;->setLocale(Ljava/util/Locale;)V
 HSPLandroid/content/res/Configuration;->setLocales(Landroid/os/LocaleList;)V
-HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V+]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;II)V
-HSPLandroid/content/res/Configuration;->setToDefaults()V
+HSPLandroid/content/res/Configuration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLandroid/content/res/Configuration;->toString()Ljava/lang/String;
 HSPLandroid/content/res/Configuration;->unset()V
-HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/res/ConfigurationBoundResourceCache;-><init>()V
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;
@@ -5056,8 +5059,8 @@
 HSPLandroid/content/res/FeatureFlagsImpl;->defaultLocale()Z
 HSPLandroid/content/res/Flags;->defaultLocale()Z
 HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
+HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
+HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/util/List;Ljava/util/ArrayList;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/FontScaleConverterFactory;->forScale(F)Landroid/content/res/FontScaleConverter;
 HSPLandroid/content/res/FontScaleConverterFactory;->isNonLinearFontScalingActive(F)Z
 HSPLandroid/content/res/GradientColor;-><init>()V
@@ -5076,33 +5079,33 @@
 HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;)V
 HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme-IA;)V
 HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V
-HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z
+HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Ljava/lang/Object;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/res/Resources$Theme;->getAppliedStyleResId()I
 HSPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I
-HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->getParentThemeIdentifier(I)I
 HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources$Theme;->getTheme()[Ljava/lang/String;
 HSPLandroid/content/res/Resources$Theme;->hashCode()I
-HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
+HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->rebase()V
 HSPLandroid/content/res/Resources$Theme;->rebase(Landroid/content/res/ResourcesImpl;)V
-HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
 HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V
-HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/content/res/Resources$ThemeKey;-><init>()V
 HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V
 HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey;
-HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/Resources$ThemeKey;->hashCode()I
 HSPLandroid/content/res/Resources$ThemeKey;->moveToLast(I)V
 HSPLandroid/content/res/Resources$ThemeKey;->setTo(Landroid/content/res/Resources$ThemeKey;)V+][I[I][Z[Z
 HSPLandroid/content/res/Resources;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V
-HSPLandroid/content/res/Resources;-><init>(Ljava/lang/ClassLoader;)V
+HSPLandroid/content/res/Resources;-><init>(Ljava/lang/ClassLoader;)V+]Ljava/util/Set;Ljava/util/Collections$SynchronizedSet;
 HSPLandroid/content/res/Resources;->addLoaders([Landroid/content/res/loader/ResourcesLoader;)V
 HSPLandroid/content/res/Resources;->checkCallbacksRegistered()V
 HSPLandroid/content/res/Resources;->cleanupThemeReferences()V
@@ -5129,7 +5132,7 @@
 HSPLandroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/Resources;->getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getDrawableInflater()Landroid/graphics/drawable/DrawableInflater;
 HSPLandroid/content/res/Resources;->getFloat(I)F
 HSPLandroid/content/res/Resources;->getFont(Landroid/util/TypedValue;I)Landroid/graphics/Typeface;
@@ -5143,7 +5146,7 @@
 HSPLandroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence;
-HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;
+HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getResourceName(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getResourceTypeName(I)Ljava/lang/String;
@@ -5151,24 +5154,24 @@
 HSPLandroid/content/res/Resources;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
+HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence;
-HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V
+HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V
 HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/Resources;->hasOverrideDisplayAdjustments()Z
-HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
+HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;
-HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme;
+HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
+HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue;
-HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;
+HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
 HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;
@@ -5198,26 +5201,26 @@
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->pop()V
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->push(I)V
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;-><init>(Landroid/content/res/ResourcesImpl;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;-><init>(Landroid/content/res/ResourcesImpl;)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->finalize()V
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getAppliedStyleResId()I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getChangingConfigurations()I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getKey()Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getParentThemeIdentifier(I)I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getTheme()[Ljava/lang/String;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase()V
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase(Landroid/content/res/AssetManager;)V
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/ResourcesImpl;->-$$Nest$sfgetsThemeRegistry()Llibcore/util/NativeAllocationRegistry;
-HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V
+HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;
 HSPLandroid/content/res/ResourcesImpl;->adjustLanguageTag(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->attrForQuantityCode(Ljava/lang/String;)I
 HSPLandroid/content/res/ResourcesImpl;->cacheDrawable(Landroid/util/TypedValue;ZLandroid/content/res/DrawableCache;Landroid/content/res/Resources$Theme;ZJLandroid/graphics/drawable/Drawable;I)V
-HSPLandroid/content/res/ResourcesImpl;->calcConfigChanges(Landroid/content/res/Configuration;)I
+HSPLandroid/content/res/ResourcesImpl;->calcConfigChanges(Landroid/content/res/Configuration;)I+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;
 HSPLandroid/content/res/ResourcesImpl;->decodeImageDrawable(Landroid/content/res/AssetManager$AssetInputStream;Landroid/content/res/Resources;Landroid/util/TypedValue;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/ResourcesImpl;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLandroid/content/res/ResourcesImpl;->finishPreloading()V
@@ -5225,7 +5228,7 @@
 HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager;
 HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I
-HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;
+HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo;
 HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration;
 HSPLandroid/content/res/ResourcesImpl;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;
@@ -5247,18 +5250,18 @@
 HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
-HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;
-HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;Landroid/graphics/drawable/ColorDrawable$ColorState;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/ColorDrawable;
-HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;
+HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
+HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->loadXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock;
+HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/content/res/ResourcesImpl;->newThemeImpl()Landroid/content/res/ResourcesImpl$ThemeImpl;
 HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;
 HSPLandroid/content/res/ResourcesImpl;->openRawResourceFd(ILandroid/util/TypedValue;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/res/ResourcesImpl;->startPreloading()V
-HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
-HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;
+HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/util/Locale;Ljava/util/Locale;
+HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/lang/Object;Ljava/util/Locale;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z
 HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Landroid/content/res/loader/ResourcesLoader;)V
 HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z
@@ -5271,9 +5274,9 @@
 HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/StringBlock;->getSequence(I)Ljava/lang/CharSequence;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/content/res/ThemedResourceCache;-><init>()V
-HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/content/res/ThemedResourceCache;->getGeneration()I
-HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray;
 HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V
 HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z
@@ -5294,14 +5297,14 @@
 HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/content/res/TypedArray;->getFloat(IF)F
-HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;
+HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/content/res/TypedArray;->getFraction(IIIF)F
 HSPLandroid/content/res/TypedArray;->getIndex(I)I
 HSPLandroid/content/res/TypedArray;->getIndexCount()I
 HSPLandroid/content/res/TypedArray;->getInt(II)I
 HSPLandroid/content/res/TypedArray;->getInteger(II)I
 HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I
-HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I
+HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String;
@@ -5316,7 +5319,7 @@
 HSPLandroid/content/res/TypedArray;->hasValue(I)Z
 HSPLandroid/content/res/TypedArray;->hasValueOrEmpty(I)Z
 HSPLandroid/content/res/TypedArray;->length()I
-HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/TypedArray;->obtain(Landroid/content/res/Resources;I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
 HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;
 HSPLandroid/content/res/TypedArray;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
@@ -5340,7 +5343,7 @@
 HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I
 HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I
 HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
-HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;
+HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
 HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->getSequenceString(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->getSourceResId()I
@@ -5349,7 +5352,7 @@
 HSPLandroid/content/res/XmlBlock$Parser;->next()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/content/res/XmlBlock$Parser;->nextTag()I
 HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String;
-HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock;->-$$Nest$fgetmOpenCount(Landroid/content/res/XmlBlock;)I
 HSPLandroid/content/res/XmlBlock;->-$$Nest$fputmOpenCount(Landroid/content/res/XmlBlock;I)V
 HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetAttributeCount(J)I
@@ -5363,7 +5366,7 @@
 HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetText(J)I
 HSPLandroid/content/res/XmlBlock;-><init>(Landroid/content/res/AssetManager;J)V
 HSPLandroid/content/res/XmlBlock;->close()V
-HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V+]Ljava/lang/Object;Landroid/content/res/XmlBlock;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;
+HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock;]Ljava/lang/Object;Landroid/content/res/XmlBlock;
 HSPLandroid/content/res/XmlBlock;->finalize()V
 HSPLandroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser;
@@ -5374,10 +5377,10 @@
 HSPLandroid/database/AbstractCursor$SelfContentObserver;-><init>(Landroid/database/AbstractCursor;)V
 HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V
 HSPLandroid/database/AbstractCursor;-><init>()V
-HSPLandroid/database/AbstractCursor;->checkPosition()V
+HSPLandroid/database/AbstractCursor;->checkPosition()V+]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor;,Landroid/database/sqlite/SQLiteCursor;
 HSPLandroid/database/AbstractCursor;->close()V
 HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V
-HSPLandroid/database/AbstractCursor;->finalize()V
+HSPLandroid/database/AbstractCursor;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLandroid/database/AbstractCursor;->getColumnCount()I
 HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I
 HSPLandroid/database/AbstractCursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
@@ -5410,13 +5413,13 @@
 HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B
 HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D
 HSPLandroid/database/AbstractWindowedCursor;->getFloat(I)F
-HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I
-HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J
-HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;
+HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/BulkCursorToCursorAdaptor;,Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->getType(I)I
 HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->hasWindow()Z
-HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z
+HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->onDeactivateOrClose()V
 HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V
 HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor;
@@ -5482,16 +5485,16 @@
 HSPLandroid/database/CursorWindow;->clear()V
 HSPLandroid/database/CursorWindow;->dispose()V
 HSPLandroid/database/CursorWindow;->finalize()V
-HSPLandroid/database/CursorWindow;->getBlob(II)[B
+HSPLandroid/database/CursorWindow;->getBlob(II)[B+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->getCursorWindowSize()I
 HSPLandroid/database/CursorWindow;->getDouble(II)D
 HSPLandroid/database/CursorWindow;->getFloat(II)F
 HSPLandroid/database/CursorWindow;->getInt(II)I
-HSPLandroid/database/CursorWindow;->getLong(II)J
+HSPLandroid/database/CursorWindow;->getLong(II)J+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->getNumRows()I
 HSPLandroid/database/CursorWindow;->getStartPosition()I
-HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String;
-HSPLandroid/database/CursorWindow;->getType(II)I
+HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String;+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
+HSPLandroid/database/CursorWindow;->getType(II)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V
 HSPLandroid/database/CursorWindow;->putLong(JII)Z
@@ -5593,7 +5596,7 @@
 HSPLandroid/database/sqlite/SQLiteClosable;-><init>()V
 HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V
 HSPLandroid/database/sqlite/SQLiteClosable;->close()V
-HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V
+HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteStatement;
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V
@@ -5603,7 +5606,7 @@
 HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V
 HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
-HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->dump(Landroid/util/Printer;)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperation(I)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z
@@ -5628,7 +5631,7 @@
 HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatementLI(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;
 HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V
-HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V+]Ljava/lang/Number;Ljava/lang/Double;,Ljava/lang/Integer;,Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->checkDatabaseWiped()V
 HSPLandroid/database/sqlite/SQLiteConnection;->close()V
@@ -5636,11 +5639,11 @@
 HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V
 HSPLandroid/database/sqlite/SQLiteConnection;->dumpUnsafe(Landroid/util/Printer;Z)V
-HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog;]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J
-HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J
+HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog;]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->executePerConnectionSqlFromConfiguration(I)V
 HSPLandroid/database/sqlite/SQLiteConnection;->finalize()V
@@ -5723,7 +5726,7 @@
 HSPLandroid/database/sqlite/SQLiteCursor;->getColumnNames()[Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I
 HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;
-HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z
+HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;-><init>(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
 HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda2;-><init>()V
@@ -5755,7 +5758,7 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V
-HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;
+HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteDatabase;->createSession()Landroid/database/sqlite/SQLiteSession;
 HSPLandroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
 HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;)Z
@@ -5783,7 +5786,7 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
 HSPLandroid/database/sqlite/SQLiteDatabase;->insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
-HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J
+HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J+]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z
@@ -5928,7 +5931,7 @@
 HSPLandroid/database/sqlite/SQLiteSession;->yieldTransaction(JZLandroid/os/CancellationSignal;)Z
 HSPLandroid/database/sqlite/SQLiteSession;->yieldTransactionUnchecked(JLandroid/os/CancellationSignal;)Z
 HSPLandroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/database/sqlite/SQLiteStatement;->execute()V
+HSPLandroid/database/sqlite/SQLiteStatement;->execute()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;
 HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J
 HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I
 HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J
@@ -5986,9 +5989,9 @@
 HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;missing_types]Landroid/graphics/Path;Landroid/graphics/Path;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas;
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V+]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas;
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V
@@ -6136,8 +6139,8 @@
 HSPLandroid/graphics/Canvas;->save()I
 HSPLandroid/graphics/Canvas;->save(I)I
 HSPLandroid/graphics/Canvas;->saveLayer(FFFFLandroid/graphics/Paint;I)I
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;
+HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;
 HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFI)I
 HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFII)I
 HSPLandroid/graphics/Canvas;->saveUnclippedLayer(IIII)I
@@ -6417,7 +6420,7 @@
 HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V
 HSPLandroid/graphics/Outline;->setRect(IIII)V
 HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline;
+HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;
 HSPLandroid/graphics/Paint$FontMetrics;-><init>()V
 HSPLandroid/graphics/Paint$FontMetricsInt;-><init>()V
@@ -6436,12 +6439,12 @@
 HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F
 HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;
 HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I
-HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V
+HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/graphics/Paint;->getFontVariationSettings()Ljava/lang/String;
 HSPLandroid/graphics/Paint;->getHinting()I
 HSPLandroid/graphics/Paint;->getLetterSpacing()F
 HSPLandroid/graphics/Paint;->getMaskFilter()Landroid/graphics/MaskFilter;
-HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader;
+HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/BitmapShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/drawable/RippleShader;
 HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F
 HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F
 HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F
@@ -6504,7 +6507,7 @@
 HSPLandroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;
 HSPLandroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;
 HSPLandroid/graphics/Paint;->setShadowLayer(FFFI)V
-HSPLandroid/graphics/Paint;->setShadowLayer(FFFJ)V
+HSPLandroid/graphics/Paint;->setShadowLayer(FFFJ)V+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb;
 HSPLandroid/graphics/Paint;->setStartHyphenEdit(I)V
 HSPLandroid/graphics/Paint;->setStrokeCap(Landroid/graphics/Paint$Cap;)V
 HSPLandroid/graphics/Paint;->setStrokeJoin(Landroid/graphics/Paint$Join;)V
@@ -6519,7 +6522,7 @@
 HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Paint;->setUnderlineText(Z)V
 HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;
-HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/LocaleList;Landroid/os/LocaleList;
+HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/graphics/PaintFlagsDrawFilter;-><init>(II)V
 HSPLandroid/graphics/Path;-><init>()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/graphics/Path;-><init>(Landroid/graphics/Path;)V
@@ -6530,7 +6533,7 @@
 HSPLandroid/graphics/Path;->addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;
 HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V
-HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V
+HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V+]Landroid/graphics/Path;Landroid/graphics/Path;
 HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V
@@ -6653,7 +6656,7 @@
 HSPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String;
 HSPLandroid/graphics/Rect;->toString()Ljava/lang/String;
 HSPLandroid/graphics/Rect;->union(IIII)V
-HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V
+HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/graphics/Rect;->width()I
 HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/graphics/RectF;-><init>()V
@@ -6771,7 +6774,7 @@
 HSPLandroid/graphics/Shader;->discardNativeInstance()V
 HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V
 HSPLandroid/graphics/Shader;->getNativeInstance()J
-HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
+HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/BitmapShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/drawable/RippleShader;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V
 HSPLandroid/graphics/Shader;->shouldDiscardNativeInstance(Z)Z
 HSPLandroid/graphics/SurfaceTexture$1;->handleMessage(Landroid/os/Message;)V
@@ -6789,7 +6792,7 @@
 HSPLandroid/graphics/TextureLayer;->close()V
 HSPLandroid/graphics/TextureLayer;->detachSurfaceTexture()V
 HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;
+HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;-><init>(Landroid/graphics/fonts/FontFamily;)V
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder;
@@ -6803,9 +6806,9 @@
 HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface;->deserializeFontMap(Ljava/nio/ByteBuffer;Ljava/util/Map;)[J
 HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z
-HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
+HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;+]Landroid/util/LruCache;Landroid/util/LruCache;
 HSPLandroid/graphics/Typeface;->getStyle()I
-HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;
+HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;+]Ljava/util/Map;Landroid/util/ArrayMap;
 HSPLandroid/graphics/Typeface;->getSystemFontFamilyName()Ljava/lang/String;
 HSPLandroid/graphics/Typeface;->hasFontFamily(Ljava/lang/String;)Z
 HSPLandroid/graphics/Typeface;->readString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
@@ -7068,7 +7071,7 @@
 HSPLandroid/graphics/drawable/ColorDrawable;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable-IA;)V
 HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V
-HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;
 HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I
@@ -7110,7 +7113,7 @@
 HSPLandroid/graphics/drawable/Drawable;->getLayoutDirection()I
 HSPLandroid/graphics/drawable/Drawable;->getLevel()I
 HSPLandroid/graphics/drawable/Drawable;->getMinimumHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/Drawable;->getMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/graphics/drawable/Drawable;->getMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/Drawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/Drawable;->getState()[I
@@ -7127,14 +7130,14 @@
 HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode;
-HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I
+HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I+]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I
 HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F
 HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I
 HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V
 HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types
 HSPLandroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V
 HSPLandroid/graphics/drawable/Drawable;->setChangingConfigurations(I)V
 HSPLandroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V
@@ -7143,20 +7146,20 @@
 HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z
 HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z
 HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V
-HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types
 HSPLandroid/graphics/drawable/Drawable;->setTint(I)V
 HSPLandroid/graphics/drawable/Drawable;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V
-HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/VectorDrawable;
+HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ShapeDrawable;,Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback-IA;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback;
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
-HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z
@@ -7199,11 +7202,11 @@
 HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;
 HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/StateListDrawable;,Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;
 HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->isAutoMirrored()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z
-HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V
+HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V
@@ -7237,14 +7240,14 @@
 HSPLandroid/graphics/drawable/DrawableWrapper;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/DrawableWrapper;->clearMutated()V
 HSPLandroid/graphics/drawable/DrawableWrapper;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I
+HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/graphics/drawable/InsetDrawable$InsetState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicWidth()I
 HSPLandroid/graphics/drawable/DrawableWrapper;->getOpacity()I
-HSPLandroid/graphics/drawable/DrawableWrapper;->getPadding(Landroid/graphics/Rect;)Z
+HSPLandroid/graphics/drawable/DrawableWrapper;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->inflateChildDrawable(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable$Callback;Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/DrawableWrapper;Landroid/graphics/drawable/InsetDrawable;
@@ -7254,10 +7257,10 @@
 HSPLandroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z
-HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/DrawableWrapper;missing_types
 HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setTintBlendMode(Landroid/graphics/BlendMode;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V
@@ -7287,8 +7290,8 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V
-HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z
+HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Paint;Landroid/graphics/Paint;
+HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
@@ -7329,7 +7332,7 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -7354,7 +7357,7 @@
 HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-$$Nest$fputmThemeAttrs(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)V
-HSPLandroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->onDensityChanged(II)V
@@ -7370,11 +7373,11 @@
 HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable-IA;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue;
-HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/InsetDrawable;Landroid/graphics/drawable/InsetDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;
-HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I
-HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I
+HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue;]Landroid/graphics/drawable/InsetDrawable;missing_types
+HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
+HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
 HSPLandroid/graphics/drawable/InsetDrawable;->getOpacity()I
-HSPLandroid/graphics/drawable/InsetDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/InsetDrawable;Landroid/graphics/drawable/InsetDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable;
+HSPLandroid/graphics/drawable/InsetDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/InsetDrawable;missing_types
 HSPLandroid/graphics/drawable/InsetDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/InsetDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
@@ -7382,7 +7385,7 @@
 HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(I)V
-HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V
@@ -7402,11 +7405,11 @@
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>()V
-HSPLandroid/graphics/drawable/LayerDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/LayerDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
-HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;)I
+HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable;+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;)I+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/RippleDrawable$RippleState;
 HSPLandroid/graphics/drawable/LayerDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/LayerDrawable;->clearMutated()V
@@ -7421,11 +7424,11 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/LayerDrawable;->getDrawable(I)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;
+HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->getNumberOfLayers()I
 HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/LayerDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;
-HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/RippleDrawable$RippleState;]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
@@ -7435,7 +7438,7 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V
 HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I
@@ -7455,7 +7458,7 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/graphics/drawable/LayerDrawable;missing_types
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable$$ExternalSyntheticLambda0;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
@@ -7552,12 +7555,12 @@
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>()V
-HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/RippleDrawable;missing_types
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable-IA;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V
+HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V
 HSPLandroid/graphics/drawable/RippleDrawable;->computeRadius()F
 HSPLandroid/graphics/drawable/RippleDrawable;->createAnimationProperties(FFFFFF)Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;
@@ -7566,27 +7569,27 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V
+HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;]Landroid/graphics/drawable/RippleDrawable;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/RippleDrawable;->drawPatternedBackground(Landroid/graphics/Canvas;FF)V
 HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedAnimation()V
-HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V
+HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->getComputedRadius()I
 HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
-HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I
 HSPLandroid/graphics/drawable/RippleDrawable;->getOpacity()I
-HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;
+HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/StateListDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V
 HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
-HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z
+HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->onHotspotBoundsChanged()V
-HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/RippleDrawable;missing_types
 HSPLandroid/graphics/drawable/RippleDrawable;->pruneRipples()V
 HSPLandroid/graphics/drawable/RippleDrawable;->setBackgroundActive(ZZZZ)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setColor(Landroid/content/res/ColorStateList;)V
@@ -7595,11 +7598,11 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->setPaddingMode(I)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setRippleActive(Z)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setVisible(ZZ)Z
-HSPLandroid/graphics/drawable/RippleDrawable;->startBackgroundAnimation()V
+HSPLandroid/graphics/drawable/RippleDrawable;->startBackgroundAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
 HSPLandroid/graphics/drawable/RippleDrawable;->tryRippleEnter()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateLocalState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateMaskShaderIfNeeded()V
-HSPLandroid/graphics/drawable/RippleDrawable;->updateRipplePaint()Landroid/graphics/Paint;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/RippleShader;Landroid/graphics/drawable/RippleShader;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/BitmapShader;Landroid/graphics/BitmapShader;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;
+HSPLandroid/graphics/drawable/RippleDrawable;->updateRipplePaint()Landroid/graphics/Paint;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BitmapShader;Landroid/graphics/BitmapShader;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/drawable/RippleShader;Landroid/graphics/drawable/RippleShader;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/RippleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RippleForeground$1;->onAnimationEnd(Landroid/animation/Animator;)V
@@ -7677,7 +7680,7 @@
 HSPLandroid/graphics/drawable/ShapeDrawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPaint()Landroid/graphics/Paint;
-HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;
 HSPLandroid/graphics/drawable/ShapeDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/ShapeDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
@@ -7687,7 +7690,7 @@
 HSPLandroid/graphics/drawable/ShapeDrawable;->setShape(Landroid/graphics/drawable/shapes/Shape;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->updateLocalState()V
-HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V
+HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/ShapeDrawable;Landroid/graphics/drawable/PaintDrawable;]Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/drawable/shapes/OvalShape;,Landroid/graphics/drawable/shapes/RoundRectShape;
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/graphics/drawable/StateListDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->canApplyTheme()Z
@@ -7736,23 +7739,23 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/lang/String;)I
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Landroid/content/res/GradientColor;Landroid/content/res/GradientColor;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Shader;Landroid/graphics/LinearGradient;]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmChangingConfigurations(Landroid/graphics/drawable/VectorDrawable$VGroup;)I
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmNativePtr(Landroid/graphics/drawable/VectorDrawable$VGroup;)J
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>()V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VObject;-><init>()V
 HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z
@@ -7762,13 +7765,13 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String;
 HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->-$$Nest$mcreateNativeTree(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I
@@ -7777,10 +7780,10 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V
 HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnAddChild(JJ)V
 HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnCreateFullPath()J
@@ -7807,7 +7810,7 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/VectorDrawable;->computeVectorSize()V
-HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
 HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
@@ -7818,13 +7821,13 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getPixelSize()F
 HSPLandroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object;
-HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;
-HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Stack;Ljava/util/Stack;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;
+HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
+HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/graphics/drawable/VectorDrawable$VClipPath;Landroid/graphics/drawable/VectorDrawable$VClipPath;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Stack;Ljava/util/Stack;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z
-HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z
-HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z
+HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V
@@ -7833,7 +7836,7 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V
-HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
 HSPLandroid/graphics/drawable/shapes/OvalShape;-><init>()V
 HSPLandroid/graphics/drawable/shapes/OvalShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/drawable/shapes/OvalShape;->getOutline(Landroid/graphics/Outline;)V
@@ -7916,7 +7919,7 @@
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(I)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(Z)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeLayout(Z)Landroid/graphics/text/MeasuredText$Builder;
-HSPLandroid/graphics/text/MeasuredText;->getCharWidthAt(I)F
+HSPLandroid/graphics/text/MeasuredText;->getCharWidthAt(I)F+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/graphics/text/MeasuredText;->getChars()[C
 HSPLandroid/graphics/text/MeasuredText;->getNativePtr()J
 HSPLandroid/hardware/Camera$CameraInfo;-><init>()V
@@ -7986,7 +7989,7 @@
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;-><init>(Landroid/hardware/SensorEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchAdditionalInfoEvent(III[F[I)V
-HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V+]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchSensorEvent(I[FIJ)V
@@ -8188,6 +8191,7 @@
 HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager;
 HSPLandroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()I
+HSPLandroid/hardware/display/DisplayManagerGlobal;->extraLogging()Z
 HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/content/res/Resources;)Landroid/view/Display;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/view/DisplayAdjustments;)Landroid/view/Display;
@@ -8202,6 +8206,7 @@
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->initExtraLogging()Z
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V
+HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;JLjava/lang/String;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerNativeChoreographerForRefreshRateCallbacks()V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->updateCallbackIfNeededLocked()V
@@ -8444,7 +8449,7 @@
 HSPLandroid/icu/impl/FormattedStringBuilder;->unwrapField(Ljava/lang/Object;)Ljava/text/Format$Field;
 HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->isIntOrGroup(Ljava/lang/Object;)Z
 HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z
-HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition;
 HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I
 HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I
 HSPLandroid/icu/impl/Grego;->fieldsToDay(III)J
@@ -8628,7 +8633,7 @@
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
-HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer;
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
@@ -8860,14 +8865,14 @@
 HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/StringSegment;-><init>(Ljava/lang/String;Z)V
 HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V
-HSPLandroid/icu/impl/StringSegment;->charAt(I)C
+HSPLandroid/icu/impl/StringSegment;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->codePointsEqual(IIZ)Z
-HSPLandroid/icu/impl/StringSegment;->getCodePoint()I
+HSPLandroid/icu/impl/StringSegment;->getCodePoint()I+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->getCommonPrefixLength(Ljava/lang/CharSequence;)I
 HSPLandroid/icu/impl/StringSegment;->getOffset()I
-HSPLandroid/icu/impl/StringSegment;->getPrefixLengthInternal(Ljava/lang/CharSequence;Z)I
+HSPLandroid/icu/impl/StringSegment;->getPrefixLengthInternal(Ljava/lang/CharSequence;Z)I+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/icu/impl/StringSegment;->length()I
-HSPLandroid/icu/impl/StringSegment;->startsWith(Landroid/icu/text/UnicodeSet;)Z
+HSPLandroid/icu/impl/StringSegment;->startsWith(Landroid/icu/text/UnicodeSet;)Z+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/StringSegment;->startsWith(Ljava/lang/CharSequence;)Z
 HSPLandroid/icu/impl/TextTrieMap$Node;-><init>(Landroid/icu/impl/TextTrieMap;)V
 HSPLandroid/icu/impl/TextTrieMap;-><init>(Z)V
@@ -8925,7 +8930,7 @@
 HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I
 HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I
 HSPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I
-HSPLandroid/icu/impl/UCaseProps;->fold(II)I
+HSPLandroid/icu/impl/UCaseProps;->fold(II)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16;
 HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I
 HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/util/Locale;)I
 HSPLandroid/icu/impl/UCaseProps;->getDelta(I)I
@@ -9215,11 +9220,11 @@
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->adjustMagnitude(I)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->appendDigit(BIZ)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->appendDigit(BIZ)V+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->applyMaxInteger(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->copyFrom(Landroid/icu/impl/number/DecimalQuantity;)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getLowerDisplayMagnitude()I
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getMagnitude()I
@@ -9242,8 +9247,8 @@
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToInt(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->signum()Landroid/icu/impl/number/Modifier$Signum;
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J
-HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>()V+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(D)V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(I)V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(J)V
@@ -9348,14 +9353,14 @@
 HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Landroid/icu/impl/number/parse/AffixMatcher;Landroid/icu/impl/number/parse/AffixMatcher;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher;-><init>(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)V
-HSPLandroid/icu/impl/number/parse/AffixMatcher;->createMatchers(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->createMatchers(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)V+]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->getInstance(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)Landroid/icu/impl/number/parse/AffixMatcher;
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->isInteresting(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->length(Landroid/icu/impl/number/parse/AffixPatternMatcher;)I
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->matched(Landroid/icu/impl/number/parse/AffixPatternMatcher;Ljava/lang/String;)Z
 HSPLandroid/icu/impl/number/parse/AffixMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
-HSPLandroid/icu/impl/number/parse/AffixMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z+]Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->consumeToken(I)V
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->equals(Ljava/lang/Object;)Z
@@ -9363,7 +9368,7 @@
 HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->getPattern()Ljava/lang/String;
 HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;-><init>()V
 HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;->minusSign()Landroid/icu/impl/number/parse/MinusSignMatcher;
-HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)V
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)V+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)Landroid/icu/impl/number/parse/DecimalMatcher;
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
 HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;I)Z
@@ -9384,7 +9389,7 @@
 HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parseGreedy(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;-><init>()V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->clear()V
-HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->postProcess()V
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->seenNumber()Z
 HSPLandroid/icu/impl/number/parse/ParsedNumber;->setCharsConsumed(Landroid/icu/impl/StringSegment;)V
@@ -9393,7 +9398,7 @@
 HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
 HSPLandroid/icu/impl/number/parse/RequireNumberValidator;-><init>()V
 HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
-HSPLandroid/icu/impl/number/parse/ScientificMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)Landroid/icu/impl/number/parse/ScientificMatcher;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->minusSignSet()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/number/parse/ScientificMatcher;->plusSignSet()Landroid/icu/text/UnicodeSet;
@@ -9421,7 +9426,7 @@
 HSPLandroid/icu/impl/number/range/StandardPluralRanges;->setCapacity(I)V
 HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I
 HSPLandroid/icu/lang/UCharacter;->digit(I)I
-HSPLandroid/icu/lang/UCharacter;->foldCase(II)I
+HSPLandroid/icu/lang/UCharacter;->foldCase(II)I+]Landroid/icu/impl/UCaseProps;Landroid/icu/impl/UCaseProps;
 HSPLandroid/icu/lang/UCharacter;->foldCase(IZ)I
 HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
 HSPLandroid/icu/lang/UCharacter;->getType(I)I
@@ -9453,7 +9458,7 @@
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffix(BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixImpl(Landroid/icu/impl/number/MicroPropsGenerator;BLandroid/icu/impl/FormattedStringBuilder;)I
 HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixStatic(Landroid/icu/impl/number/MacroProps;BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
-HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;
+HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;
 HSPLandroid/icu/number/NumberFormatterImpl;->preProcess(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/number/NumberFormatterImpl;->unitIsBaseUnit(Landroid/icu/util/MeasureUnit;)Z
@@ -9753,7 +9758,7 @@
 HSPLandroid/icu/text/DecimalFormat;->setParseStrictMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)V
 HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter;
-HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
@@ -11450,7 +11455,7 @@
 HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String;
-HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathSegmentsBuilder;Landroid/net/Uri$PathSegmentsBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart;
+HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;
 HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathSegments;-><init>([Ljava/lang/String;I)V
 HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;
@@ -11496,24 +11501,24 @@
 HSPLandroid/net/Uri;->compareTo(Ljava/lang/Object;)I
 HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z
 HSPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->getBooleanQueryParameter(Ljava/lang/String;Z)Z
-HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set;
+HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;+]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set;+]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Set;Ljava/util/LinkedHashSet;
 HSPLandroid/net/Uri;->hashCode()I
 HSPLandroid/net/Uri;->isAbsolute()Z
-HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z
+HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/net/Uri;->isOpaque()Z
 HSPLandroid/net/Uri;->normalizeScheme()Landroid/net/Uri;
 HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String;
 HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V
-HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
-HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;
 HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
 HSPLandroid/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C
 HSPLandroid/net/UriCodec;->hexCharToValue(C)I
@@ -11584,7 +11589,7 @@
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/BaseBundle;)V
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/BaseBundle;Z)V
 HSPLandroid/os/BaseBundle;-><init>(Landroid/os/Parcel;I)V
-HSPLandroid/os/BaseBundle;-><init>(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/os/BaseBundle;-><init>(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/os/Bundle;
 HSPLandroid/os/BaseBundle;->clear()V
 HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z
 HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object;
@@ -11620,7 +11625,7 @@
 HSPLandroid/os/BaseBundle;->isEmptyParcel()Z
 HSPLandroid/os/BaseBundle;->isEmptyParcel(Landroid/os/Parcel;)Z
 HSPLandroid/os/BaseBundle;->isParcelled()Z
-HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;
+HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;+]Landroid/os/BaseBundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V
 HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V
@@ -11647,8 +11652,8 @@
 HSPLandroid/os/BaseBundle;->size()I
 HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/Bundle;
 HSPLandroid/os/BaseBundle;->unparcel(Z)V
-HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
-HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/function/BiFunction;Landroid/os/Parcel$LazyValue;
+HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/BatteryManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Landroid/os/IBatteryPropertiesRegistrar;)V
 HSPLandroid/os/BatteryManager;->getIntProperty(I)I
 HSPLandroid/os/BatteryManager;->getLongProperty(I)J
@@ -11720,7 +11725,7 @@
 HSPLandroid/os/BinderProxy$ProxyMap;->remove(II)V
 HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V
 HSPLandroid/os/BinderProxy;-><init>(J)V
-HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap;
+HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
 HSPLandroid/os/BinderProxy;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V+]Ljava/util/List;Ljava/util/Collections$SynchronizedRandomAccessList;
 HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;
 HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V
@@ -11770,7 +11775,7 @@
 HSPLandroid/os/Bundle;->maybePrefillHasFds()V
 HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V
 HSPLandroid/os/Bundle;->putBinder(Ljava/lang/String;Landroid/os/IBinder;)V
-HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;
+HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V
 HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
 HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V
@@ -12164,12 +12169,12 @@
 HSPLandroid/os/IpcDataCache;->query(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/os/LocaleList$1;Landroid/os/LocaleList$1;
-HSPLandroid/os/LocaleList;-><init>([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/os/LocaleList;-><init>([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Locale;Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->computeFirstMatch(Ljava/util/Collection;Z)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->computeFirstMatchIndex(Ljava/util/Collection;Z)I
 HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z
 HSPLandroid/os/LocaleList;->findFirstMatchIndex(Ljava/util/Locale;)I
-HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList;+]Ljava/lang/Object;Ljava/util/Locale;
@@ -12247,7 +12252,7 @@
 HSPLandroid/os/MessageQueue;->finalize()V
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
-HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/MessageQueue$IdleHandler;Landroid/app/ActivityThread$PurgeIdler;,Landroid/app/ActivityThread$Idler;]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue$IdleHandler;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/os/MessageQueue;->postSyncBarrier()I
 HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I+]Landroid/os/Message;Landroid/os/Message;
 HSPLandroid/os/MessageQueue;->quit(Z)V
@@ -12271,9 +12276,9 @@
 HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V
 HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/Parcel$2;-><init>(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;
+HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;
 HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILjava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/os/Parcel$LazyValue;->writeToParcel(Landroid/os/Parcel;)V
 HSPLandroid/os/Parcel$ReadWriteHelper;->readString16(Landroid/os/Parcel;)Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12296,11 +12301,11 @@
 HSPLandroid/os/Parcel;->createIntArray()[I+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->createLongArray()[J
 HSPLandroid/os/Parcel;->createString16Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;
+HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->createStringArray()[Ljava/lang/String;
 HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList;
-HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;Landroid/view/InsetsSourceControl$1;,Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;missing_types
+HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->dataAvail()I
 HSPLandroid/os/Parcel;->dataPosition()I
 HSPLandroid/os/Parcel;->dataSize()I
@@ -12332,7 +12337,7 @@
 HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;)I
 HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;
+HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLandroid/os/Parcel;->readBinderList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->readBlob()[B
 HSPLandroid/os/Parcel;->readBoolean()Z+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12370,16 +12375,16 @@
 HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/os/Parcel;->readParcelableArrayInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
-HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types
 HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List;
 HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;
-HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle;
 HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;
 HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor;
 HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable;
-HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;
 HSPLandroid/os/Parcel;->readSize()Landroid/util/Size;
 HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;
 HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/util/SparseArray;
@@ -12399,11 +12404,11 @@
 HSPLandroid/os/Parcel;->readStrongBinder()Landroid/os/IBinder;
 HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V
-HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;megamorphic_types
 HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;
-HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;
-HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->recycle()V
 HSPLandroid/os/Parcel;->resetSqaushingState()V
 HSPLandroid/os/Parcel;->restoreAllowFds(Z)V
@@ -12413,7 +12418,7 @@
 HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V
 HSPLandroid/os/Parcel;->unmarshall([BII)V
 HSPLandroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V
-HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V
 HSPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->writeBlob([B)V
@@ -12432,19 +12437,19 @@
 HSPLandroid/os/Parcel;->writeInt(I)V
 HSPLandroid/os/Parcel;->writeIntArray([I)V
 HSPLandroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V
-HSPLandroid/os/Parcel;->writeList(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeList(Ljava/util/List;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->writeLong(J)V
 HSPLandroid/os/Parcel;->writeLongArray([J)V
 HSPLandroid/os/Parcel;->writeMap(Ljava/util/Map;)V
 HSPLandroid/os/Parcel;->writeMapInternal(Ljava/util/Map;)V
 HSPLandroid/os/Parcel;->writeNoException()V
-HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;missing_types]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable;missing_types
 HSPLandroid/os/Parcel;->writeParcelableArray([Landroid/os/Parcelable;I)V
-HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
 HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V
 HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V
-HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/os/Parcel;->writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V
 HSPLandroid/os/Parcel;->writeSparseIntArray(Landroid/util/SparseIntArray;)V
 HSPLandroid/os/Parcel;->writeString(Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -12462,8 +12467,8 @@
 HSPLandroid/os/Parcel;->writeTypedArrayMap(Landroid/util/ArrayMap;I)V
 HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;)V
 HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V
-HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;Landroid/os/Bundle;,Landroid/view/SurfaceControl$Transaction;,Landroid/app/FragmentState;,Landroid/content/Intent;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable;Landroid/app/FragmentState;,Landroid/content/Intent;,Landroid/os/Bundle;,Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -12653,7 +12658,7 @@
 HSPLandroid/os/ServiceManager;->getServiceOrThrow(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V
 HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z
-HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;]Landroid/os/IServiceManager;Landroid/os/ServiceManagerProxy;
+HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;+]Landroid/os/IServiceManager;Landroid/os/ServiceManagerProxy;]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
 HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
 HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder;
@@ -12889,7 +12894,7 @@
 HSPLandroid/os/Trace;->asyncTraceForTrackBegin(JLjava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/os/Trace;->asyncTraceForTrackEnd(JLjava/lang/String;I)V
 HSPLandroid/os/Trace;->beginAsyncSection(Ljava/lang/String;I)V
-HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V
+HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/os/Trace;->endAsyncSection(Ljava/lang/String;I)V
 HSPLandroid/os/Trace;->endSection()V
 HSPLandroid/os/Trace;->instant(JLjava/lang/String;)V
@@ -13216,7 +13221,7 @@
 HSPLandroid/provider/Settings$Config;->checkCallingOrSelfPermission(Ljava/lang/String;)I
 HSPLandroid/provider/Settings$Config;->createCompositeName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Config;->createNamespaceUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Config;->getContentResolver()Landroid/content/ContentResolver;
 HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;
 HSPLandroid/provider/Settings$Config;->getStrings(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;
@@ -13241,7 +13246,7 @@
 HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
 HSPLandroid/provider/Settings$NameValueCache$$ExternalSyntheticLambda0;-><init>(Landroid/provider/Settings$NameValueCache;)V
 HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefixStripPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/Arrays$ArrayItr;]Landroid/net/Uri;Landroid/net/Uri$StringUri;
+HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefixStripPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/content/IContentProvider;Landroid/content/ContentProvider$Transport;,Landroid/content/ContentProviderProxy;]Landroid/net/Uri;Landroid/net/Uri$StringUri;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/Arrays$ArrayItr;,Ljava/util/HashMap$EntryIterator;]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLandroid/provider/Settings$NameValueCache;->isCallerExemptFromReadableRestriction()Z
 HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
 HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
@@ -14234,7 +14239,7 @@
 HSPLandroid/telephony/SignalStrength;->getLevel()I
 HSPLandroid/telephony/SignalStrength;->getPrimary()Landroid/telephony/CellSignalStrength;
 HSPLandroid/telephony/SignalStrength;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SubscriptionInfo;+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/telephony/SubscriptionInfo$Builder;Landroid/telephony/SubscriptionInfo$Builder;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SubscriptionInfo;+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/telephony/SubscriptionInfo$Builder;Landroid/telephony/SubscriptionInfo$Builder;
 HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/telephony/SubscriptionInfo$Builder;->-$$Nest$fgetmAreUiccApplicationsEnabled(Landroid/telephony/SubscriptionInfo$Builder;)Z
 HSPLandroid/telephony/SubscriptionInfo$Builder;->-$$Nest$fgetmCardId(Landroid/telephony/SubscriptionInfo$Builder;)I
@@ -14539,7 +14544,7 @@
 HSPLandroid/telephony/data/ApnSetting;->getApnTypeBitmask()I
 HSPLandroid/telephony/data/ApnSetting;->getApnTypesStringFromBitmask(I)Ljava/lang/String;
 HSPLandroid/telephony/data/ApnSetting;->portToString(I)Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->toString()Ljava/lang/String;
+HSPLandroid/telephony/data/ApnSetting;->toString()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Landroid/util/ArrayMap;
 HSPLandroid/telephony/euicc/EuiccManager;->getIEuiccController()Lcom/android/internal/telephony/euicc/IEuiccController;
 HSPLandroid/telephony/euicc/EuiccManager;->isEnabled()Z
 HSPLandroid/telephony/ims/ImsMmTelManager;->createForSubscriptionId(I)Landroid/telephony/ims/ImsMmTelManager;
@@ -14588,7 +14593,7 @@
 HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/CharSequence;
 HSPLandroid/text/BoringLayout$Metrics;->-$$Nest$mreset(Landroid/text/BoringLayout$Metrics;)V
 HSPLandroid/text/BoringLayout$Metrics;-><init>()V
-HSPLandroid/text/BoringLayout$Metrics;->reset()V
+HSPLandroid/text/BoringLayout$Metrics;->reset()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V
@@ -14669,7 +14674,7 @@
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;I)Landroid/text/Spanned;
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;ILandroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;
 HSPLandroid/text/HtmlToSpannedConverter;-><init>(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;Lorg/ccil/cowan/tagsoup/Parser;I)V
-HSPLandroid/text/HtmlToSpannedConverter;->characters([CII)V
+HSPLandroid/text/HtmlToSpannedConverter;->characters([CII)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/HtmlToSpannedConverter;->convert()Landroid/text/Spanned;
 HSPLandroid/text/HtmlToSpannedConverter;->end(Landroid/text/Editable;Ljava/lang/Class;Ljava/lang/Object;)V
 HSPLandroid/text/HtmlToSpannedConverter;->endA(Landroid/text/Editable;)V
@@ -14678,8 +14683,8 @@
 HSPLandroid/text/HtmlToSpannedConverter;->endPrefixMapping(Ljava/lang/String;)V
 HSPLandroid/text/HtmlToSpannedConverter;->getLast(Landroid/text/Spanned;Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/text/HtmlToSpannedConverter;->handleBr(Landroid/text/Editable;)V
-HSPLandroid/text/HtmlToSpannedConverter;->handleEndTag(Ljava/lang/String;)V
-HSPLandroid/text/HtmlToSpannedConverter;->handleStartTag(Ljava/lang/String;Lorg/xml/sax/Attributes;)V
+HSPLandroid/text/HtmlToSpannedConverter;->handleEndTag(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLandroid/text/HtmlToSpannedConverter;->handleStartTag(Ljava/lang/String;Lorg/xml/sax/Attributes;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/text/HtmlToSpannedConverter;->setDocumentLocator(Lorg/xml/sax/Locator;)V
 HSPLandroid/text/HtmlToSpannedConverter;->setSpanFromMark(Landroid/text/Spannable;Ljava/lang/Object;[Ljava/lang/Object;)V
 HSPLandroid/text/HtmlToSpannedConverter;->start(Landroid/text/Editable;Ljava/lang/Object;)V
@@ -14697,7 +14702,7 @@
 HSPLandroid/text/Layout$Directions;->isRunRtl(I)Z
 HSPLandroid/text/Layout$Ellipsizer;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/Layout$Ellipsizer;->charAt(I)C
-HSPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V
+HSPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V+]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout$Ellipsizer;->length()I
 HSPLandroid/text/Layout$HorizontalMeasurementProvider;->init()V
 HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanEnd(Ljava/lang/Object;)I
@@ -14711,7 +14716,7 @@
 HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V
-HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/Spanned;Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;
 HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V
 HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V
 HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V
@@ -14727,13 +14732,13 @@
 HSPLandroid/text/Layout;->getLineBottom(I)I
 HSPLandroid/text/Layout;->getLineBottom(IZ)I
 HSPLandroid/text/Layout;->getLineEnd(I)I
-HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F
+HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/Layout;->getLineExtent(IZ)F
-HSPLandroid/text/Layout;->getLineForOffset(I)I
+HSPLandroid/text/Layout;->getLineForOffset(I)I+]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout;->getLineForVertical(I)I+]Landroid/text/Layout;Landroid/text/BoringLayout;
 HSPLandroid/text/Layout;->getLineLeft(I)F
 HSPLandroid/text/Layout;->getLineMax(I)F
-HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J
+HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J+]Landroid/graphics/Canvas;missing_types]Landroid/text/Layout;Landroid/text/StaticLayout;
 HSPLandroid/text/Layout;->getLineRight(I)F
 HSPLandroid/text/Layout;->getLineStartPos(III)I
 HSPLandroid/text/Layout;->getLineVisibleEnd(I)I
@@ -14765,7 +14770,7 @@
 HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V
 HSPLandroid/text/Layout;->shouldClampCursor(I)Z
 HSPLandroid/text/MeasuredParagraph;-><init>()V
-HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;[Landroid/text/style/MetricAffectingSpan;[Landroid/text/style/LineBreakConfigSpan;IILandroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V+]Landroid/text/style/MetricAffectingSpan;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/text/LineBreakConfig$Builder;Landroid/graphics/text/LineBreakConfig$Builder;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;
+HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;[Landroid/text/style/MetricAffectingSpan;[Landroid/text/style/LineBreakConfigSpan;IILandroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V+]Landroid/graphics/text/LineBreakConfig$Builder;Landroid/graphics/text/LineBreakConfig$Builder;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/style/MetricAffectingSpan;missing_types
 HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I
 HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
 HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
@@ -14962,7 +14967,7 @@
 HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;
 HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder;
 HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V
-HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;
+HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/text/StaticLayout;->getBottomPadding()I
 HSPLandroid/text/StaticLayout;->getEllipsisCount(I)I
 HSPLandroid/text/StaticLayout;->getEllipsisStart(I)I
@@ -14986,7 +14991,7 @@
 HSPLandroid/text/StaticLayout;->unpackEndHyphenEdit(I)I
 HSPLandroid/text/StaticLayout;->unpackStartHyphenEdit(I)I
 HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I
-HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z
+HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z+]Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;Landroid/text/TextDirectionHeuristics$FirstStrong;]Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII)Z
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z
@@ -15003,9 +15008,9 @@
 HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
 HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
 HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z
-HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
+HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
-HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
+HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/text/TextLine;->getOffsetBeforeAfter(IIIZIZ)I
 HSPLandroid/text/TextLine;->getOffsetToLeftRightOf(IZ)I
 HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
@@ -15039,9 +15044,9 @@
 HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I
-HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V
+HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V+]Landroid/text/GetChars;Landroid/text/Layout$Ellipsizer;,Landroid/text/Layout$SpannedEllipsizer;,Landroid/text/SpannableString;]Ljava/lang/Object;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/text/TextUtils;->getEllipsisString(Landroid/text/TextUtils$TruncateAt;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I
 HSPLandroid/text/TextUtils;->getTrimmedLength(Ljava/lang/CharSequence;)I
@@ -15051,7 +15056,7 @@
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I
 HSPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z
-HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
+HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Landroid/text/SpannableStringBuilder;,Ljava/lang/String;
 HSPLandroid/text/TextUtils;->isGraphic(Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;
@@ -15265,7 +15270,7 @@
 HSPLandroid/transition/Transition$2;->onAnimationStart(Landroid/animation/Animator;)V
 HSPLandroid/transition/Transition$3;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/transition/Transition;-><init>()V
-HSPLandroid/transition/Transition;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Ljava/lang/Object;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/transition/Transition;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;megamorphic_types
 HSPLandroid/transition/Transition;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;
 HSPLandroid/transition/Transition;->addTarget(Landroid/view/View;)Landroid/transition/Transition;
 HSPLandroid/transition/Transition;->addUnmatched(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
@@ -15296,7 +15301,7 @@
 HSPLandroid/transition/Transition;->start()V
 HSPLandroid/transition/TransitionInflater;-><init>(Landroid/content/Context;)V
 HSPLandroid/transition/TransitionInflater;->createCustom(Landroid/util/AttributeSet;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
-HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater;
 HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition;
 HSPLandroid/transition/TransitionListenerAdapter;-><init>()V
@@ -15404,7 +15409,7 @@
 HSPLandroid/util/ArraySet;->addAll(Landroid/util/ArraySet;)V
 HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z
 HSPLandroid/util/ArraySet;->allocArrays(I)V
-HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V
+HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Object;Landroid/app/PendingIntent;,Lcom/android/org/conscrypt/OpenSSLRSAPublicKey;
 HSPLandroid/util/ArraySet;->binarySearch([II)I
 HSPLandroid/util/ArraySet;->clear()V
 HSPLandroid/util/ArraySet;->contains(Ljava/lang/Object;)Z
@@ -15442,11 +15447,11 @@
 HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z
 HSPLandroid/util/Base64$Encoder;-><init>(I[B)V
 HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z
-HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B
+HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B+]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/util/Base64;->decode([BI)[B
-HSPLandroid/util/Base64;->decode([BIII)[B
+HSPLandroid/util/Base64;->decode([BIII)[B+]Landroid/util/Base64$Decoder;Landroid/util/Base64$Decoder;
 HSPLandroid/util/Base64;->encode([BI)[B
-HSPLandroid/util/Base64;->encode([BIII)[B
+HSPLandroid/util/Base64;->encode([BIII)[B+]Landroid/util/Base64$Encoder;Landroid/util/Base64$Encoder;
 HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String;
 HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String;
 HSPLandroid/util/CloseGuard;-><init>()V
@@ -15599,7 +15604,7 @@
 HSPLandroid/util/LongSparseArray;->clear()V
 HSPLandroid/util/LongSparseArray;->delete(J)V
 HSPLandroid/util/LongSparseArray;->gc()V
-HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object;
+HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLandroid/util/LongSparseArray;->get(JLjava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/LongSparseArray;->indexOfKey(J)I
 HSPLandroid/util/LongSparseArray;->keyAt(I)J
@@ -15767,7 +15772,7 @@
 HSPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I
 HSPLandroid/util/SparseArray;->keyAt(I)I
 HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V
-HSPLandroid/util/SparseArray;->remove(I)V
+HSPLandroid/util/SparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/util/SparseArray;->removeAt(I)V
 HSPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object;
 HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V
@@ -15945,8 +15950,8 @@
 HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer$CallbackRecord;-><init>()V
 HSPLandroid/view/Choreographer$CallbackRecord;-><init>(Landroid/view/Choreographer$CallbackRecord-IA;)V
-HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;Landroid/view/ViewPropertyAnimator$1;,Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;,Lcom/android/internal/util/function/pooled/PooledLambdaImpl;,Landroid/view/ViewRootImpl$TraversalRunnable;
-HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;
+HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;Landroid/view/ViewPropertyAnimator$1;,Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;,Landroid/view/ViewRootImpl$TraversalRunnable;,Lcom/android/internal/util/function/pooled/PooledLambdaImpl;
+HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;
 HSPLandroid/view/Choreographer$FrameData;->-$$Nest$fgetmFrameTimeNanos(Landroid/view/Choreographer$FrameData;)J
 HSPLandroid/view/Choreographer$FrameData;-><init>()V
 HSPLandroid/view/Choreographer$FrameData;->allocateFrameTimelines(I)V
@@ -15959,7 +15964,7 @@
 HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver$VsyncEventData;)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/Choreographer$FrameTimeline;Landroid/view/Choreographer$FrameTimeline;
 HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver;J)Landroid/view/Choreographer$FrameTimeline;
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;IJ)V
-HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;
+HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer$FrameHandler;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;)V
 HSPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V
@@ -15977,8 +15982,8 @@
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;I)V
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;IJ)V
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;ILandroid/view/Choreographer-IA;)V
-HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;
-HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;
+HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;
+HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/Choreographer;->doScheduleCallback(I)V
 HSPLandroid/view/Choreographer;->doScheduleVsync()V
 HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J
@@ -15993,7 +15998,7 @@
 HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord;
 HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V
-HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;
+HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;
 HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V
 HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V
@@ -16013,7 +16018,7 @@
 HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources;
 HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;+]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper;
-HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V
+HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper;
 HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V
 HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V
 HSPLandroid/view/CrossWindowBlurListeners;-><clinit>()V
@@ -16097,7 +16102,7 @@
 HSPLandroid/view/DisplayCutout$Bounds;->getRects()[Landroid/graphics/Rect;
 HSPLandroid/view/DisplayCutout$Bounds;->isEmpty()Z
 HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;-><init>(IIIIFLjava/lang/String;IFF)V
-HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/view/DisplayCutout$CutoutPathParserInfo;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayCutout$ParcelableWrapper;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;-><init>()V
@@ -16151,12 +16156,12 @@
 HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V
 HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
 HSPLandroid/view/DisplayInfo;->getMaxBoundsMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
-HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V
+HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode;
 HSPLandroid/view/DisplayInfo;->getRefreshRate()F
 HSPLandroid/view/DisplayInfo;->hasAccess(I)Z
 HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z
-HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;
 HSPLandroid/view/DisplayInfo;->toString()Ljava/lang/String;
 HSPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/DisplayShape$1;-><init>()V
@@ -16187,7 +16192,7 @@
 HSPLandroid/view/FrameMetrics;->getMetric(I)J
 HSPLandroid/view/FrameMetricsObserver;-><init>(Landroid/view/Window;Landroid/os/Handler;Landroid/view/Window$OnFrameMetricsAvailableListener;)V
 HSPLandroid/view/FrameMetricsObserver;->getRendererObserver()Landroid/graphics/HardwareRendererObserver;
-HSPLandroid/view/FrameMetricsObserver;->onFrameMetricsAvailable(I)V
+HSPLandroid/view/FrameMetricsObserver;->onFrameMetricsAvailable(I)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;)V
 HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;Landroid/os/Handler;)V
 HSPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V
@@ -16288,7 +16293,7 @@
 HSPLandroid/view/ImeFocusController;->onPreWindowFocus(ZLandroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ImeFocusController;->onProcessImeInputStage(Ljava/lang/Object;Landroid/view/InputEvent;Landroid/view/WindowManager$LayoutParams;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;)I
 HSPLandroid/view/ImeFocusController;->onTraversal(ZLandroid/view/WindowManager$LayoutParams;)V
-HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V
+HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V+]Landroid/view/ImeFocusController$InputMethodManagerDelegate;Landroid/view/inputmethod/InputMethodManager$DelegateImpl;
 HSPLandroid/view/ImeFocusController;->onViewFocusChanged(Landroid/view/View;Z)V
 HSPLandroid/view/ImeFocusController;->onWindowDismissed()V
 HSPLandroid/view/ImeInsetsSourceConsumer;-><init>(ILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V
@@ -16332,7 +16337,7 @@
 HSPLandroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z
 HSPLandroid/view/InputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
 HSPLandroid/view/InputEventReceiver;->consumeBatchedInputEvents(J)Z
-HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/InputEventReceiver;->dispose()V
 HSPLandroid/view/InputEventReceiver;->dispose(Z)V
 HSPLandroid/view/InputEventReceiver;->finalize()V
@@ -16451,7 +16456,7 @@
 HSPLandroid/view/InsetsController;->notifyControlRevoked(Landroid/view/InsetsSourceConsumer;)V
 HSPLandroid/view/InsetsController;->notifyFinished(Landroid/view/InsetsAnimationControlRunner;Z)V
 HSPLandroid/view/InsetsController;->notifyVisibilityChanged()V
-HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/ImeInsetsSourceConsumer;,Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/InsetsController;->onFrameChanged(Landroid/graphics/Rect;)V
 HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z
 HSPLandroid/view/InsetsController;->onWindowFocusGained(Z)V
@@ -16467,13 +16472,13 @@
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/InsetsSource$1;Landroid/view/InsetsSource$1;
 HSPLandroid/view/InsetsSource;-><init>(II)V
-HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;
 HSPLandroid/view/InsetsSource;-><init>(Landroid/view/InsetsSource;)V
-HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
 HSPLandroid/view/InsetsSource;->calculateVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Insets;
 HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Ljava/lang/Object;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Ljava/lang/Object;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource;->getFlags()I
 HSPLandroid/view/InsetsSource;->getFrame()Landroid/graphics/Rect;
 HSPLandroid/view/InsetsSource;->getId()I
@@ -16534,9 +16539,9 @@
 HSPLandroid/view/InsetsState;->calculateRelativeDisplayShape(Landroid/graphics/Rect;)Landroid/view/DisplayShape;
 HSPLandroid/view/InsetsState;->calculateRelativePrivacyIndicatorBounds(Landroid/graphics/Rect;)Landroid/view/PrivacyIndicatorBounds;
 HSPLandroid/view/InsetsState;->calculateRelativeRoundedCorners(Landroid/graphics/Rect;)Landroid/view/RoundedCorners;
-HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;IIII)Landroid/graphics/Insets;
-HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->clearsCompatInsets(IIII)Z
 HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z
@@ -16548,9 +16553,9 @@
 HSPLandroid/view/InsetsState;->getRoundedCorners()Landroid/view/RoundedCorners;
 HSPLandroid/view/InsetsState;->isSourceOrDefaultVisible(II)Z
 HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource;
-HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;I)V
-HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;
+HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
 HSPLandroid/view/InsetsState;->setDisplayCutout(Landroid/view/DisplayCutout;)V
 HSPLandroid/view/InsetsState;->setDisplayFrame(Landroid/graphics/Rect;)V
 HSPLandroid/view/InsetsState;->setPrivacyIndicatorBounds(Landroid/view/PrivacyIndicatorBounds;)V
@@ -16609,28 +16614,28 @@
 HSPLandroid/view/LayoutInflater;-><init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V
 HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
+HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/content/Context;missing_types]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
-HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/Object;Ljava/lang/String;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
 HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
 HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context;
 HSPLandroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory;
 HSPLandroid/view/LayoutInflater;->getFactory2()Landroid/view/LayoutInflater$Factory2;
 HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
-HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/View;missing_types]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;
+HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V
-HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Ljava/lang/Object;Ljava/lang/String;
-HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V
+HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
+HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/View;missing_types
 HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V
 HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater$Factory2;missing_types]Ljava/lang/Object;Ljava/lang/String;
-HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z
+HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z+]Landroid/content/Context;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
 HSPLandroid/view/MenuInflater;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/MotionEvent$PointerCoords;-><init>()V
 HSPLandroid/view/MotionEvent$PointerProperties;-><init>()V
@@ -17033,15 +17038,15 @@
 HSPLandroid/view/View$TransformationInfo;-><init>()V
 HSPLandroid/view/View$UnsetPressedState;->run()V
 HSPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/view/View;-><init>(Landroid/content/Context;)V+]Landroid/view/View;missing_types]Ljava/lang/Object;missing_types]Landroid/content/Context;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLandroid/view/View;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V
 HSPLandroid/view/View;->addFrameMetricsListener(Landroid/view/Window;Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V
 HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V
-HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
+HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V
 HSPLandroid/view/View;->appendId(Ljava/lang/StringBuilder;)V
@@ -17052,7 +17057,7 @@
 HSPLandroid/view/View;->areDrawablesResolved()Z
 HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V
 HSPLandroid/view/View;->awakenScrollBars()Z
-HSPLandroid/view/View;->awakenScrollBars(IZ)Z
+HSPLandroid/view/View;->awakenScrollBars(IZ)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->bringToFront()V
 HSPLandroid/view/View;->buildDrawingCache(Z)V
 HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V
@@ -17060,10 +17065,10 @@
 HSPLandroid/view/View;->calculateAccessibilityDataSensitive()V
 HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z
 HSPLandroid/view/View;->canHaveDisplayList()Z
-HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z
+HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->canReceivePointerEvents()Z
-HSPLandroid/view/View;->canResolveLayoutDirection()Z
-HSPLandroid/view/View;->canResolveTextDirection()Z
+HSPLandroid/view/View;->canResolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->canResolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->canScrollHorizontally(I)Z
 HSPLandroid/view/View;->canScrollVertically(I)Z
 HSPLandroid/view/View;->canTakeFocus()Z
@@ -17072,8 +17077,8 @@
 HSPLandroid/view/View;->cancelPendingInputEvents()V
 HSPLandroid/view/View;->checkForLongClick(JFFI)V
 HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z
-HSPLandroid/view/View;->cleanupDraw()V
-HSPLandroid/view/View;->clearAccessibilityFocus()V
+HSPLandroid/view/View;->cleanupDraw()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/View;->clearAccessibilityFocus()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V
 HSPLandroid/view/View;->clearAccessibilityThrottles()V
 HSPLandroid/view/View;->clearAnimation()V
@@ -17096,15 +17101,15 @@
 HSPLandroid/view/View;->computeVerticalScrollExtent()I
 HSPLandroid/view/View;->computeVerticalScrollOffset()I
 HSPLandroid/view/View;->computeVerticalScrollRange()I
-HSPLandroid/view/View;->damageInParent()V
+HSPLandroid/view/View;->damageInParent()V+]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->destroyDrawingCache()V
 HSPLandroid/view/View;->destroyHardwareResources()V
-HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
-HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;
+HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/View;missing_types]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/view/View;->dispatchCancelPendingInputEvents()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/List;Ljava/util/Collections$EmptyList;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V
 HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V
@@ -17135,12 +17140,12 @@
 HSPLandroid/view/View;->dispatchWindowSystemUiVisiblityChanged(I)V
 HSPLandroid/view/View;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types
-HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/view/View;missing_types]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/AnimationSet;,Landroid/view/animation/RotateAnimation;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V
-HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->drawDefaultFocusHighlight(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->drawableHotspotChanged(FF)V
-HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
 HSPLandroid/view/View;->ensureTransformationInfo()V
 HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View;
@@ -17185,8 +17190,8 @@
 HSPLandroid/view/View;->getContext()Landroid/content/Context;
 HSPLandroid/view/View;->getDefaultSize(II)I
 HSPLandroid/view/View;->getDisplay()Landroid/view/Display;
-HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Ljava/lang/Object;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->getDrawableState()[I
+HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/drawable/Drawable;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
+HSPLandroid/view/View;->getDrawableState()[I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getDrawingCache(Z)Landroid/graphics/Bitmap;
 HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getDrawingTime()J
@@ -17215,7 +17220,7 @@
 HSPLandroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix;
 HSPLandroid/view/View;->getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;
 HSPLandroid/view/View;->getLayerType()I
-HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/view/View;->getLeft()I
 HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo;
@@ -17236,9 +17241,9 @@
 HSPLandroid/view/View;->getOverScrollMode()I
 HSPLandroid/view/View;->getPaddingBottom()I
 HSPLandroid/view/View;->getPaddingEnd()I
-HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;
+HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getPaddingRight()I
-HSPLandroid/view/View;->getPaddingStart()I
+HSPLandroid/view/View;->getPaddingStart()I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->getPaddingTop()I
 HSPLandroid/view/View;->getParent()Landroid/view/ViewParent;
 HSPLandroid/view/View;->getPivotX()F
@@ -17262,9 +17267,9 @@
 HSPLandroid/view/View;->getScrollY()I
 HSPLandroid/view/View;->getSolidColor()I
 HSPLandroid/view/View;->getStateListAnimator()Landroid/animation/StateListAnimator;
-HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
-HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List;
 HSPLandroid/view/View;->getSystemUiVisibility()I
 HSPLandroid/view/View;->getTag()Ljava/lang/Object;
@@ -17279,7 +17284,7 @@
 HSPLandroid/view/View;->getTranslationY()F
 HSPLandroid/view/View;->getTranslationZ()F
 HSPLandroid/view/View;->getVerticalFadingEdgeLength()I
-HSPLandroid/view/View;->getVerticalScrollbarWidth()I
+HSPLandroid/view/View;->getVerticalScrollbarWidth()I+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;
 HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->getViewTranslationCallback()Landroid/view/translation/ViewTranslationCallback;
 HSPLandroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver;
@@ -17291,7 +17296,7 @@
 HSPLandroid/view/View;->getWindowSystemUiVisibility()I
 HSPLandroid/view/View;->getWindowToken()Landroid/os/IBinder;
 HSPLandroid/view/View;->getWindowVisibility()I
-HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V
+HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->getX()F
 HSPLandroid/view/View;->getY()F
 HSPLandroid/view/View;->getZ()F
@@ -17309,7 +17314,7 @@
 HSPLandroid/view/View;->hasNestedScrollingParent()Z
 HSPLandroid/view/View;->hasOnClickListeners()Z
 HSPLandroid/view/View;->hasOverlappingRendering()Z
-HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/Context;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
 HSPLandroid/view/View;->hasSize()Z
 HSPLandroid/view/View;->hasTransientState()Z
 HSPLandroid/view/View;->hasTranslationTransientState()Z
@@ -17322,7 +17327,7 @@
 HSPLandroid/view/View;->includeForAccessibility(Z)Z
 HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
 HSPLandroid/view/View;->initScrollCache()V
-HSPLandroid/view/View;->initialAwakenScrollBars()Z
+HSPLandroid/view/View;->initialAwakenScrollBars()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->initializeFadingEdgeInternal(Landroid/content/res/TypedArray;)V
 HSPLandroid/view/View;->initializeScrollIndicatorsInternal()V
 HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V
@@ -17331,13 +17336,13 @@
 HSPLandroid/view/View;->invalidate(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->invalidate(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->invalidate(Z)V+]Landroid/view/View;missing_types
-HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types
-HSPLandroid/view/View;->invalidateOutline()V
+HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
+HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->invalidateOutline()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->invalidateParentCaches()V
 HSPLandroid/view/View;->invalidateParentIfNeeded()V
 HSPLandroid/view/View;->invalidateParentIfNeededAndWasQuickRejected()V
-HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->isAccessibilityFocused()Z
 HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z
 HSPLandroid/view/View;->isAccessibilityPane()Z
@@ -17346,7 +17351,7 @@
 HSPLandroid/view/View;->isAggregatedVisible()Z
 HSPLandroid/view/View;->isAttachedToWindow()Z
 HSPLandroid/view/View;->isAutoHandwritingEnabled()Z
-HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/View;->isAutofilled()Z
 HSPLandroid/view/View;->isClickable()Z
 HSPLandroid/view/View;->isContextClickable()Z
@@ -17364,7 +17369,7 @@
 HSPLandroid/view/View;->isHorizontalFadingEdgeEnabled()Z
 HSPLandroid/view/View;->isHorizontalScrollBarEnabled()Z
 HSPLandroid/view/View;->isImportantForAccessibility()Z
-HSPLandroid/view/View;->isImportantForAutofill()Z
+HSPLandroid/view/View;->isImportantForAutofill()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->isImportantForContentCapture()Z
 HSPLandroid/view/View;->isInEditMode()Z
 HSPLandroid/view/View;->isInLayout()Z
@@ -17385,7 +17390,7 @@
 HSPLandroid/view/View;->isPressed()Z
 HSPLandroid/view/View;->isProjectionReceiver()Z
 HSPLandroid/view/View;->isRootNamespace()Z
-HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/content/Context;missing_types
+HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/content/Context;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/View;->isSelected()Z
 HSPLandroid/view/View;->isShowingLayoutBounds()Z
 HSPLandroid/view/View;->isShown()Z
@@ -17407,24 +17412,24 @@
 HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V
 HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V
 HSPLandroid/view/View;->mapRectFromViewToWindowCoords(Landroid/graphics/RectF;Z)V
-HSPLandroid/view/View;->measure(II)V+]Landroid/view/View;missing_types]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
+HSPLandroid/view/View;->measure(II)V+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->mergeDrawableStates([I[I)[I
 HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V
 HSPLandroid/view/View;->needRtlPropertiesResolution()Z
 HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V
 HSPLandroid/view/View;->notifyAutofillManagerOnClick()V
-HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V
+HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V
 HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedByParentIfNeeded()V
-HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V
-HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V
+HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
+HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
 HSPLandroid/view/View;->offsetLeftAndRight(I)V
 HSPLandroid/view/View;->offsetTopAndBottom(I)V
 HSPLandroid/view/View;->onAnimationEnd()V
 HSPLandroid/view/View;->onAnimationStart()V
 HSPLandroid/view/View;->onApplyFrameworkOptionalFitSystemWindows(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
-HSPLandroid/view/View;->onAttachedToWindow()V
+HSPLandroid/view/View;->onAttachedToWindow()V+]Landroid/view/View;missing_types]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;
 HSPLandroid/view/View;->onCancelPendingInputEvents()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onCheckIsTextEditor()Z
 HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V
@@ -17432,7 +17437,7 @@
 HSPLandroid/view/View;->onCreateDrawableState(I)[I+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
 HSPLandroid/view/View;->onDetachedFromWindow()V
-HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;
 HSPLandroid/view/View;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
@@ -17458,14 +17463,14 @@
 HSPLandroid/view/View;->onRtlPropertiesChanged(I)V
 HSPLandroid/view/View;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/view/View;->onScreenStateChanged(I)V
-HSPLandroid/view/View;->onScrollChanged(IIII)V
+HSPLandroid/view/View;->onScrollChanged(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->onSetAlpha(I)Z
 HSPLandroid/view/View;->onSizeChanged(IIII)V
 HSPLandroid/view/View;->onStartTemporaryDetach()V
 HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V
-HSPLandroid/view/View;->onWindowFocusChanged(Z)V
+HSPLandroid/view/View;->onWindowFocusChanged(Z)V+]Landroid/view/View;megamorphic_types
 HSPLandroid/view/View;->onWindowSystemUiVisibilityChanged(I)V
 HSPLandroid/view/View;->onWindowVisibilityChanged(I)V
 HSPLandroid/view/View;->overScrollBy(IIIIIIIIZ)Z
@@ -17484,14 +17489,14 @@
 HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z
 HSPLandroid/view/View;->postInvalidate()V
 HSPLandroid/view/View;->postInvalidateDelayed(J)V
-HSPLandroid/view/View;->postInvalidateOnAnimation()V
+HSPLandroid/view/View;->postInvalidateOnAnimation()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V
 HSPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V
 HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V
 HSPLandroid/view/View;->postUpdate(Ljava/lang/Runnable;)V
-HSPLandroid/view/View;->rebuildOutline()V+]Landroid/view/ViewOutlineProvider;Landroid/view/ViewOutlineProvider$1;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Outline;Landroid/graphics/Outline;
+HSPLandroid/view/View;->rebuildOutline()V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/ViewOutlineProvider;missing_types
 HSPLandroid/view/View;->recomputePadding()V
-HSPLandroid/view/View;->refreshDrawableState()V
+HSPLandroid/view/View;->refreshDrawableState()V+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V
 HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z
 HSPLandroid/view/View;->removeFrameMetricsListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V
@@ -17507,30 +17512,30 @@
 HSPLandroid/view/View;->requestFocus(I)Z
 HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z
-HSPLandroid/view/View;->requestLayout()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->requestLayout()V+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/View;->requireViewById(I)Landroid/view/View;
-HSPLandroid/view/View;->resetDisplayList()V
+HSPLandroid/view/View;->resetDisplayList()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->resetPressedState()V
-HSPLandroid/view/View;->resetResolvedDrawables()V
+HSPLandroid/view/View;->resetResolvedDrawables()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetResolvedDrawablesInternal()V
 HSPLandroid/view/View;->resetResolvedLayoutDirection()V
-HSPLandroid/view/View;->resetResolvedPadding()V
+HSPLandroid/view/View;->resetResolvedPadding()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetResolvedPaddingInternal()V
 HSPLandroid/view/View;->resetResolvedTextAlignment()V
 HSPLandroid/view/View;->resetResolvedTextDirection()V
 HSPLandroid/view/View;->resetRtlProperties()V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resetSubtreeAccessibilityStateChanged()V
-HSPLandroid/view/View;->resolveDrawables()V
-HSPLandroid/view/View;->resolveLayoutDirection()Z
+HSPLandroid/view/View;->resolveDrawables()V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/view/View;missing_types
+HSPLandroid/view/View;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup$LayoutParams;missing_types
-HSPLandroid/view/View;->resolvePadding()V
+HSPLandroid/view/View;->resolvePadding()V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
 HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->resolveSize(II)I
 HSPLandroid/view/View;->resolveSizeAndState(III)I
-HSPLandroid/view/View;->resolveTextAlignment()Z
-HSPLandroid/view/View;->resolveTextDirection()Z
+HSPLandroid/view/View;->resolveTextAlignment()Z+]Landroid/view/View;missing_types
+HSPLandroid/view/View;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types
 HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V
 HSPLandroid/view/View;->retrieveExplicitStyle(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
 HSPLandroid/view/View;->rootViewRequestFocus()Z
@@ -17559,11 +17564,11 @@
 HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/view/View;->setBackgroundBounds()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/view/View;->setBackgroundColor(I)V
-HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
 HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->setBackgroundResource(I)V
 HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/view/View;->setBottom(I)V
+HSPLandroid/view/View;->setBottom(I)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types
 HSPLandroid/view/View;->setClickable(Z)V
 HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->setClipToOutline(Z)V
@@ -17575,7 +17580,7 @@
 HSPLandroid/view/View;->setElevation(F)V
 HSPLandroid/view/View;->setEnabled(Z)V
 HSPLandroid/view/View;->setFitsSystemWindows(Z)V
-HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/ViewParent;missing_types
+HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
 HSPLandroid/view/View;->setFocusable(I)V
 HSPLandroid/view/View;->setFocusable(Z)V
 HSPLandroid/view/View;->setFocusableInTouchMode(Z)V
@@ -17594,7 +17599,7 @@
 HSPLandroid/view/View;->setIsRootNamespace(Z)V
 HSPLandroid/view/View;->setKeepScreenOn(Z)V
 HSPLandroid/view/View;->setKeyboardNavigationCluster(Z)V
-HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V
+HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V
 HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V
 HSPLandroid/view/View;->setLayoutDirection(I)V
@@ -17623,14 +17628,14 @@
 HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V
 HSPLandroid/view/View;->setOutlineSpotShadowColor(I)V
 HSPLandroid/view/View;->setOverScrollMode(I)V
-HSPLandroid/view/View;->setPadding(IIII)V
+HSPLandroid/view/View;->setPadding(IIII)V+]Landroid/view/View;missing_types
 HSPLandroid/view/View;->setPaddingRelative(IIII)V
 HSPLandroid/view/View;->setPivotX(F)V
 HSPLandroid/view/View;->setPivotY(F)V
 HSPLandroid/view/View;->setPointerIcon(Landroid/view/PointerIcon;)V
 HSPLandroid/view/View;->setPressed(Z)V
 HSPLandroid/view/View;->setRenderEffect(Landroid/graphics/RenderEffect;)V
-HSPLandroid/view/View;->setRight(I)V
+HSPLandroid/view/View;->setRight(I)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->setRotation(F)V
 HSPLandroid/view/View;->setRotationX(F)V
 HSPLandroid/view/View;->setRotationY(F)V
@@ -17666,8 +17671,8 @@
 HSPLandroid/view/View;->setWillNotDraw(Z)V
 HSPLandroid/view/View;->setX(F)V
 HSPLandroid/view/View;->setY(F)V
-HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLandroid/view/View;->sizeChange(IIII)V
+HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/view/View;->sizeChange(IIII)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/View;->skipInvalidate()Z+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
 HSPLandroid/view/View;->startNestedScroll(I)Z
@@ -17678,20 +17683,19 @@
 HSPLandroid/view/View;->unFocus(Landroid/view/View;)V
 HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V
-HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
+HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V
 HSPLandroid/view/View;->updateHandwritingArea()V
 HSPLandroid/view/View;->updateKeepClearRects()V
 HSPLandroid/view/View;->updateLocalSystemUiVisibility(II)Z
 HSPLandroid/view/View;->updatePflags3AndNotifyA11yIfChanged(IZ)V
-HSPLandroid/view/View;->updatePositionUpdateListener()V
+HSPLandroid/view/View;->updatePositionUpdateListener()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;
 HSPLandroid/view/View;->updatePreferKeepClearForFocus()V
 HSPLandroid/view/View;->updateSystemGestureExclusionRects()V
 HSPLandroid/view/View;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/view/View;->willNotDraw()Z
 HSPLandroid/view/ViewAnimationHostBridge;-><init>(Landroid/view/View;)V
 HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z
-HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
 HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
 HSPLandroid/view/ViewConfiguration;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -17743,7 +17747,7 @@
 HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V
 HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(II)V
-HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewGroup$MarginLayoutParams;missing_types
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;->doResolveMargins()V
@@ -17769,12 +17773,12 @@
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V
-HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z
-HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList;
 HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList;
@@ -17800,11 +17804,11 @@
 HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V
-HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;
+HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/animation/LayoutAnimationController;Landroid/view/animation/LayoutAnimationController;
 HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V
 HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V
 HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V
-HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types
+HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;
 HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V
@@ -17818,14 +17822,14 @@
 HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V
 HSPLandroid/view/ViewGroup;->dispatchSystemUiVisibilityChanged(I)V
 HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V
-HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
-HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Landroid/view/View;
-HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V+]Landroid/view/View;missing_types
-HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V
+HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V
 HSPLandroid/view/ViewGroup;->dispatchWindowSystemUiVisiblityChanged(I)V
 HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types
@@ -17854,7 +17858,7 @@
 HSPLandroid/view/ViewGroup;->getChildMeasureSpec(III)I
 HSPLandroid/view/ViewGroup;->getChildTransformation()Landroid/view/animation/Transformation;
 HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
-HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z
+HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewGroup;->getChildrenForAutofill(I)Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
 HSPLandroid/view/ViewGroup;->getChildrenForContentCapture()Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
 HSPLandroid/view/ViewGroup;->getClipChildren()Z
@@ -17880,8 +17884,8 @@
 HSPLandroid/view/ViewGroup;->hasUnhandledKeyListener()Z
 HSPLandroid/view/ViewGroup;->hasWindowInsetsAnimationCallback()Z
 HSPLandroid/view/ViewGroup;->indexOfChild(Landroid/view/View;)I
-HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/view/ViewGroup;missing_types]Landroid/content/Context;missing_types
+HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/content/Context;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V
 HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V+]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;
@@ -17890,7 +17894,7 @@
 HSPLandroid/view/ViewGroup;->isLayoutSuppressed()Z
 HSPLandroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z
 HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z
-HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V
+HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->layout(IIII)V
 HSPLandroid/view/ViewGroup;->makeFrameworkOptionalFitsSystemWindows()V
 HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
@@ -17935,17 +17939,17 @@
 HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V
 HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z
-HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V
+HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->resetResolvedPadding()V
-HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V
-HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V
-HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V
+HSPLandroid/view/ViewGroup;->resetResolvedPadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
+HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V+]Landroid/view/View;missing_types
 HSPLandroid/view/ViewGroup;->resetTouchState()V
 HSPLandroid/view/ViewGroup;->resolveDrawables()V
 HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z
 HSPLandroid/view/ViewGroup;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
-HSPLandroid/view/ViewGroup;->resolvePadding()V
+HSPLandroid/view/ViewGroup;->resolvePadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types
 HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z
 HSPLandroid/view/ViewGroup;->resolveTextDirection()Z
@@ -17966,13 +17970,13 @@
 HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z
 HSPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->suppressLayout(Z)V
-HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V+]Landroid/content/Context;missing_types
 HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V
 HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z
 HSPLandroid/view/ViewGroupOverlay;->add(Landroid/view/View;)V
 HSPLandroid/view/ViewGroupOverlay;->remove(Landroid/view/View;)V
-HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/view/View;missing_types]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types
 HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V
 HSPLandroid/view/ViewOutlineProvider;-><init>()V
 HSPLandroid/view/ViewOverlay$OverlayViewGroup;-><init>(Landroid/content/Context;Landroid/view/View;)V
@@ -17998,7 +18002,7 @@
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V
-HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;
+HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;-><init>(IFF)V
 HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;-><init>(ILjava/util/ArrayList;)V
 HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z
@@ -18038,7 +18042,7 @@
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processMotionEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/ViewRootImpl$HighContrastTextManager;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
@@ -18054,12 +18058,12 @@
 HSPLandroid/view/ViewRootImpl$InputStage;->onDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V
 HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z+]Landroid/view/InputEvent;Landroid/view/MotionEvent;
-HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;,Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;-><init>(Landroid/view/ViewRootImpl;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
@@ -18093,7 +18097,7 @@
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/view/HandwritingInitiator;Landroid/view/HandwritingInitiator;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I+]Landroid/view/HandwritingInitiator;Landroid/view/HandwritingInitiator;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewRootHandler;-><init>(Landroid/view/ViewRootImpl;)V
@@ -18105,7 +18109,6 @@
 HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V
-HSPLandroid/view/ViewRootImpl$W;->insetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl$W;->moved(II)V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;-><init>(Landroid/view/ViewRootImpl;Landroid/view/InputChannel;Landroid/os/Looper;)V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V
@@ -18114,10 +18117,9 @@
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
 HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue;
 HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V
-HSPLandroid/view/ViewRootImpl;->-$$Nest$mdispatchInsetsControlChanged(Landroid/view/ViewRootImpl;Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRootImpl;Z)V
 HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V
-HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/WindowLeaked;Landroid/view/WindowLeaked;]Ljava/util/Optional;Ljava/util/Optional;]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowLeaked;Landroid/view/WindowLeaked;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Optional;Ljava/util/Optional;
 HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V
 HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V
 HSPLandroid/view/ViewRootImpl;->addSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V
@@ -18125,17 +18127,17 @@
 HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ViewRootImpl;->applyTransactionOnDraw(Landroid/view/SurfaceControl$Transaction;)Z
 HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z
-HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;
 HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewRootImpl;->checkThread()V
 HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V
 HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->clearLowProfileModeIfNeeded(IZ)V
-HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
+HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->controlInsetsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V
-HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;
-HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Landroid/view/InputEvent;Landroid/view/MotionEvent;
+HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V
 HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V
 HSPLandroid/view/ViewRootImpl;->destroySurface()V
@@ -18147,15 +18149,14 @@
 HSPLandroid/view/ViewRootImpl;->dispatchDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl;->dispatchDispatchSystemUiVisibilityChanged()V
 HSPLandroid/view/ViewRootImpl;->dispatchFocusEvent(ZZ)V
-HSPLandroid/view/ViewRootImpl;->dispatchInsetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V
 HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V
 HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->dispatchMoved(II)V
 HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)Z
 HSPLandroid/view/ViewRootImpl;->doDie()V
 HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo;
-HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;
-HSPLandroid/view/ViewRootImpl;->draw(ZLandroid/window/SurfaceSyncGroup;Z)Z+]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;
+HSPLandroid/view/ViewRootImpl;->draw(ZLandroid/window/SurfaceSyncGroup;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;
 HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V
 HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V
@@ -18177,10 +18178,10 @@
 HSPLandroid/view/ViewRootImpl;->getBufferTransformHint()I
 HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
 HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration;
-HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;
+HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;
 HSPLandroid/view/ViewRootImpl;->getDisplayId()I
 HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator;
-HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
+HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController;
 HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I
 HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController;
@@ -18200,8 +18201,8 @@
 HSPLandroid/view/ViewRootImpl;->getViewBoundsSandboxingEnabled()Z
 HSPLandroid/view/ViewRootImpl;->getWindowBoundsInsetSystemBars()Landroid/graphics/Rect;
 HSPLandroid/view/ViewRootImpl;->getWindowFlags()I
-HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/graphics/Insets;Landroid/graphics/Insets;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/Insets;Landroid/graphics/Insets;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;
+HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V
 HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged()V
@@ -18229,7 +18230,7 @@
 HSPLandroid/view/ViewRootImpl;->maybeFireAccessibilityWindowStateChangedEvent()V
 HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
 HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V
-HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
 HSPLandroid/view/ViewRootImpl;->mergeWithNextTransaction(Landroid/view/SurfaceControl$Transaction;J)V
 HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V
 HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -18245,10 +18246,10 @@
 HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/view/ViewRootImpl;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
 HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V
-HSPLandroid/view/ViewRootImpl;->performDraw(Landroid/window/SurfaceSyncGroup;)Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
-HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/view/ViewRootImpl;->performMeasure(II)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;
-HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/content/Context;missing_types]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl;->performDraw(Landroid/window/SurfaceSyncGroup;)Z+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl;->performMeasure(II)V+]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;
+HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/content/Context;missing_types]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V
 HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V
 HSPLandroid/view/ViewRootImpl;->prepareSurfaces()V
@@ -18262,7 +18263,7 @@
 HSPLandroid/view/ViewRootImpl;->registerCompatOnBackInvokedCallback()V
 HSPLandroid/view/ViewRootImpl;->registerListeners()V
 HSPLandroid/view/ViewRootImpl;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V
-HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I
+HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->removeSendWindowContentChangedCallback()V
 HSPLandroid/view/ViewRootImpl;->removeSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V
 HSPLandroid/view/ViewRootImpl;->removeWindowCallbacks(Landroid/view/WindowCallbacks;)V
@@ -18275,8 +18276,8 @@
 HSPLandroid/view/ViewRootImpl;->requestLayout()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z
 HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V
-HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer;
+HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;
+HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
 HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/ViewRootImpl;->sendBackKeyEvent(I)V
 HSPLandroid/view/ViewRootImpl;->setAccessibilityFocus(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V
@@ -18284,10 +18285,10 @@
 HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
 HSPLandroid/view/ViewRootImpl;->setBoundsLayerCrop(Landroid/view/SurfaceControl$Transaction;)V
 HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;Z)V
-HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;
+HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
 HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V
 HSPLandroid/view/ViewRootImpl;->setTag()V
-HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V+]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/PendingInsetsController;Landroid/view/PendingInsetsController;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/FallbackEventHandler;Lcom/android/internal/policy/PhoneFallbackEventHandler;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/Display;Landroid/view/Display;
+HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/view/FallbackEventHandler;Lcom/android/internal/policy/PhoneFallbackEventHandler;]Landroid/view/IWindowSession;Landroid/view/IWindowSession$Stub$Proxy;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/PendingInsetsController;Landroid/view/PendingInsetsController;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/View;Landroid/widget/FrameLayout;,Lcom/android/internal/policy/DecorView;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLandroid/view/ViewRootImpl;->setWindowStopped(Z)V
 HSPLandroid/view/ViewRootImpl;->shouldDispatchCutout()Z
 HSPLandroid/view/ViewRootImpl;->shouldOptimizeMeasure(Landroid/view/WindowManager$LayoutParams;)Z
@@ -18473,13 +18474,13 @@
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I
-HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect;
 HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Insets;)Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets;
-HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets;+]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;
+HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets;+]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;
 HSPLandroid/view/WindowInsets;->isConsumed()Z
 HSPLandroid/view/WindowInsets;->isRound()Z
 HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets;
@@ -18490,7 +18491,7 @@
 HSPLandroid/view/WindowInsetsAnimation;->setAlpha(F)V
 HSPLandroid/view/WindowLayout;-><clinit>()V
 HSPLandroid/view/WindowLayout;-><init>()V
-HSPLandroid/view/WindowLayout;->computeFrames(Landroid/view/WindowManager$LayoutParams;Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/graphics/Rect;IIIIFLandroid/window/ClientWindowFrames;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/WindowLayout;->computeFrames(Landroid/view/WindowManager$LayoutParams;Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/graphics/Rect;IIIIFLandroid/window/ClientWindowFrames;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
 HSPLandroid/view/WindowLayout;->computeSurfaceSize(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IILandroid/graphics/Rect;ZLandroid/graphics/Point;)V
 HSPLandroid/view/WindowLeaked;-><init>(Ljava/lang/String;)V
 HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams;
@@ -18536,7 +18537,7 @@
 HSPLandroid/view/WindowManagerGlobal;->peekWindowSession()Landroid/view/IWindowSession;
 HSPLandroid/view/WindowManagerGlobal;->removeView(Landroid/view/View;Z)V
 HSPLandroid/view/WindowManagerGlobal;->removeViewLocked(IZ)V
-HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/WindowManagerGlobal;Landroid/view/WindowManagerGlobal;
+HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/WindowManagerGlobal;Landroid/view/WindowManagerGlobal;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/view/WindowManagerGlobal;->trimMemory(I)V
 HSPLandroid/view/WindowManagerGlobal;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;)V
@@ -18593,8 +18594,8 @@
 HSPLandroid/view/accessibility/AccessibilityManager;->updateUiTimeout(J)V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;-><init>()V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager;
-HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V
-HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V
+HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray;
+HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray;
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;-><init>(ILjava/lang/CharSequence;)V
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getId()I
@@ -18634,9 +18635,9 @@
 HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;I)V
 HSPLandroid/view/accessibility/WeakSparseArray;-><init>()V
-HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V
-HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V
-HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V
+HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;-><init>()V
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F
@@ -18655,7 +18656,7 @@
 HSPLandroid/view/animation/Animation$Description;-><init>()V
 HSPLandroid/view/animation/Animation$Description;->parseValue(Landroid/util/TypedValue;Landroid/content/Context;)Landroid/view/animation/Animation$Description;
 HSPLandroid/view/animation/Animation;-><init>()V
-HSPLandroid/view/animation/Animation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/view/animation/Animation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
 HSPLandroid/view/animation/Animation;->cancel()V
 HSPLandroid/view/animation/Animation;->detach()V
 HSPLandroid/view/animation/Animation;->dispatchAnimationEnd()V
@@ -18664,12 +18665,12 @@
 HSPLandroid/view/animation/Animation;->finalize()V
 HSPLandroid/view/animation/Animation;->getDuration()J
 HSPLandroid/view/animation/Animation;->getFillAfter()Z
-HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
+HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/animation/Animation;->getScaleFactor()F
 HSPLandroid/view/animation/Animation;->getStartOffset()J
-HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
+HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
-HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Interpolator;Landroid/view/animation/LinearInterpolator;,Landroid/view/animation/AccelerateDecelerateInterpolator;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;
+HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/RotateAnimation;]Landroid/view/animation/Interpolator;Landroid/view/animation/AccelerateDecelerateInterpolator;,Landroid/view/animation/LinearInterpolator;
 HSPLandroid/view/animation/Animation;->hasAlpha()Z
 HSPLandroid/view/animation/Animation;->hasEnded()Z
 HSPLandroid/view/animation/Animation;->hasStarted()Z
@@ -18726,7 +18727,7 @@
 HSPLandroid/view/animation/AnimationUtils$AnimationState;-><init>(Landroid/view/animation/AnimationUtils$AnimationState-IA;)V
 HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation;
-HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;
+HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;+]Ljava/lang/Object;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;
 HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
 HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;
@@ -18766,7 +18767,7 @@
 HSPLandroid/view/animation/Transformation;->getInsets()Landroid/graphics/Insets;
 HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix;
 HSPLandroid/view/animation/Transformation;->getTransformationType()I
-HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;
 HSPLandroid/view/animation/Transformation;->setAlpha(F)V
 HSPLandroid/view/animation/Transformation;->setInsets(Landroid/graphics/Insets;)V
 HSPLandroid/view/animation/TranslateAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
@@ -18839,7 +18840,7 @@
 HSPLandroid/view/autofill/AutofillManager;->isActiveLocked()Z
 HSPLandroid/view/autofill/AutofillManager;->isDisabledByServiceLocked()Z
 HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z
-HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V
+HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;I)V
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForAugmentedAutofill(Landroid/view/View;)V
 HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForFillDialog(Landroid/view/View;)V
@@ -19438,17 +19439,17 @@
 HSPLandroid/widget/AbsListView$DeviceConfigChangeListener;-><init>()V
 HSPLandroid/widget/AbsListView$DeviceConfigChangeListener;-><init>(Landroid/widget/AbsListView$DeviceConfigChangeListener-IA;)V
 HSPLandroid/widget/AbsListView$PerformClick;->run()V
-HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V
+HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;]Landroid/widget/AbsListView;Landroid/widget/ListView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/AbsListView$RecycleBin;->clear()V
 HSPLandroid/widget/AbsListView$RecycleBin;->clearTransientStateViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->fillActiveViews(II)V
 HSPLandroid/widget/AbsListView$RecycleBin;->getActiveView(I)Landroid/view/View;
-HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View;
+HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View;+]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView$RecycleBin;->getTransientStateView(I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->markChildrenDirty()V
 HSPLandroid/widget/AbsListView$RecycleBin;->pruneScrapViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->removeSkippedScrap()V
-HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View;
+HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View;+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/ListAdapter;Landroid/preference/PreferenceGroupAdapter;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/AbsListView$RecycleBin;->scrapActiveViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V
 HSPLandroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z
@@ -19458,12 +19459,12 @@
 HSPLandroid/widget/AbsListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/AbsListView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/AbsListView;->clearChoices()V
-HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I
-HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I
+HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types
+HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types
 HSPLandroid/widget/AbsListView;->computeVerticalScrollRange()I
 HSPLandroid/widget/AbsListView;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/AbsListView;->dispatchSetPressed(Z)V
-HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/widget/AbsListView;missing_types]Landroid/widget/EdgeEffect;Landroid/widget/EdgeEffect;
 HSPLandroid/widget/AbsListView;->drawableStateChanged()V
 HSPLandroid/widget/AbsListView;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
@@ -19481,7 +19482,7 @@
 HSPLandroid/widget/AbsListView;->isInFilterMode()Z
 HSPLandroid/widget/AbsListView;->isVerticalScrollBarHidden()Z
 HSPLandroid/widget/AbsListView;->jumpDrawablesToCurrentState()V
-HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View;
+HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View;+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView;->onAttachedToWindow()V
 HSPLandroid/widget/AbsListView;->onCancelPendingInputEvents()V
 HSPLandroid/widget/AbsListView;->onDetachedFromWindow()V
@@ -19491,9 +19492,9 @@
 HSPLandroid/widget/AbsListView;->onRtlPropertiesChanged(I)V
 HSPLandroid/widget/AbsListView;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/widget/AbsListView;->onTouchDown(Landroid/view/MotionEvent;)V
-HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z
+HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/VelocityTracker;Landroid/view/VelocityTracker;]Landroid/widget/AbsListView;Landroid/widget/ListView;
 HSPLandroid/widget/AbsListView;->onTouchModeChanged(Z)V
-HSPLandroid/widget/AbsListView;->onTouchMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+HSPLandroid/widget/AbsListView;->onTouchMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V+]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;Landroid/widget/ListView;
 HSPLandroid/widget/AbsListView;->onTouchUp(Landroid/view/MotionEvent;)V
 HSPLandroid/widget/AbsListView;->onWindowFocusChanged(Z)V
 HSPLandroid/widget/AbsListView;->performItemClick(Landroid/view/View;IJ)Z
@@ -19508,7 +19509,7 @@
 HSPLandroid/widget/AbsListView;->setFastScrollEnabled(Z)V
 HSPLandroid/widget/AbsListView;->setFastScrollStyle(I)V
 HSPLandroid/widget/AbsListView;->setFrame(IIII)Z
-HSPLandroid/widget/AbsListView;->setItemViewLayoutParams(Landroid/view/View;I)V
+HSPLandroid/widget/AbsListView;->setItemViewLayoutParams(Landroid/view/View;I)V+]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/AbsListView;missing_types]Landroid/widget/ListAdapter;missing_types
 HSPLandroid/widget/AbsListView;->setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V
 HSPLandroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
 HSPLandroid/widget/AbsListView;->setSelectionFromTop(II)V
@@ -19640,15 +19641,15 @@
 HSPLandroid/widget/EdgeEffect;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/EdgeEffect;->calculateDistanceFromGlowValues(FF)F
 HSPLandroid/widget/EdgeEffect;->dampStretchVector(F)F
-HSPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z
+HSPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;
 HSPLandroid/widget/EdgeEffect;->finish()V
 HSPLandroid/widget/EdgeEffect;->getCurrentEdgeEffectBehavior()I
 HSPLandroid/widget/EdgeEffect;->getDistance()F
 HSPLandroid/widget/EdgeEffect;->isAtEquilibrium()Z
 HSPLandroid/widget/EdgeEffect;->isFinished()Z
 HSPLandroid/widget/EdgeEffect;->onAbsorb(I)V
-HSPLandroid/widget/EdgeEffect;->onPull(FF)V
-HSPLandroid/widget/EdgeEffect;->onPullDistance(FF)F
+HSPLandroid/widget/EdgeEffect;->onPull(FF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLandroid/widget/EdgeEffect;->onPullDistance(FF)F+]Landroid/widget/EdgeEffect;Landroid/widget/EdgeEffect;
 HSPLandroid/widget/EdgeEffect;->onRelease()V
 HSPLandroid/widget/EdgeEffect;->setSize(II)V
 HSPLandroid/widget/EdgeEffect;->update()V
@@ -19829,12 +19830,12 @@
 HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(III)V
-HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams;
@@ -19846,9 +19847,9 @@
 HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I+]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I+]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I+]Landroid/widget/FrameLayout;missing_types
-HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types
+HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/view/View;missing_types]Landroid/widget/FrameLayout;missing_types
 HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V+]Landroid/widget/FrameLayout;missing_types
-HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/view/View;missing_types]Landroid/widget/FrameLayout;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V
 HSPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V
 HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z
@@ -19945,13 +19946,13 @@
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->applyAlpha()V
 HSPLandroid/widget/ImageView;->applyColorFilter()V
-HSPLandroid/widget/ImageView;->applyImageTint()V
+HSPLandroid/widget/ImageView;->applyImageTint()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/VectorDrawable;
 HSPLandroid/widget/ImageView;->applyXfermode()V
 HSPLandroid/widget/ImageView;->clearColorFilter()V
-HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V
 HSPLandroid/widget/ImageView;->drawableStateChanged()V
 HSPLandroid/widget/ImageView;->getAccessibilityClassName()Ljava/lang/CharSequence;
@@ -19960,18 +19961,18 @@
 HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix;
 HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType;
 HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z
-HSPLandroid/widget/ImageView;->initImageView()V
-HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/widget/ImageView;->initImageView()V+]Landroid/widget/ImageView;missing_types
+HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->isFilledByImage()Z
-HSPLandroid/widget/ImageView;->isOpaque()Z
-HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V
+HSPLandroid/widget/ImageView;->isOpaque()Z+]Landroid/graphics/drawable/Drawable;megamorphic_types
+HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->onAttachedToWindow()V
 HSPLandroid/widget/ImageView;->onCreateDrawableState(I)[I
 HSPLandroid/widget/ImageView;->onDetachedFromWindow()V
-HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->onMeasure(II)V+]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V
-HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V
+HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/ImageView;->resizeFromDrawable()V
 HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I
 HSPLandroid/widget/ImageView;->resolveUri()V+]Landroid/widget/ImageView;missing_types
@@ -19995,16 +19996,16 @@
 HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V
 HSPLandroid/widget/ImageView;->setSelected(Z)V
 HSPLandroid/widget/ImageView;->setVisibility(I)V
-HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;missing_types
+HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types
 HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
-HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z
 HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V
@@ -20026,11 +20027,11 @@
 HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View;+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z
-HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V
-HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types
+HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout;
+HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;megamorphic_types]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V+]Landroid/widget/LinearLayout;missing_types
-HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types
-HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types
+HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout;
+HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;megamorphic_types]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V+]Landroid/widget/LinearLayout;missing_types
 HSPLandroid/widget/LinearLayout;->onMeasure(II)V+]Landroid/widget/LinearLayout;missing_types
@@ -20060,7 +20061,7 @@
 HSPLandroid/widget/ListView;->adjustViewsUpOrDown()V
 HSPLandroid/widget/ListView;->clearRecycledState(Ljava/util/ArrayList;)V
 HSPLandroid/widget/ListView;->correctTooHigh(I)V
-HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;Landroid/widget/LinearLayout;]Landroid/widget/ListAdapter;Landroid/preference/PreferenceGroupAdapter;]Landroid/widget/ListView;Landroid/widget/ListView;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLandroid/widget/ListView;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z
 HSPLandroid/widget/ListView;->fillDown(II)Landroid/view/View;
 HSPLandroid/widget/ListView;->fillFromTop(I)Landroid/view/View;
@@ -20076,8 +20077,8 @@
 HSPLandroid/widget/ListView;->layoutChildren()V
 HSPLandroid/widget/ListView;->lookForSelectablePosition(IZ)I
 HSPLandroid/widget/ListView;->makeAndAddView(IIZIZ)Landroid/view/View;
-HSPLandroid/widget/ListView;->measureHeightOfChildren(IIIII)I
-HSPLandroid/widget/ListView;->measureScrapChild(Landroid/view/View;III)V
+HSPLandroid/widget/ListView;->measureHeightOfChildren(IIIII)I+]Landroid/view/View;Landroid/widget/CheckedTextView;]Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecycleBin;
+HSPLandroid/widget/ListView;->measureScrapChild(Landroid/view/View;III)V+]Landroid/view/View;Landroid/widget/CheckedTextView;
 HSPLandroid/widget/ListView;->onDetachedFromWindow()V
 HSPLandroid/widget/ListView;->onFinishInflate()V
 HSPLandroid/widget/ListView;->onMeasure(II)V
@@ -20089,7 +20090,7 @@
 HSPLandroid/widget/ListView;->setCacheColorHint(I)V
 HSPLandroid/widget/ListView;->setDivider(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ListView;->setSelection(I)V
-HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V
+HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/view/View;Landroid/widget/CheckedTextView;,Landroid/widget/LinearLayout;]Landroid/widget/Checkable;Landroid/widget/CheckedTextView;]Landroid/widget/ListAdapter;missing_types]Landroid/widget/ListView;missing_types
 HSPLandroid/widget/OverScroller$SplineOverScroller;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/OverScroller$SplineOverScroller;->adjustDuration(III)V
 HSPLandroid/widget/OverScroller$SplineOverScroller;->continueWhenFinished()Z
@@ -20236,8 +20237,8 @@
 HSPLandroid/widget/RelativeLayout$DependencyGraph;-><init>()V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->add(Landroid/view/View;)V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->clear()V
-HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;
-HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V
+HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmBottom(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmLeft(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmRight(Landroid/widget/RelativeLayout$LayoutParams;)I
@@ -20260,7 +20261,7 @@
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/RelativeLayout;->applyHorizontalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;I[I)V
-HSPLandroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V
+HSPLandroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->centerHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
 HSPLandroid/widget/RelativeLayout;->centerVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
 HSPLandroid/widget/RelativeLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
@@ -20272,21 +20273,21 @@
 HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/widget/RelativeLayout;->getBaseline()I
 HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I
-HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;
+HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/View;Landroid/widget/TextView;
 HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I
 HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
-HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
+HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/TextView;
+HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;Landroid/widget/TextView;
 HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V
-HSPLandroid/widget/RelativeLayout;->onMeasure(II)V
+HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
 HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
-HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
-HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
+HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
+HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;Landroid/widget/TextView;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V
 HSPLandroid/widget/RelativeLayout;->requestLayout()V
 HSPLandroid/widget/RelativeLayout;->shouldDelayChildPressedState()Z
-HSPLandroid/widget/RelativeLayout;->sortChildren()V
+HSPLandroid/widget/RelativeLayout;->sortChildren()V+]Landroid/widget/RelativeLayout$DependencyGraph;Landroid/widget/RelativeLayout$DependencyGraph;]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/RemoteViews;
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/widget/RemoteViews$Action;-><init>()V
@@ -20362,8 +20363,8 @@
 HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V
 HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V
 HSPLandroid/widget/ScrollBarDrawable;-><init>()V
-HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V
+HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;
+HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I
 HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z
@@ -20371,7 +20372,7 @@
 HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z
 HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V
+HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;
 HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
@@ -20485,7 +20486,7 @@
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->addSearchHighlightPaths()V
 HSPLandroid/widget/TextView;->addTextChangedListener(Landroid/text/TextWatcher;)V
 HSPLandroid/widget/TextView;->applyCompoundDrawableTint()V
@@ -20496,13 +20497,13 @@
 HSPLandroid/widget/TextView;->beginBatchEdit()V
 HSPLandroid/widget/TextView;->bringPointIntoView(I)Z
 HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z
-HSPLandroid/widget/TextView;->bringTextIntoView()Z
+HSPLandroid/widget/TextView;->bringTextIntoView()Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->canMarquee()Z
 HSPLandroid/widget/TextView;->cancelLongPress()V
 HSPLandroid/widget/TextView;->checkForRelayout()V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->checkForResize()V
 HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I
-HSPLandroid/widget/TextView;->compressText(F)Z
+HSPLandroid/widget/TextView;->compressText(F)Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;Landroid/widget/CheckedTextView;,Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->computeHorizontalScrollRange()I
 HSPLandroid/widget/TextView;->computeScroll()V
 HSPLandroid/widget/TextView;->computeVerticalScrollExtent()I
@@ -20512,7 +20513,7 @@
 HSPLandroid/widget/TextView;->didTouchFocusSelect()Z
 HSPLandroid/widget/TextView;->doKeyDown(ILandroid/view/KeyEvent;Landroid/view/KeyEvent;)I
 HSPLandroid/widget/TextView;->drawableHotspotChanged(FF)V
-HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;
+HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->endBatchEdit()V
 HSPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I
 HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V
@@ -20558,7 +20559,7 @@
 HSPLandroid/widget/TextView;->getJustificationMode()I
 HSPLandroid/widget/TextView;->getKeyListener()Landroid/text/method/KeyListener;
 HSPLandroid/widget/TextView;->getLayout()Landroid/text/Layout;
-HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment;
+HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment;+]Landroid/widget/TextView;Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->getLineAtCoordinate(F)I
 HSPLandroid/widget/TextView;->getLineAtCoordinateUnclamped(F)I
 HSPLandroid/widget/TextView;->getLineCount()I
@@ -20581,7 +20582,7 @@
 HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence;
 HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList;
 HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;
+HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale;
 HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList;
 HSPLandroid/widget/TextView;->getTextSelectHandle()Landroid/graphics/drawable/Drawable;
@@ -20595,18 +20596,18 @@
 HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod;
 HSPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface;
 HSPLandroid/widget/TextView;->getTypefaceStyle()I
-HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;
+HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->getVerticalOffset(Z)I+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLandroid/widget/TextView;->handleBackInTextActionModeIfNeeded(Landroid/view/KeyEvent;)Z
 HSPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/widget/TextView;->hasGesturePreviewHighlight()Z
-HSPLandroid/widget/TextView;->hasOverlappingRendering()Z
+HSPLandroid/widget/TextView;->hasOverlappingRendering()Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/RippleDrawable;
 HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z
 HSPLandroid/widget/TextView;->hasSelection()Z
 HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V
 HSPLandroid/widget/TextView;->invalidateCursor()V
 HSPLandroid/widget/TextView;->invalidateCursorPath()V
-HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;
+HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimatedStateListDrawable;,Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V
 HSPLandroid/widget/TextView;->isAnyPasswordInputType()Z
 HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z
@@ -20626,22 +20627,22 @@
 HSPLandroid/widget/TextView;->isTextEditable()Z
 HSPLandroid/widget/TextView;->isTextSelectable()Z
 HSPLandroid/widget/TextView;->isVisibleToAccessibility()Z
-HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V
+HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types
 HSPLandroid/widget/TextView;->length()I
-HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/widget/TextView;missing_types
-HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;
-HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V
+HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/widget/TextView;missing_types
+HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V+]Landroid/widget/TextView;missing_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V
-HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V
+HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->nullLayouts()V
 HSPLandroid/widget/TextView;->onAttachedToWindow()V
 HSPLandroid/widget/TextView;->onBeginBatchEdit()V
 HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z
 HSPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I
+HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
 HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V
-HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable;
+HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onEditorAction(I)V
 HSPLandroid/widget/TextView;->onEndBatchEdit()V
 HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V
@@ -20652,7 +20653,7 @@
 HSPLandroid/widget/TextView;->onKeyUp(ILandroid/view/KeyEvent;)Z
 HSPLandroid/widget/TextView;->onLayout(ZIIII)V
 HSPLandroid/widget/TextView;->onLocaleChanged()V
-HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
+HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->onPreDraw()Z
 HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V
 HSPLandroid/widget/TextView;->onResolveDrawables(I)V
@@ -20669,7 +20670,7 @@
 HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V
 HSPLandroid/widget/TextView;->originalToTransformed(II)I
 HSPLandroid/widget/TextView;->preloadFontCache()V
-HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;
 HSPLandroid/widget/TextView;->registerForPreDraw()V
 HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V
 HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V
@@ -20689,7 +20690,7 @@
 HSPLandroid/widget/TextView;->setBreakStrategy(I)V
 HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V
 HSPLandroid/widget/TextView;->setCompoundDrawableTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
@@ -20719,7 +20720,7 @@
 HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V
 HSPLandroid/widget/TextView;->setKeyListener(Landroid/text/method/KeyListener;)V
 HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V
-HSPLandroid/widget/TextView;->setLetterSpacing(F)V
+HSPLandroid/widget/TextView;->setLetterSpacing(F)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/widget/TextView;->setLineHeight(I)V
 HSPLandroid/widget/TextView;->setLineSpacing(FF)V
 HSPLandroid/widget/TextView;->setLines(I)V
@@ -20736,7 +20737,7 @@
 HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V
 HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V
 HSPLandroid/widget/TextView;->setRawInputType(I)V
-HSPLandroid/widget/TextView;->setRawTextSize(FZ)V
+HSPLandroid/widget/TextView;->setRawTextSize(FZ)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
 HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setSelected(Z)V
 HSPLandroid/widget/TextView;->setShadowLayer(FFFI)V
@@ -20745,7 +20746,7 @@
 HSPLandroid/widget/TextView;->setText(I)V
 HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
 HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V
-HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;
+HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/text/Editable$Factory;Landroid/text/Editable$Factory;]Landroid/text/InputFilter;Landroid/text/InputFilter$LengthFilter;]Landroid/text/Spannable$Factory;Landroid/text/Spannable$Factory;]Landroid/text/Spannable;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder;]Landroid/text/Spanned;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannedString;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/method/MovementMethod;Landroid/text/method/ArrowKeyMovementMethod;,Landroid/text/method/LinkMovementMethod;]Landroid/text/method/TransformationMethod;Landroid/text/method/AllCapsTransformationMethod;,Landroid/text/method/SingleLineTransformationMethod;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannedString;,Ljava/lang/String;
 HSPLandroid/widget/TextView;->setTextAppearance(I)V
 HSPLandroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V
 HSPLandroid/widget/TextView;->setTextColor(I)V
@@ -20757,14 +20758,14 @@
 HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V
 HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V
 HSPLandroid/widget/TextView;->setTransformationMethodInternal(Landroid/text/method/TransformationMethod;Z)V
-HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V
-HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V
+HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;
+HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V+]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V
 HSPLandroid/widget/TextView;->setupAutoSizeText()Z
 HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z
 HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z
 HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V
-HSPLandroid/widget/TextView;->startMarquee()V
+HSPLandroid/widget/TextView;->startMarquee()V+]Landroid/widget/TextView;Landroid/widget/CheckedTextView;,Landroid/widget/TextView;
 HSPLandroid/widget/TextView;->startStopMarquee(Z)V
 HSPLandroid/widget/TextView;->stopMarquee()V
 HSPLandroid/widget/TextView;->stopTextActionMode()V
@@ -20774,8 +20775,8 @@
 HSPLandroid/widget/TextView;->unregisterForPreDraw()V
 HSPLandroid/widget/TextView;->updateAfterEdit()V
 HSPLandroid/widget/TextView;->updateCursorVisibleInternal()V
-HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLandroid/widget/TextView;->useDynamicLayout()Z
+HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLandroid/widget/TextView;->useDynamicLayout()Z+]Landroid/widget/TextView;missing_types
 HSPLandroid/widget/TextView;->validateAndSetAutoSizeTextTypeUniformConfiguration(FFF)V
 HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/TextView;->viewClicked(Landroid/view/inputmethod/InputMethodManager;)V
@@ -21141,7 +21142,7 @@
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getID()Ljava/lang/String;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getLatestDstSavingsMillis(J)Ljava/lang/Integer;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I
-HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I
+HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getRawOffset()I
 HSPLcom/android/i18n/timezone/ZoneInfoData;->getTransitions()[J
 HSPLcom/android/i18n/timezone/ZoneInfoData;->hashCode()I
@@ -21208,7 +21209,7 @@
 HSPLcom/android/icu/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder;
 HSPLcom/android/icu/charset/NativeConverter;->U_FAILURE(I)Z
 HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V
-HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V
 HSPLcom/android/icu/charset/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V
 HSPLcom/android/icu/charset/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I
 HSPLcom/android/icu/text/CompatibleDecimalFormatFactory;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/text/DecimalFormat;
@@ -21463,7 +21464,7 @@
 HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPostExecute(Z)V
 HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPreExecute()V
 HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V
-HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;Lcom/android/wifi/x/com/android/modules/utils/HandlerExecutor;,Landroid/net/connectivity/com/android/modules/utils/HandlerExecutor;,Landroid/os/HandlerExecutor;]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda3;,Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2;]Ljava/util/function/Supplier;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1;
+HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2;,Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda3;]Ljava/util/concurrent/Executor;Landroid/net/connectivity/com/android/modules/utils/HandlerExecutor;,Landroid/os/HandlerExecutor;,Lcom/android/wifi/x/com/android/modules/utils/HandlerExecutor;]Ljava/util/function/Supplier;Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1;
 HSPLcom/android/internal/listeners/ListenerExecutor;->lambda$executeSafely$0(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V
 HSPLcom/android/internal/logging/AndroidConfig;-><init>()V
 HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String;
@@ -21711,20 +21712,16 @@
 HSPLcom/android/internal/policy/DecorView;->draw(Landroid/graphics/Canvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawLegacyNavigationBarBackground(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawableChanged()V
-HSPLcom/android/internal/policy/DecorView;->enforceNonTranslucentBackground(Landroid/graphics/drawable/Drawable;Z)Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/policy/DecorView;->finishChanging()V
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Landroid/graphics/Region;)Z
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Lcom/android/internal/policy/DecorView$ColorViewState;Landroid/graphics/Region;)Z
 HSPLcom/android/internal/policy/DecorView;->getAccessibilityViewId()I
 HSPLcom/android/internal/policy/DecorView;->getBackground()Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/policy/DecorView;->getNavBarSize(III)I
-HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;
+HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources;+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->getTitleSuffix(Landroid/view/WindowManager$LayoutParams;)Ljava/lang/String;
 HSPLcom/android/internal/policy/DecorView;->getWindowInsetsController()Landroid/view/WindowInsetsController;
 HSPLcom/android/internal/policy/DecorView;->initializeElevation()V
 HSPLcom/android/internal/policy/DecorView;->isNavBarToLeftEdge(II)Z
 HSPLcom/android/internal/policy/DecorView;->isNavBarToRightEdge(II)Z
-HSPLcom/android/internal/policy/DecorView;->isResizing()Z
 HSPLcom/android/internal/policy/DecorView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->onAttachedToWindow()V
 HSPLcom/android/internal/policy/DecorView;->onCloseSystemDialogs(Ljava/lang/String;)V
@@ -21734,7 +21731,7 @@
 HSPLcom/android/internal/policy/DecorView;->onDraw(Landroid/graphics/Canvas;)V
 HSPLcom/android/internal/policy/DecorView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->onLayout(ZIIII)V+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
-HSPLcom/android/internal/policy/DecorView;->onMeasure(II)V+]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLcom/android/internal/policy/DecorView;->onMeasure(II)V+]Landroid/content/Context;Lcom/android/internal/policy/DecorContext;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
 HSPLcom/android/internal/policy/DecorView;->onPostDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->onResourcesLoaded(Landroid/view/LayoutInflater;I)V
 HSPLcom/android/internal/policy/DecorView;->onRootViewScrollYChanged(I)V
@@ -21743,13 +21740,12 @@
 HSPLcom/android/internal/policy/DecorView;->onWindowFocusChanged(Z)V
 HSPLcom/android/internal/policy/DecorView;->onWindowSystemUiVisibilityChanged(I)V
 HSPLcom/android/internal/policy/DecorView;->providePendingInsetsController()Landroid/view/PendingInsetsController;
-HSPLcom/android/internal/policy/DecorView;->releaseThreadedRenderer()V
 HSPLcom/android/internal/policy/DecorView;->removeBackgroundBlurDrawable()V
 HSPLcom/android/internal/policy/DecorView;->sendAccessibilityEvent(I)V
 HSPLcom/android/internal/policy/DecorView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setBackgroundFallback(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setColor(Landroid/view/View;IIZZ)V
-HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/ColorDrawable;
+HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable;,Landroid/graphics/drawable/GradientDrawable;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->setWindow(Lcom/android/internal/policy/PhoneWindow;)V
 HSPLcom/android/internal/policy/DecorView;->setWindowBackground(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setWindowFrame(Landroid/graphics/drawable/Drawable;)V
@@ -21758,10 +21754,10 @@
 HSPLcom/android/internal/policy/DecorView;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->updateBackgroundBlurRadius()V
 HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V
-HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V
+HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V+]Landroid/view/View;Landroid/view/View;]Landroid/view/ViewPropertyAnimator;Landroid/view/ViewPropertyAnimator;]Lcom/android/internal/policy/DecorView$ColorViewAttributes;Lcom/android/internal/policy/DecorView$ColorViewAttributes;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
 HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V
-HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController;
-HSPLcom/android/internal/policy/DecorView;->updateElevation()V+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;
+HSPLcom/android/internal/policy/DecorView;->updateElevation()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/DecorView;->updateLogTag(Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/internal/policy/DecorView;->updateStatusGuard(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->willYouTakeTheInputQueue()Landroid/view/InputQueue$Callback;
@@ -21799,7 +21795,7 @@
 HSPLcom/android/internal/policy/PhoneWindow;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/internal/policy/PhoneWindow;->doInvalidatePanelMenu(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->generateDecor(I)Lcom/android/internal/policy/DecorView;
-HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup;+]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
+HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HSPLcom/android/internal/policy/PhoneWindow;->getCurrentFocus()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->getDecorView()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->getLayoutInflater()Landroid/view/LayoutInflater;
@@ -22046,9 +22042,9 @@
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>()V
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>(I)V
 HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V
-HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V
-HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V
-HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V
+HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/internal/util/FastXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/FastXmlSerializer;->endDocument()V
 HSPLcom/android/internal/util/FastXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
@@ -22074,7 +22070,7 @@
 HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J
-HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/Object;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;[Ljava/lang/Object;
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z
 HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
 HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
@@ -22196,7 +22192,7 @@
 HSPLcom/android/internal/util/XmlSerializerWrapper;->setFeature(Ljava/lang/String;Z)V
 HSPLcom/android/internal/util/XmlSerializerWrapper;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V
 HSPLcom/android/internal/util/XmlSerializerWrapper;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V
-HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
+HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer;
 HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z
@@ -22225,13 +22221,13 @@
 HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
+HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
 HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
 HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
+HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/internal/util/function/pooled/OmniFunction;->run()V
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/HexConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
@@ -22267,7 +22263,6 @@
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList(I)Ljava/util/List;
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->isImeTraceEnabled()Z
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V
@@ -24472,7 +24467,7 @@
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;I)Ljava/lang/Integer;
 HSPLjava/lang/InterruptedException;-><init>()V
-HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/lang/Iterable;megamorphic_types]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/Iterator;megamorphic_types
+HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/lang/Iterable;megamorphic_types]Ljava/util/Iterator;megamorphic_types]Ljava/util/function/Consumer;missing_types
 HSPLjava/lang/LinkageError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Long;-><init>(J)V
 HSPLjava/lang/Long;->bitCount(J)I
@@ -26893,12 +26888,12 @@
 HSPLjava/time/chrono/AbstractChronology;->equals(Ljava/lang/Object;)Z
 HSPLjava/time/chrono/AbstractChronology;->resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
 HSPLjava/time/chrono/ChronoLocalDate;->isSupported(Ljava/time/temporal/TemporalField;)Z
-HSPLjava/time/chrono/ChronoLocalDateTime;->getChronology()Ljava/time/chrono/Chronology;+]Ljava/time/chrono/ChronoLocalDateTime;Ljava/time/LocalDateTime;]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;
+HSPLjava/time/chrono/ChronoLocalDateTime;->getChronology()Ljava/time/chrono/Chronology;+]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;]Ljava/time/chrono/ChronoLocalDateTime;Ljava/time/LocalDateTime;
 HSPLjava/time/chrono/ChronoLocalDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/chrono/ChronoLocalDateTime;->toEpochSecond(Ljava/time/ZoneOffset;)J+]Ljava/time/chrono/ChronoLocalDateTime;Ljava/time/LocalDateTime;]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;
-HSPLjava/time/chrono/ChronoZonedDateTime;->getChronology()Ljava/time/chrono/Chronology;+]Ljava/time/chrono/ChronoZonedDateTime;Ljava/time/ZonedDateTime;]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;
+HSPLjava/time/chrono/ChronoLocalDateTime;->toEpochSecond(Ljava/time/ZoneOffset;)J+]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;]Ljava/time/chrono/ChronoLocalDateTime;Ljava/time/LocalDateTime;
+HSPLjava/time/chrono/ChronoZonedDateTime;->getChronology()Ljava/time/chrono/Chronology;+]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;]Ljava/time/chrono/ChronoZonedDateTime;Ljava/time/ZonedDateTime;
 HSPLjava/time/chrono/ChronoZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/chrono/ChronoZonedDateTime;->toEpochSecond()J+]Ljava/time/chrono/ChronoZonedDateTime;Ljava/time/ZonedDateTime;]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;
+HSPLjava/time/chrono/ChronoZonedDateTime;->toEpochSecond()J+]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;]Ljava/time/chrono/ChronoZonedDateTime;Ljava/time/ZonedDateTime;
 HSPLjava/time/chrono/ChronoZonedDateTime;->toInstant()Ljava/time/Instant;+]Ljava/time/chrono/ChronoZonedDateTime;Ljava/time/ZonedDateTime;
 HSPLjava/time/chrono/IsoChronology;->isLeapYear(J)Z
 HSPLjava/time/chrono/IsoChronology;->resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
@@ -28166,7 +28161,7 @@
 HSPLjava/util/ImmutableCollections;-><clinit>()V
 HSPLjava/util/ImmutableCollections;->listCopy(Ljava/util/Collection;)Ljava/util/List;
 HSPLjava/util/ImmutableCollections;->listFromTrustedArray([Ljava/lang/Object;)Ljava/util/List;
-HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/AbstractMap$2$1;,Ljava/util/AbstractList$Itr;,Landroid/util/MapCollections$MapIterator;
+HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Landroid/util/MapCollections$MapIterator;,Ljava/util/AbstractList$Itr;,Ljava/util/AbstractMap$2$1;]Ljava/util/function/Consumer;megamorphic_types
 HSPLjava/util/JumboEnumSet$EnumSetIterator;-><init>(Ljava/util/JumboEnumSet;)V
 HSPLjava/util/JumboEnumSet$EnumSetIterator;->hasNext()Z
 HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Enum;
@@ -28294,7 +28289,7 @@
 HSPLjava/util/List;->of(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;
 HSPLjava/util/List;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;
 HSPLjava/util/List;->of([Ljava/lang/Object;)Ljava/util/List;
-HSPLjava/util/List;->sort(Ljava/util/Comparator;)V+]Ljava/util/ListIterator;Ljava/util/ArrayList$SubList$1;,Ljava/util/LinkedList$ListItr;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/LinkedList;
+HSPLjava/util/List;->sort(Ljava/util/Comparator;)V+]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/LinkedList;]Ljava/util/ListIterator;Ljava/util/ArrayList$SubList$1;,Ljava/util/LinkedList$ListItr;
 HSPLjava/util/List;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Locale$Builder;-><init>()V
 HSPLjava/util/Locale$Builder;->build()Ljava/util/Locale;
@@ -28353,7 +28348,7 @@
 HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String;
 HSPLjava/util/Locale;->toString()Ljava/lang/String;
 HSPLjava/util/Locale;->writeObject(Ljava/io/ObjectOutputStream;)V
-HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;missing_types]Ljava/util/Map;Landroid/util/ArrayMap;
+HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/function/Function;missing_types
 HSPLjava/util/Map;->entry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry;
 HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V
 HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;
@@ -28553,7 +28548,7 @@
 HSPLjava/util/SimpleTimeZone;->getOffsets(J[I)I
 HSPLjava/util/SimpleTimeZone;->getRawOffset()I
 HSPLjava/util/SimpleTimeZone;->hasSameRules(Ljava/util/TimeZone;)Z
-HSPLjava/util/Spliterator$OfInt;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Spliterator$OfInt;Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/stream/Streams$RangeIntSpliterator;,Ljava/util/Spliterators$IntArraySpliterator;,Ljava/lang/StringUTF16$CodePointsSpliteratorForString;
+HSPLjava/util/Spliterator$OfInt;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Spliterator$OfInt;Ljava/lang/StringUTF16$CodePointsSpliteratorForString;,Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/Spliterators$IntArraySpliterator;,Ljava/util/stream/Streams$RangeIntSpliterator;
 HSPLjava/util/Spliterator;->getExactSizeIfKnown()J+]Ljava/util/Spliterator;megamorphic_types
 HSPLjava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;I)V
 HSPLjava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V
@@ -31233,8 +31228,8 @@
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(I)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->removeAttribute(I)V
-HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V
-HSPLorg/ccil/cowan/tagsoup/Element;-><init>(Lorg/ccil/cowan/tagsoup/ElementType;Z)V
+HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V+]Lorg/ccil/cowan/tagsoup/AttributesImpl;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;
+HSPLorg/ccil/cowan/tagsoup/Element;-><init>(Lorg/ccil/cowan/tagsoup/ElementType;Z)V+]Lorg/ccil/cowan/tagsoup/ElementType;Lorg/ccil/cowan/tagsoup/ElementType;
 HSPLorg/ccil/cowan/tagsoup/Element;->atts()Lorg/ccil/cowan/tagsoup/AttributesImpl;
 HSPLorg/ccil/cowan/tagsoup/Element;->canContain(Lorg/ccil/cowan/tagsoup/Element;)Z
 HSPLorg/ccil/cowan/tagsoup/Element;->clean()V
@@ -31263,10 +31258,10 @@
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->mark()V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->resetDocumentLocator(Ljava/lang/String;Ljava/lang/String;)V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->save(ILorg/ccil/cowan/tagsoup/ScanHandler;)V
-HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V
+HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V+]Ljava/io/PushbackReader;Ljava/io/PushbackReader;]Lorg/ccil/cowan/tagsoup/ScanHandler;Lorg/ccil/cowan/tagsoup/Parser;
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->unread(Ljava/io/PushbackReader;I)V
 HSPLorg/ccil/cowan/tagsoup/Parser$1;-><init>(Lorg/ccil/cowan/tagsoup/Parser;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V
+HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLorg/ccil/cowan/tagsoup/Parser;->aname([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->aval([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->entity([CII)V
@@ -31281,16 +31276,16 @@
 HSPLorg/ccil/cowan/tagsoup/Parser;->gi([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->lookupEntity([CII)I
 HSPLorg/ccil/cowan/tagsoup/Parser;->makeName([CII)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V
+HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V+]Ljava/lang/Object;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Scanner;Lorg/ccil/cowan/tagsoup/HTMLScanner;]Lorg/ccil/cowan/tagsoup/Schema;Lorg/ccil/cowan/tagsoup/HTMLSchema;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;]Lorg/xml/sax/InputSource;Lorg/xml/sax/InputSource;
 HSPLorg/ccil/cowan/tagsoup/Parser;->pcdata([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V
+HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V+]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;
 HSPLorg/ccil/cowan/tagsoup/Parser;->prefixOf(Ljava/lang/String;)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V
+HSPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V+]Ljava/lang/String;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;]Lorg/xml/sax/Attributes;Lorg/ccil/cowan/tagsoup/AttributesImpl;]Lorg/xml/sax/ContentHandler;Landroid/text/HtmlToSpannedConverter;
+HSPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V+]Ljava/lang/Object;Ljava/lang/String;]Lorg/ccil/cowan/tagsoup/Element;Lorg/ccil/cowan/tagsoup/Element;
 HSPLorg/ccil/cowan/tagsoup/Parser;->restart(Lorg/ccil/cowan/tagsoup/Element;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setContentHandler(Lorg/xml/sax/ContentHandler;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V
+HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V+]Lorg/ccil/cowan/tagsoup/Schema;Lorg/ccil/cowan/tagsoup/HTMLSchema;
 HSPLorg/ccil/cowan/tagsoup/Parser;->stagc([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->truthValue(Z)Ljava/lang/Boolean;
 HSPLorg/ccil/cowan/tagsoup/Schema;->getElementType(Ljava/lang/String;)Lorg/ccil/cowan/tagsoup/ElementType;
@@ -32590,7 +32585,6 @@
 Landroid/accounts/IAccountManager$Stub$Proxy;
 Landroid/accounts/IAccountManager$Stub;
 Landroid/accounts/IAccountManager;
-Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
 Landroid/accounts/IAccountManagerResponse$Stub;
 Landroid/accounts/IAccountManagerResponse;
 Landroid/accounts/NetworkErrorException;
@@ -33051,7 +33045,6 @@
 Landroid/app/IStopUserCallback$Stub$Proxy;
 Landroid/app/IStopUserCallback$Stub;
 Landroid/app/IStopUserCallback;
-Landroid/app/ITaskStackListener$Stub$Proxy;
 Landroid/app/ITaskStackListener$Stub;
 Landroid/app/ITaskStackListener;
 Landroid/app/ITransientNotification$Stub$Proxy;
@@ -33730,7 +33723,6 @@
 Landroid/app/servertransaction/TopResumedActivityChangeItem;
 Landroid/app/servertransaction/TransactionExecutor;
 Landroid/app/servertransaction/TransactionExecutorHelper;
-Landroid/app/servertransaction/WindowStateResizeItem$ResizeListener;
 Landroid/app/slice/ISliceManager$Stub$Proxy;
 Landroid/app/slice/ISliceManager$Stub;
 Landroid/app/slice/ISliceManager;
@@ -34786,6 +34778,7 @@
 Landroid/graphics/LinearGradient;
 Landroid/graphics/MaskFilter;
 Landroid/graphics/Matrix$1;
+Landroid/graphics/Matrix$ExtraNatives;
 Landroid/graphics/Matrix$NoImagePreloadHolder;
 Landroid/graphics/Matrix$ScaleToFit;
 Landroid/graphics/Matrix;
@@ -34809,6 +34802,7 @@
 Landroid/graphics/PaintFlagsDrawFilter;
 Landroid/graphics/Path$Direction;
 Landroid/graphics/Path$FillType;
+Landroid/graphics/Path$NoImagePreloadHolder;
 Landroid/graphics/Path$Op;
 Landroid/graphics/Path;
 Landroid/graphics/PathDashPathEffect;
@@ -35019,6 +35013,7 @@
 Landroid/graphics/drawable/shapes/RoundRectShape;
 Landroid/graphics/drawable/shapes/Shape;
 Landroid/graphics/fonts/Font$Builder;
+Landroid/graphics/fonts/Font$NoImagePreloadHolder;
 Landroid/graphics/fonts/Font;
 Landroid/graphics/fonts/FontCustomizationParser$Result;
 Landroid/graphics/fonts/FontCustomizationParser;
@@ -37447,7 +37442,6 @@
 Landroid/internal/hidl/manager/V1_2/IServiceManager;
 Landroid/internal/hidl/safe_union/V1_0/Monostate;
 Landroid/internal/modules/utils/build/SdkLevel;
-Landroid/internal/modules/utils/build/UnboundedSdkLevel;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda0;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda10;
 Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda11;
@@ -37505,6 +37499,7 @@
 Landroid/media/AudioGainConfig;
 Landroid/media/AudioHandle;
 Landroid/media/AudioManager$1;
+Landroid/media/AudioManager$2;
 Landroid/media/AudioManager$3;
 Landroid/media/AudioManager$4;
 Landroid/media/AudioManager$AudioPlaybackCallback;
@@ -37648,6 +37643,7 @@
 Landroid/media/IMediaRouterService$Stub;
 Landroid/media/IMediaRouterService;
 Landroid/media/INearbyMediaDevicesProvider;
+Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;
 Landroid/media/IPlaybackConfigDispatcher$Stub;
 Landroid/media/IPlaybackConfigDispatcher;
 Landroid/media/IPlayer$Stub$Proxy;
@@ -39061,9 +39057,6 @@
 Landroid/permission/PermissionManager$SplitPermissionInfo;
 Landroid/permission/PermissionManager;
 Landroid/permission/PermissionManagerInternal;
-Landroid/permission/flags/FeatureFlags;
-Landroid/permission/flags/FeatureFlagsImpl;
-Landroid/permission/flags/Flags;
 Landroid/preference/DialogPreference;
 Landroid/preference/GenericInflater$Parent;
 Landroid/preference/GenericInflater;
@@ -40534,7 +40527,6 @@
 Landroid/telephony/ims/aidl/IImsRcsController;
 Landroid/telephony/ims/aidl/IImsRcsFeature$Stub;
 Landroid/telephony/ims/aidl/IImsRcsFeature;
-Landroid/telephony/ims/aidl/IImsRegistration$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsRegistration$Stub;
 Landroid/telephony/ims/aidl/IImsRegistration;
 Landroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;
@@ -40612,7 +40604,6 @@
 Landroid/text/FontConfig$1;
 Landroid/text/FontConfig$Alias$1;
 Landroid/text/FontConfig$Alias;
-Landroid/text/FontConfig$Customization$LocaleFallback;
 Landroid/text/FontConfig$Font$1;
 Landroid/text/FontConfig$Font;
 Landroid/text/FontConfig$FontFamily$1;
@@ -40854,6 +40845,7 @@
 Landroid/timezone/TelephonyNetwork;
 Landroid/timezone/TelephonyNetworkFinder;
 Landroid/timezone/TimeZoneFinder;
+Landroid/tracing/Flags;
 Landroid/tracing/perfetto/CreateIncrementalStateArgs;
 Landroid/tracing/perfetto/CreateTlsStateArgs;
 Landroid/tracing/perfetto/DataSource;
@@ -41791,6 +41783,7 @@
 Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
 Landroid/view/WindowManagerPolicyConstants;
 Landroid/view/WindowMetrics;
+Landroid/view/WindowRelayoutResult;
 Landroid/view/WindowlessWindowLayout;
 Landroid/view/WindowlessWindowManager;
 Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;
@@ -42794,6 +42787,7 @@
 Landroid/window/BackProgressAnimator$1;
 Landroid/window/BackProgressAnimator$ProgressCallback;
 Landroid/window/BackProgressAnimator;
+Landroid/window/BackTouchTracker$TouchTrackerState;
 Landroid/window/BackTouchTracker;
 Landroid/window/ClientWindowFrames$1;
 Landroid/window/ClientWindowFrames-IA;
@@ -42828,7 +42822,6 @@
 Landroid/window/ITaskFragmentOrganizer;
 Landroid/window/ITaskFragmentOrganizerController$Stub;
 Landroid/window/ITaskFragmentOrganizerController;
-Landroid/window/ITaskOrganizer$Stub$Proxy;
 Landroid/window/ITaskOrganizer$Stub;
 Landroid/window/ITaskOrganizer;
 Landroid/window/ITaskOrganizerController$Stub$Proxy;
@@ -43027,6 +43020,7 @@
 Lcom/android/framework/protobuf/nano/InvalidProtocolBufferNanoException;
 Lcom/android/framework/protobuf/nano/MessageNano;
 Lcom/android/framework/protobuf/nano/WireFormatNano;
+Lcom/android/graphics/flags/Flags;
 Lcom/android/graphics/hwui/flags/FeatureFlags;
 Lcom/android/graphics/hwui/flags/FeatureFlagsImpl;
 Lcom/android/graphics/hwui/flags/Flags;
@@ -43673,6 +43667,7 @@
 Lcom/android/internal/colorextraction/types/Tonal$TonalPalette;
 Lcom/android/internal/colorextraction/types/Tonal;
 Lcom/android/internal/compat/AndroidBuildClassifier;
+Lcom/android/internal/compat/ChangeReporter$$ExternalSyntheticLambda0;
 Lcom/android/internal/compat/ChangeReporter$ChangeReport;
 Lcom/android/internal/compat/ChangeReporter;
 Lcom/android/internal/compat/CompatibilityChangeConfig$1;
@@ -43707,7 +43702,6 @@
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda3;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda4;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda5;
-Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda6;
 Lcom/android/internal/content/om/OverlayConfig$$ExternalSyntheticLambda7;
 Lcom/android/internal/content/om/OverlayConfig$Configuration;
 Lcom/android/internal/content/om/OverlayConfig$IdmapInvocation;
@@ -43716,7 +43710,6 @@
 Lcom/android/internal/content/om/OverlayConfigParser$OverlayPartition;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsedConfigFile;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsedConfiguration;
-Lcom/android/internal/content/om/OverlayConfigParser$ParsingContext-IA;
 Lcom/android/internal/content/om/OverlayConfigParser$ParsingContext;
 Lcom/android/internal/content/om/OverlayConfigParser;
 Lcom/android/internal/content/om/OverlayManagerImpl;
@@ -43760,6 +43753,9 @@
 Lcom/android/internal/graphics/drawable/BackgroundBlurDrawable-IA;
 Lcom/android/internal/graphics/drawable/BackgroundBlurDrawable;
 Lcom/android/internal/hidden_from_bootclasspath/android/app/job/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/Flags;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlags;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;
 Lcom/android/internal/hidden_from_bootclasspath/android/os/Flags;
@@ -44061,7 +44057,6 @@
 Lcom/android/internal/pm/pkg/component/flags/Flags;
 Lcom/android/internal/pm/pkg/parsing/ParsingPackageUtils$Callback;
 Lcom/android/internal/policy/AttributeCache;
-Lcom/android/internal/policy/BackdropFrameRenderer;
 Lcom/android/internal/policy/DecorContext;
 Lcom/android/internal/policy/DecorView$$ExternalSyntheticLambda0;
 Lcom/android/internal/policy/DecorView$$ExternalSyntheticLambda1;
@@ -44366,7 +44361,6 @@
 Lcom/android/internal/telephony/ISub$Stub$Proxy;
 Lcom/android/internal/telephony/ISub$Stub;
 Lcom/android/internal/telephony/ISub;
-Lcom/android/internal/telephony/ITelephony$Stub$Proxy;
 Lcom/android/internal/telephony/ITelephony$Stub;
 Lcom/android/internal/telephony/ITelephony;
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;
@@ -46085,6 +46079,7 @@
 Lcom/android/okhttp/okio/Okio;
 Lcom/android/okhttp/okio/RealBufferedSink$1;
 Lcom/android/okhttp/okio/RealBufferedSink;
+Lcom/android/okhttp/okio/RealBufferedSource$1;
 Lcom/android/okhttp/okio/RealBufferedSource;
 Lcom/android/okhttp/okio/Segment;
 Lcom/android/okhttp/okio/SegmentPool;
@@ -48043,7 +48038,7 @@
 Ljava/util/Collections$ReverseComparator2;
 Ljava/util/Collections$ReverseComparator;
 Ljava/util/Collections$SequencedSetFromMap;
-Ljava/util/Collections$SingletonMap;
+Ljava/util/Collections$SetFromMap;
 Ljava/util/Collections$SynchronizedList;
 Ljava/util/Collections$SynchronizedNavigableMap;
 Ljava/util/Collections$SynchronizedNavigableSet;
@@ -48465,6 +48460,7 @@
 Ljava/util/concurrent/ThreadLocalRandom;
 Ljava/util/concurrent/ThreadPoolExecutor$AbortPolicy;
 Ljava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;
+Ljava/util/concurrent/ThreadPoolExecutor$Worker;
 Ljava/util/concurrent/TimeUnit$1;
 Ljava/util/concurrent/TimeUnit;
 Ljava/util/concurrent/TimeoutException;
@@ -50084,6 +50080,7 @@
 [Landroid/widget/SpellChecker$SpellParser;
 [Landroid/widget/TextView$BufferType;
 [Landroid/widget/TextView$ChangeWatcher;
+[Landroid/window/BackTouchTracker$TouchTrackerState;
 [Landroid/window/TransitionFilter$Requirement;
 [Lcom/android/framework/protobuf/GeneratedMessageLite$MethodToInvoke;
 [Lcom/android/framework/protobuf/MessageInfoFactory;
diff --git a/config/preloaded-classes b/config/preloaded-classes
index d954c0f..fe3e0e4 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -395,6 +395,7 @@
 android.app.BackgroundServiceStartNotAllowedException$1
 android.app.BackgroundServiceStartNotAllowedException
 android.app.BroadcastOptions
+android.app.CameraCompatTaskInfo
 android.app.ClientTransactionHandler
 android.app.ComponentCaller
 android.app.ComponentOptions
@@ -737,7 +738,6 @@
 android.app.SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0
 android.app.SharedPreferencesImpl$EditorImpl$1
 android.app.SharedPreferencesImpl$EditorImpl$2
-android.app.SharedPreferencesImpl$EditorImpl
 android.app.SharedPreferencesImpl$MemoryCommitResult-IA
 android.app.SharedPreferencesImpl$MemoryCommitResult
 android.app.SharedPreferencesImpl$SharedPreferencesThreadFactory
@@ -1216,7 +1216,6 @@
 android.app.servertransaction.TopResumedActivityChangeItem
 android.app.servertransaction.TransactionExecutor
 android.app.servertransaction.TransactionExecutorHelper
-android.app.servertransaction.WindowStateResizeItem$ResizeListener
 android.app.slice.ISliceManager$Stub$Proxy
 android.app.slice.ISliceManager$Stub
 android.app.slice.ISliceManager
@@ -1992,7 +1991,6 @@
 android.content.res.ResourceTimer$Timer
 android.content.res.ResourceTimer
 android.content.res.Resources$$ExternalSyntheticLambda0
-android.content.res.Resources$$ExternalSyntheticLambda1
 android.content.res.Resources$AssetManagerUpdateHandler
 android.content.res.Resources$NotFoundException
 android.content.res.Resources$Theme-IA
@@ -2200,10 +2198,7 @@
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4
 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9
 android.graphics.ColorSpace$Rgb$NoImagePreloadHolder
 android.graphics.ColorSpace$Rgb$TransferParameters
 android.graphics.ColorSpace$Rgb-IA
@@ -2963,6 +2958,7 @@
 android.hardware.hdmi.HdmiRecordSources$RecordSource
 android.hardware.input.HostUsiVersion$1
 android.hardware.input.HostUsiVersion
+android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
 android.hardware.input.IInputDevicesChangedListener$Stub
 android.hardware.input.IInputDevicesChangedListener
 android.hardware.input.IInputManager$Stub$Proxy
@@ -2979,6 +2975,7 @@
 android.hardware.input.InputManager
 android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate
 android.hardware.input.InputManagerGlobal$InputDevicesChangedListener-IA
+android.hardware.input.InputManagerGlobal$InputDevicesChangedListener
 android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate
 android.hardware.input.InputManagerGlobal
 android.hardware.input.InputSettings
@@ -3737,6 +3734,7 @@
 android.icu.impl.UCharacterProperty$26
 android.icu.impl.UCharacterProperty$27
 android.icu.impl.UCharacterProperty$28
+android.icu.impl.UCharacterProperty$29
 android.icu.impl.UCharacterProperty$2
 android.icu.impl.UCharacterProperty$3
 android.icu.impl.UCharacterProperty$4
@@ -3945,6 +3943,9 @@
 android.icu.impl.locale.LSR$CachedDecoder
 android.icu.impl.locale.LSR
 android.icu.impl.locale.LanguageTag
+android.icu.impl.locale.LikelySubtags$1
+android.icu.impl.locale.LikelySubtags$Data
+android.icu.impl.locale.LikelySubtags
 android.icu.impl.locale.LocaleDistance$Data
 android.icu.impl.locale.LocaleDistance
 android.icu.impl.locale.LocaleExtensions
@@ -4105,6 +4106,7 @@
 android.icu.lang.UCharacter$EastAsianWidth
 android.icu.lang.UCharacter$GraphemeClusterBreak
 android.icu.lang.UCharacter$HangulSyllableType
+android.icu.lang.UCharacter$IdentifierType
 android.icu.lang.UCharacter$IndicPositionalCategory
 android.icu.lang.UCharacter$IndicSyllabicCategory
 android.icu.lang.UCharacter$JoiningGroup
@@ -4697,6 +4699,7 @@
 android.icu.text.UnicodeSet$EntryRangeIterator
 android.icu.text.UnicodeSet$Filter
 android.icu.text.UnicodeSet$GeneralCategoryMaskFilter
+android.icu.text.UnicodeSet$IdentifierTypeFilter
 android.icu.text.UnicodeSet$IntPropertyFilter
 android.icu.text.UnicodeSet$NumericValueFilter
 android.icu.text.UnicodeSet$ScriptExtensionsFilter
@@ -4803,7 +4806,12 @@
 android.icu.util.IllformedLocaleException
 android.icu.util.IndianCalendar
 android.icu.util.InitialTimeZoneRule
+android.icu.util.IslamicCalendar$Algorithm
 android.icu.util.IslamicCalendar$CalculationType
+android.icu.util.IslamicCalendar$CivilAlgorithm
+android.icu.util.IslamicCalendar$IslamicAlgorithm
+android.icu.util.IslamicCalendar$TBLAAlgorithm
+android.icu.util.IslamicCalendar$UmalquraAlgorithm
 android.icu.util.IslamicCalendar
 android.icu.util.JapaneseCalendar
 android.icu.util.LocaleData$MeasurementSystem
@@ -5150,6 +5158,8 @@
 android.media.ImageWriter$WriterSurfaceImage
 android.media.ImageWriter
 android.media.JetPlayer
+android.media.MediaCodec$$ExternalSyntheticLambda6
+android.media.MediaCodec$$ExternalSyntheticLambda7
 android.media.MediaCodec$BufferInfo
 android.media.MediaCodec$BufferMap$CodecBuffer-IA
 android.media.MediaCodec$BufferMap$CodecBuffer
@@ -6011,6 +6021,7 @@
 android.os.Handler$MessengerImpl-IA
 android.os.Handler$MessengerImpl
 android.os.Handler
+android.os.HandlerExecutor
 android.os.HandlerThread
 android.os.HardwarePropertiesManager
 android.os.HidlMemory
@@ -6515,9 +6526,6 @@
 android.permission.PermissionManager$SplitPermissionInfo-IA
 android.permission.PermissionManager$SplitPermissionInfo
 android.permission.PermissionManagerInternal
-android.permission.flags.FeatureFlags
-android.permission.flags.FeatureFlagsImpl
-android.permission.flags.Flags
 android.preference.DialogPreference
 android.preference.GenericInflater$Parent
 android.preference.GenericInflater
@@ -7672,6 +7680,7 @@
 android.telephony.TelephonyCallback$CallForwardingIndicatorListener
 android.telephony.TelephonyCallback$CallStateListener
 android.telephony.TelephonyCallback$CarrierNetworkListener
+android.telephony.TelephonyCallback$CarrierRoamingNtnModeListener
 android.telephony.TelephonyCallback$CellInfoListener
 android.telephony.TelephonyCallback$CellLocationListener
 android.telephony.TelephonyCallback$DataActivationStateListener
@@ -7749,7 +7758,6 @@
 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1
 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2
 android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0
-android.telephony.TelephonyRegistryManager$1
 android.telephony.TelephonyRegistryManager$2
 android.telephony.TelephonyRegistryManager$3
 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0
@@ -8419,7 +8427,6 @@
 android.util.FloatProperty
 android.util.Half
 android.util.IconDrawableFactory
-android.util.IndentingPrintWriter
 android.util.IntArray
 android.util.IntProperty
 android.util.JsonReader$1
@@ -8677,7 +8684,6 @@
 android.view.IDisplayFoldListener$Stub$Proxy
 android.view.IDisplayFoldListener$Stub
 android.view.IDisplayFoldListener
-android.view.IDisplayWindowInsetsController$Stub$Proxy
 android.view.IDisplayWindowInsetsController$Stub
 android.view.IDisplayWindowInsetsController
 android.view.IDisplayWindowListener$Stub$Proxy
@@ -9228,7 +9234,6 @@
 android.view.WindowManagerGlobal$TrustedPresentationListener-IA
 android.view.WindowManagerGlobal$TrustedPresentationListener
 android.view.WindowManagerGlobal
-android.view.WindowManagerImpl
 android.view.WindowManagerPolicyConstants$PointerEventListener
 android.view.WindowManagerPolicyConstants
 android.view.WindowMetrics
@@ -9244,6 +9249,7 @@
 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1
 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3
 android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0
+android.view.accessibility.AccessibilityManager$1
 android.view.accessibility.AccessibilityManager$AccessibilityPolicy
 android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
 android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
@@ -9287,6 +9293,7 @@
 android.view.accessibility.IAccessibilityManager$Stub$Proxy
 android.view.accessibility.IAccessibilityManager$Stub
 android.view.accessibility.IAccessibilityManager
+android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
 android.view.accessibility.IAccessibilityManagerClient$Stub
 android.view.accessibility.IAccessibilityManagerClient
 android.view.accessibility.WeakSparseArray$WeakReferenceWithId
@@ -9470,7 +9477,6 @@
 android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda8
 android.view.inputmethod.IInputMethodSessionInvoker
 android.view.inputmethod.ImeTracker$1$$ExternalSyntheticLambda0
-android.view.inputmethod.ImeTracker$1
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda0
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda1
 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda2
@@ -10231,6 +10237,7 @@
 android.window.BackProgressAnimator$1
 android.window.BackProgressAnimator$ProgressCallback
 android.window.BackProgressAnimator
+android.window.BackTouchTracker
 android.window.ClientWindowFrames$1
 android.window.ClientWindowFrames-IA
 android.window.ClientWindowFrames
@@ -10671,7 +10678,6 @@
 com.android.ims.ImsMultiEndpoint
 com.android.ims.ImsServiceClass
 com.android.ims.ImsUt$IImsUtListenerProxy
-com.android.ims.ImsUt
 com.android.ims.ImsUtInterface
 com.android.ims.MmTelFeatureConnection$BinderAccessState
 com.android.ims.MmTelFeatureConnection$CapabilityCallbackManager
@@ -11105,6 +11111,7 @@
 com.android.internal.colorextraction.types.Tonal$TonalPalette
 com.android.internal.colorextraction.types.Tonal
 com.android.internal.compat.AndroidBuildClassifier
+com.android.internal.compat.ChangeReporter$$ExternalSyntheticLambda0
 com.android.internal.compat.ChangeReporter$ChangeReport
 com.android.internal.compat.ChangeReporter
 com.android.internal.compat.CompatibilityChangeConfig$1
@@ -11370,6 +11377,9 @@
 com.android.internal.os.CachedDeviceState
 com.android.internal.os.ClassLoaderFactory
 com.android.internal.os.Clock
+com.android.internal.os.FeatureFlags
+com.android.internal.os.FeatureFlagsImpl
+com.android.internal.os.Flags
 com.android.internal.os.FuseAppLoop$1
 com.android.internal.os.FuseAppLoop
 com.android.internal.os.FuseUnavailableMountException
@@ -11481,7 +11491,6 @@
 com.android.internal.pm.pkg.component.flags.Flags
 com.android.internal.pm.pkg.parsing.ParsingPackageUtils$Callback
 com.android.internal.policy.AttributeCache
-com.android.internal.policy.BackdropFrameRenderer
 com.android.internal.policy.DecorContext
 com.android.internal.policy.DecorView$$ExternalSyntheticLambda0
 com.android.internal.policy.DecorView$$ExternalSyntheticLambda1
@@ -11950,7 +11959,6 @@
 com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9
 com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper
 com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper
-com.android.internal.telephony.PhoneSubInfoController
 com.android.internal.telephony.ProxyController$1
 com.android.internal.telephony.ProxyController
 com.android.internal.telephony.RIL$RadioProxyDeathRecipient
@@ -12343,7 +12351,6 @@
 com.android.internal.telephony.euicc.EuiccController$DownloadSubscriptionGetMetadataCommandCallback
 com.android.internal.telephony.euicc.EuiccController$GetDefaultListCommandCallback
 com.android.internal.telephony.euicc.EuiccController$GetMetadataCommandCallback
-com.android.internal.telephony.euicc.EuiccController
 com.android.internal.telephony.euicc.EuiccOperation$1
 com.android.internal.telephony.euicc.EuiccOperation$Action
 com.android.internal.telephony.euicc.EuiccOperation
@@ -12505,7 +12512,6 @@
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda2
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda3
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$10
-com.android.internal.telephony.imsphone.ImsPhoneCallTracker$11
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$12
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$1
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$2
@@ -13465,6 +13471,7 @@
 com.android.okhttp.internal.http.StreamAllocation
 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection
 com.android.okhttp.internal.huc.HttpURLConnectionImpl
+com.android.okhttp.internal.huc.HttpsURLConnectionImpl
 com.android.okhttp.internal.io.FileSystem$1
 com.android.okhttp.internal.io.FileSystem
 com.android.okhttp.internal.io.RealConnection
@@ -13497,6 +13504,7 @@
 com.android.okhttp.okio.Okio
 com.android.okhttp.okio.RealBufferedSink$1
 com.android.okhttp.okio.RealBufferedSink
+com.android.okhttp.okio.RealBufferedSource$1
 com.android.okhttp.okio.RealBufferedSource
 com.android.okhttp.okio.Segment
 com.android.okhttp.okio.SegmentPool
@@ -15456,6 +15464,7 @@
 java.util.Collections$SynchronizedList
 java.util.Collections$SynchronizedNavigableMap
 java.util.Collections$SynchronizedNavigableSet
+java.util.Collections$SynchronizedRandomAccessList
 java.util.Collections$SynchronizedSortedMap
 java.util.Collections$SynchronizedSortedSet
 java.util.Collections$UnmodifiableList$1
@@ -15572,14 +15581,11 @@
 java.util.ImmutableCollections$Access$1
 java.util.ImmutableCollections$Access
 java.util.ImmutableCollections$ListN-IA
-java.util.ImmutableCollections$MapN$1
-java.util.ImmutableCollections$MapN$MapNIterator
 java.util.ImmutableCollections$SubList
 java.util.InputMismatchException
 java.util.Iterator
 java.util.JumboEnumSet$EnumSetIterator
 java.util.JumboEnumSet
-java.util.KeyValueHolder
 java.util.LinkedHashMap$LinkedEntryIterator
 java.util.LinkedHashMap$LinkedEntrySet
 java.util.LinkedHashMap$LinkedHashIterator
@@ -15737,6 +15743,7 @@
 java.util.concurrent.Callable
 java.util.concurrent.CancellationException
 java.util.concurrent.CompletableFuture$AltResult
+java.util.concurrent.CompletableFuture$AsyncRun
 java.util.concurrent.CompletableFuture$AsyncSupply
 java.util.concurrent.CompletableFuture$AsynchronousCompletionTask
 java.util.concurrent.CompletableFuture$Completion
@@ -15867,6 +15874,7 @@
 java.util.concurrent.ThreadFactory
 java.util.concurrent.ThreadPoolExecutor$AbortPolicy
 java.util.concurrent.ThreadPoolExecutor$DiscardPolicy
+java.util.concurrent.ThreadPoolExecutor$Worker
 java.util.concurrent.TimeUnit$1
 java.util.concurrent.TimeUnit
 java.util.concurrent.TimeoutException
@@ -16227,6 +16235,7 @@
 java.util.stream.Streams$ConcatSpliterator$OfRef
 java.util.stream.Streams$ConcatSpliterator
 java.util.stream.Streams$RangeIntSpliterator
+java.util.stream.Streams$StreamBuilderImpl
 java.util.stream.Streams
 java.util.stream.TerminalOp
 java.util.stream.TerminalSink
@@ -16243,6 +16252,7 @@
 java.util.zip.Deflater
 java.util.zip.DeflaterOutputStream
 java.util.zip.GZIPInputStream$1
+java.util.zip.GZIPInputStream
 java.util.zip.GZIPOutputStream
 java.util.zip.Inflater$InflaterZStreamRef-IA
 java.util.zip.Inflater$InflaterZStreamRef
@@ -16261,11 +16271,9 @@
 java.util.zip.ZipFile$Source$Key
 java.util.zip.ZipFile$Source
 java.util.zip.ZipFile$ZipEntryIterator
-java.util.zip.ZipFile$ZipFileInflaterInputStream
 java.util.zip.ZipFile$ZipFileInputStream
 java.util.zip.ZipFile
 java.util.zip.ZipInputStream
-java.util.zip.ZipOutputStream
 java.util.zip.ZipUtils
 javax.crypto.AEADBadTagException
 javax.crypto.BadPaddingException
@@ -17223,6 +17231,7 @@
 [Landroid.icu.impl.units.MeasureUnitImpl$InitialCompoundPart;
 [Landroid.icu.impl.units.MeasureUnitImpl$PowerPart;
 [Landroid.icu.impl.units.MeasureUnitImpl$UnitsParser$Token$Type;
+[Landroid.icu.lang.UCharacter$IdentifierType;
 [Landroid.icu.lang.UCharacter$UnicodeBlock;
 [Landroid.icu.lang.UScript$ScriptUsage;
 [Landroid.icu.lang.UScriptRun$ParenStackEntry;
diff --git a/core/api/current.txt b/core/api/current.txt
index c0bc6d9..a819b6e 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -9801,6 +9801,7 @@
     method @NonNull public java.util.List<android.companion.AssociationInfo> getMyAssociations();
     method @Deprecated public boolean hasNotificationAccess(android.content.ComponentName);
     method @FlaggedApi("android.companion.perm_sync_user_consent") public boolean isPermissionTransferUserConsented(int);
+    method @FlaggedApi("android.companion.unpair_associated_device") @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean removeBond(int);
     method public void requestNotificationAccess(android.content.ComponentName);
     method @FlaggedApi("android.companion.association_tag") public void setAssociationTag(int, @NonNull String);
     method @RequiresPermission(android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE) public void startObservingDevicePresence(@NonNull String) throws android.companion.DeviceNotAssociatedException;
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 65628d3..fd9600c 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -16,7 +16,6 @@
 
 package android.accessibilityservice;
 
-import static android.accessibilityservice.AccessibilityServiceInfo.CAPABILITY_CAN_CONTROL_MAGNIFICATION;
 import static android.accessibilityservice.MagnificationConfig.MAGNIFICATION_MODE_FULLSCREEN;
 import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
 
@@ -70,8 +69,6 @@
 import android.view.accessibility.AccessibilityWindowInfo;
 import android.view.inputmethod.EditorInfo;
 
-import androidx.annotation.GuardedBy;
-
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.inputmethod.CancellationGroup;
 import com.android.internal.inputmethod.IAccessibilityInputMethodSession;
@@ -643,8 +640,6 @@
         /** The detected gesture information for different displays */
         boolean onGesture(AccessibilityGestureEvent gestureInfo);
         boolean onKeyEvent(KeyEvent event);
-        /** Magnification SystemUI connection changed callbacks */
-        void onMagnificationSystemUIConnectionChanged(boolean connected);
         /** Magnification changed callbacks for different displays */
         void onMagnificationChanged(int displayId, @NonNull Region region,
                 MagnificationConfig config);
@@ -795,6 +790,7 @@
     public static final String KEY_ACCESSIBILITY_SCREENSHOT_TIMESTAMP =
             "screenshot_timestamp";
 
+
     /**
      * Annotations for result codes of attaching accessibility overlays.
      *
@@ -841,13 +837,6 @@
 
     private WindowManager mWindowManager;
 
-    @GuardedBy("mLock")
-    private boolean mServiceConnected;
-    @GuardedBy("mLock")
-    private boolean mMagnificationSystemUIConnected;
-    @GuardedBy("mLock")
-    private boolean mServiceConnectedNotified;
-
     /** List of magnification controllers, mapping from displayId -> MagnificationController. */
     private final SparseArray<MagnificationController> mMagnificationControllers =
             new SparseArray<>(0);
@@ -897,14 +886,11 @@
             for (int i = 0; i < mMagnificationControllers.size(); i++) {
                 mMagnificationControllers.valueAt(i).onServiceConnectedLocked();
             }
-            checkIsMagnificationSystemUIConnectedAlready();
             final AccessibilityServiceInfo info = getServiceInfo();
             if (info != null) {
                 updateInputMethod(info);
                 mMotionEventSources = info.getMotionEventSources();
             }
-            mServiceConnected = true;
-            mServiceConnectedNotified = false;
         }
         if (mSoftKeyboardController != null) {
             mSoftKeyboardController.onServiceConnected();
@@ -912,57 +898,7 @@
 
         // The client gets to handle service connection last, after we've set
         // up any state upon which their code may rely.
-        if (android.view.accessibility.Flags
-                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
-            notifyOnServiceConnectedIfReady();
-        } else {
-            onServiceConnected();
-        }
-    }
-
-    private void notifyOnServiceConnectedIfReady() {
-        synchronized (mLock) {
-            if (mServiceConnectedNotified) {
-                return;
-            }
-            boolean canControlMagnification;
-            final AccessibilityServiceInfo info = getServiceInfo();
-            if (info != null) {
-                int flagMask = CAPABILITY_CAN_CONTROL_MAGNIFICATION;
-                canControlMagnification = (info.getCapabilities() & flagMask) == flagMask;
-            } else {
-                canControlMagnification = false;
-            }
-            boolean ready = canControlMagnification
-                    ? (mServiceConnected && mMagnificationSystemUIConnected)
-                    : mServiceConnected;
-            if (ready) {
-                getMainExecutor().execute(() -> onServiceConnected());
-                mServiceConnectedNotified = true;
-            }
-        }
-    }
-
-    @GuardedBy("mLock")
-    private void checkIsMagnificationSystemUIConnectedAlready() {
-        if (!android.view.accessibility.Flags
-                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
-            return;
-        }
-        if (mMagnificationSystemUIConnected) {
-            return;
-        }
-        final IAccessibilityServiceConnection connection =
-                AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId);
-        if (connection != null) {
-            try {
-                boolean connected = connection.isMagnificationSystemUIConnected();
-                mMagnificationSystemUIConnected = connected;
-            } catch (RemoteException re) {
-                Log.w(LOG_TAG, "Failed to check magnification system ui connection", re);
-                re.rethrowFromSystemServer();
-            }
-        }
+        onServiceConnected();
     }
 
     private void updateInputMethod(AccessibilityServiceInfo info) {
@@ -1424,22 +1360,6 @@
         }
     }
 
-    private void onMagnificationSystemUIConnectionChanged(boolean connected) {
-        if (!android.view.accessibility.Flags
-                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
-            return;
-        }
-
-        synchronized (mLock) {
-            boolean changed = (mMagnificationSystemUIConnected != connected);
-            mMagnificationSystemUIConnected = connected;
-
-            if (changed) {
-                notifyOnServiceConnectedIfReady();
-            }
-        }
-    }
-
     private void onMagnificationChanged(int displayId, @NonNull Region region,
             MagnificationConfig config) {
         MagnificationController controller;
@@ -2903,11 +2823,6 @@
             }
 
             @Override
-            public void onMagnificationSystemUIConnectionChanged(boolean connected) {
-                AccessibilityService.this.onMagnificationSystemUIConnectionChanged(connected);
-            }
-
-            @Override
             public void onMagnificationChanged(int displayId, @NonNull Region region,
                     MagnificationConfig config) {
                 AccessibilityService.this.onMagnificationChanged(displayId, region, config);
@@ -3117,16 +3032,6 @@
             });
         }
 
-        @Override
-        public void onMagnificationSystemUIConnectionChanged(boolean connected) {
-            mExecutor.execute(() -> {
-                if (mConnectionId != AccessibilityInteractionClient.NO_ID) {
-                    mCallback.onMagnificationSystemUIConnectionChanged(connected);
-                }
-                return;
-            });
-        }
-
         /** Magnification changed callbacks for different displays */
         public void onMagnificationChanged(int displayId, @NonNull Region region,
                 MagnificationConfig config) {
diff --git a/core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl b/core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl
index f1479ef..3bc61e5 100644
--- a/core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl
+++ b/core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl
@@ -48,8 +48,6 @@
 
     void onKeyEvent(in KeyEvent event, int sequence);
 
-    void onMagnificationSystemUIConnectionChanged(boolean connected);
-
     void onMagnificationChanged(int displayId, in Region region, in MagnificationConfig config);
 
     void onMotionEvent(in MotionEvent event);
diff --git a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
index 149e719..713d8e5 100644
--- a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
+++ b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
@@ -130,9 +130,6 @@
     void setMagnificationCallbackEnabled(int displayId, boolean enabled);
 
     @RequiresNoPermission
-    boolean isMagnificationSystemUIConnected();
-
-    @RequiresNoPermission
     boolean setSoftKeyboardShowMode(int showMode);
 
     @RequiresNoPermission
diff --git a/core/java/android/animation/OWNERS b/core/java/android/animation/OWNERS
index 822a35c..f3b330a 100644
--- a/core/java/android/animation/OWNERS
+++ b/core/java/android/animation/OWNERS
@@ -2,5 +2,4 @@
 
 romainguy@google.com
 tianliu@google.com
-alanv@google.com
 adamp@google.com
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 8e99e46b..9785252 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -1101,19 +1101,9 @@
     public abstract ArraySet<String> getClientPackages(String servicePackageName);
 
     /**
-     * Retrieve an IUnsafeIntentStrictModeCallback matching the given callingUid.
-     * Returns null no match is found.
-     * @param callingPid The PID mapped with the callback.
-     * @return The callback, if it exists.
+     * Trigger an unsafe intent usage strict mode violation.
      */
-    public abstract IUnsafeIntentStrictModeCallback getRegisteredStrictModeCallback(
-            int callingPid);
-
-    /**
-     * Unregisters an IUnsafeIntentStrictModeCallback matching the given callingUid.
-     * @param callingPid The PID mapped with the callback.
-     */
-    public abstract void unregisterStrictModeCallback(int callingPid);
+    public abstract void triggerUnsafeIntentStrictMode(int callingPid, int type, Intent intent);
 
     /**
      * Start a foreground service delegate.
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 76c1ed6..b384326 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -7500,7 +7500,7 @@
                     + data.instrumentationName + ": " + e.toString(), e);
             }
             try {
-                timestampApplicationOnCreateNs = SystemClock.elapsedRealtimeNanos();
+                timestampApplicationOnCreateNs = SystemClock.uptimeNanos();
                 mInstrumentation.callApplicationOnCreate(app);
             } catch (Exception e) {
                 timestampApplicationOnCreateNs = 0;
diff --git a/core/java/android/app/ApplicationStartInfo.java b/core/java/android/app/ApplicationStartInfo.java
index 3715c6e..f77c50a 100644
--- a/core/java/android/app/ApplicationStartInfo.java
+++ b/core/java/android/app/ApplicationStartInfo.java
@@ -416,11 +416,34 @@
 
     /**
      * @see #getStartIntent
+     *
+     * <p class="note"> Note: This method will clone the provided intent and ensure that the cloned
+     * intent doesn't contain any large objects like bitmaps in its extras by stripping it in the
+     * least aggressive acceptable way for the individual intent.</p>
+     *
      * @hide
      */
     public void setIntent(Intent startIntent) {
         if (startIntent != null) {
-            mStartIntent = startIntent.maybeStripForHistory();
+            if (startIntent.canStripForHistory()) {
+                // If maybeStripForHistory will return a lightened version, do that.
+                mStartIntent = startIntent.maybeStripForHistory();
+            } else if (startIntent.getExtras() != null) {
+                // If maybeStripForHistory would not return a lightened version and extras is
+                // non-null then extras contains un-parcelled data. Use cloneFilter to strip data
+                // more aggressively.
+                mStartIntent = startIntent.cloneFilter();
+            } else {
+                // Finally, if maybeStripForHistory would not return a lightened version and extras
+                // is null then do a regular clone so we don't leak the intent.
+                mStartIntent = new Intent(startIntent);
+            }
+
+            // If the newly cloned intent has an original intent, clear that as we don't need it and
+            // can't guarantee it doesn't need to be stripped as well.
+            if (mStartIntent.getOriginalIntent() != null) {
+                mStartIntent.setOriginalIntent(null);
+            }
         }
     }
 
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 15b13dc..ffb920b 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -757,6 +757,15 @@
     void addStartInfoTimestamp(int key, long timestampNs, int userId);
 
     /**
+    * Reports view related timestamps to be added to the calling apps most
+    * recent {@link ApplicationStartInfo}.
+    *
+    * @param renderThreadDrawStartTimeNs Clock monotonic time in nanoseconds of RenderThread draw start
+    * @param framePresentedTimeNs        Clock monotonic time in nanoseconds of frame presented
+    */
+    oneway void reportStartInfoViewTimestamps(long renderThreadDrawStartTimeNs, long framePresentedTimeNs);
+
+    /**
      * Return a list of {@link ApplicationExitInfo} records.
      *
      * <p class="note"> Note: System stores these historical information in a ring buffer, older
diff --git a/core/java/android/app/IUnsafeIntentStrictModeCallback.aidl b/core/java/android/app/IUnsafeIntentStrictModeCallback.aidl
index e2b3bb1..69e99a3 100644
--- a/core/java/android/app/IUnsafeIntentStrictModeCallback.aidl
+++ b/core/java/android/app/IUnsafeIntentStrictModeCallback.aidl
@@ -24,5 +24,5 @@
  */
 oneway interface IUnsafeIntentStrictModeCallback
 {
-    void onImplicitIntentMatchedInternalComponent(in Intent intent);
+    void onUnsafeIntent(int type, in Intent intent);
 }
diff --git a/core/java/android/app/OWNERS b/core/java/android/app/OWNERS
index 2e38c06..0fad979 100644
--- a/core/java/android/app/OWNERS
+++ b/core/java/android/app/OWNERS
@@ -61,7 +61,7 @@
 per-file ComponentCaller.java = file:COMPONENT_CALLER_OWNERS
 
 # DreamManager
-per-file DreamManager.java = file:/DREAM_MANAGER_OWNERS
+per-file DreamManager.java = file:/core/java/android/service/dreams/OWNERS
 
 # GrammaticalInflectionManager
 per-file *GrammaticalInflection* = file:/services/core/java/com/android/server/grammaticalinflection/OWNERS
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index 273a79e..348d4d8f 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -1969,11 +1969,6 @@
                 }
 
                 @Override
-                public void onMagnificationSystemUIConnectionChanged(boolean connected) {
-                    /* do nothing */
-                }
-
-                @Override
                 public void onMagnificationChanged(int displayId, @NonNull Region region,
                         MagnificationConfig config) {
                     /* do nothing */
diff --git a/core/java/android/app/pinner/OWNERS b/core/java/android/app/pinner/OWNERS
index 3e3fa66..fe5da9f 100644
--- a/core/java/android/app/pinner/OWNERS
+++ b/core/java/android/app/pinner/OWNERS
@@ -5,6 +5,5 @@
 philipcuadra@google.com
 shombert@google.com
 timmurray@google.com
-wessam@google.com
 jdduke@google.com
-shayba@google.com
\ No newline at end of file
+shayba@google.com
diff --git a/core/java/android/app/servertransaction/ClientTransaction.java b/core/java/android/app/servertransaction/ClientTransaction.java
index 48081bb..9a04ded 100644
--- a/core/java/android/app/servertransaction/ClientTransaction.java
+++ b/core/java/android/app/servertransaction/ClientTransaction.java
@@ -249,6 +249,9 @@
 
     @Override
     public void recycle() {
+        if (Flags.disableObjectPool()) {
+            return;
+        }
         if (mTransactionItems != null) {
             int size = mTransactionItems.size();
             for (int i = 0; i < size; i++) {
diff --git a/core/java/android/app/servertransaction/ObjectPool.java b/core/java/android/app/servertransaction/ObjectPool.java
index 2fec30a..598bd8a 100644
--- a/core/java/android/app/servertransaction/ObjectPool.java
+++ b/core/java/android/app/servertransaction/ObjectPool.java
@@ -16,6 +16,8 @@
 
 package android.app.servertransaction;
 
+import com.android.window.flags.Flags;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -38,6 +40,9 @@
      * @return An instance or null if there is none.
      */
     public static <T extends ObjectPoolItem> T obtain(Class<T> itemClass) {
+        if (Flags.disableObjectPool()) {
+            return null;
+        }
         synchronized (sPoolSync) {
             @SuppressWarnings("unchecked")
             final ArrayList<T> itemPool = (ArrayList<T>) sPoolMap.get(itemClass);
@@ -54,6 +59,9 @@
      * @see ObjectPoolItem#recycle()
      */
     public static <T extends ObjectPoolItem> void recycle(T item) {
+        if (Flags.disableObjectPool()) {
+            return;
+        }
         synchronized (sPoolSync) {
             @SuppressWarnings("unchecked")
             ArrayList<T> itemPool = (ArrayList<T>) sPoolMap.get(item.getClass());
diff --git a/core/java/android/app/wearable/WearableSensingManager.java b/core/java/android/app/wearable/WearableSensingManager.java
index 4b77c74..b2b14ce 100644
--- a/core/java/android/app/wearable/WearableSensingManager.java
+++ b/core/java/android/app/wearable/WearableSensingManager.java
@@ -436,18 +436,18 @@
     /**
      * Requests the wearable to start hotword recognition.
      *
-     * <p>When this method is called, the system will attempt to provide a {@link
-     * android.service.wearable.WearableHotwordAudioConsumer} to {@link WearableSensingService}.
-     * After first-stage hotword is detected on a wearable, {@link WearableSensingService} should
-     * send the hotword audio to the {@link android.service.wearable.WearableHotwordAudioConsumer},
-     * which will forward the data to the {@link android.service.voice.HotwordDetectionService} for
+     * <p>When this method is called, the system will attempt to provide a {@code
+     * Consumer<android.service.voice.HotwordAudioStream>} to {@link WearableSensingService}. After
+     * first-stage hotword is detected on a wearable, {@link WearableSensingService} should send the
+     * hotword audio to the {@code Consumer<android.service.voice.HotwordAudioStream>}, which will
+     * forward the data to the {@link android.service.voice.HotwordDetectionService} for
      * second-stage hotword validation. If hotword is detected there, the audio data will be
      * forwarded to the {@link android.service.voice.VoiceInteractionService}.
      *
      * <p>If the {@code targetVisComponentName} provided here is not null, when {@link
-     * WearableSensingService} sends hotword audio to the {@link
-     * android.service.wearable.WearableHotwordAudioConsumer}, the system will check whether the
-     * {@link android.service.voice.VoiceInteractionService} at that time is {@code
+     * WearableSensingService} sends hotword audio to the {@code
+     * Consumer<android.service.voice.HotwordAudioStream>}, the system will check whether the {@link
+     * android.service.voice.VoiceInteractionService} at that time is {@code
      * targetVisComponentName}. If not, the system will call {@link
      * WearableSensingService#onActiveHotwordAudioStopRequested()} and will not forward the audio
      * data to the current {@link android.service.voice.HotwordDetectionService} nor {@link
@@ -457,8 +457,8 @@
      * android.service.voice.VoiceInteractionService} is the same as {@code targetVisComponentName}.
      * The check here is just a protection against race conditions.
      *
-     * <p>Calling this method again will send a new {@link
-     * android.service.wearable.WearableHotwordAudioConsumer} to {@link WearableSensingService}. For
+     * <p>Calling this method again will send a new {@code
+     * Consumer<android.service.voice.HotwordAudioStream>} to {@link WearableSensingService}. For
      * audio data sent to the new consumer, the system will perform the above check using the newly
      * provided {@code targetVisComponentName}. The {@link WearableSensingService} should not
      * continue to use the previous consumers after receiving a new one.
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index 8fe5ae0..b4ad1c8 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -1149,6 +1149,32 @@
         }
     }
 
+    /**
+     * Remove bonding between this device and an associated companion device.
+     *
+     * <p>This is an asynchronous call, it will return immediately. Register for {@link
+     * BluetoothDevice#ACTION_BOND_STATE_CHANGED} intents to be notified when the bond removal
+     * process completes, and its result.
+     *
+     * @param associationId an already-associated companion device to remove bond from
+     * @return false on immediate error, true if bond removal process will begin
+     */
+    @FlaggedApi(Flags.FLAG_UNPAIR_ASSOCIATED_DEVICE)
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    public boolean removeBond(int associationId) {
+        if (mService == null) {
+            Log.w(TAG, "CompanionDeviceManager service is not available.");
+            return false;
+        }
+
+        try {
+            return mService.removeBond(associationId, mContext.getOpPackageName(),
+                    mContext.getUserId());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
     // TODO(b/315163162) Add @Deprecated keyword after 24Q2 cut.
     /**
      * Register to receive callbacks whenever the associated device comes in and out of range.
diff --git a/core/java/android/companion/ICompanionDeviceManager.aidl b/core/java/android/companion/ICompanionDeviceManager.aidl
index 1b00f90e..de3ddec 100644
--- a/core/java/android/companion/ICompanionDeviceManager.aidl
+++ b/core/java/android/companion/ICompanionDeviceManager.aidl
@@ -141,4 +141,7 @@
     byte[] getBackupPayload(int userId);
 
     void applyRestoredPayload(in byte[] payload, int userId);
+
+    @EnforcePermission("BLUETOOTH_CONNECT")
+    boolean removeBond(int associationId, in String packageName, int userId);
 }
diff --git a/core/java/android/companion/flags.aconfig b/core/java/android/companion/flags.aconfig
index 36d0e08..fd4ba83 100644
--- a/core/java/android/companion/flags.aconfig
+++ b/core/java/android/companion/flags.aconfig
@@ -46,4 +46,11 @@
     namespace: "companion"
     description: "Enable ongoing perm sync"
     bug: "338469649"
+}
+
+flag {
+    name: "unpair_associated_device"
+    namespace: "companion"
+    description: "Unpair with an associated bluetooth device"
+    bug: "322237619"
 }
\ No newline at end of file
diff --git a/core/java/android/companion/virtual/IVirtualDevice.aidl b/core/java/android/companion/virtual/IVirtualDevice.aidl
index 30a1135..24f18cc 100644
--- a/core/java/android/companion/virtual/IVirtualDevice.aidl
+++ b/core/java/android/companion/virtual/IVirtualDevice.aidl
@@ -281,5 +281,5 @@
      * Returns the id of the virtual camera with given config.
      */
     @EnforcePermission("CREATE_VIRTUAL_DEVICE")
-    int getVirtualCameraId(in VirtualCameraConfig camera);
+    String getVirtualCameraId(in VirtualCameraConfig camera);
 }
diff --git a/core/java/android/companion/virtual/VirtualDeviceInternal.java b/core/java/android/companion/virtual/VirtualDeviceInternal.java
index 00d5343..60448ba 100644
--- a/core/java/android/companion/virtual/VirtualDeviceInternal.java
+++ b/core/java/android/companion/virtual/VirtualDeviceInternal.java
@@ -378,8 +378,8 @@
     VirtualCamera createVirtualCamera(@NonNull VirtualCameraConfig config) {
         try {
             mVirtualDevice.registerVirtualCamera(config);
-            return new VirtualCamera(mVirtualDevice,
-                            Integer.toString(mVirtualDevice.getVirtualCameraId(config)), config);
+            return new VirtualCamera(mVirtualDevice, mVirtualDevice.getVirtualCameraId(config),
+                    config);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index bad73fc..4fcf6b6 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -7188,9 +7188,10 @@
      * as the package remains in the foreground, or has any active manifest components (e.g. when
      * another app is accessing a content provider in the package).
      * <p>
-     * If you want to revoke the permissions right away, you could call {@code System.exit()}, but
-     * this could affect other apps that are accessing your app at the moment. For example, apps
-     * accessing a content provider in your app will all crash.
+     * If you want to revoke the permissions right away, you could call {@code System.exit()} in
+     * {@code Handler.postDelayed} with a delay to allow completion of async IPC, But
+     * {@code System.exit()} could affect other apps that are accessing your app at the moment.
+     * For example, apps accessing a content provider in your app will all crash.
      * <p>
      * Note that the settings UI shows a permission group as granted as long as at least one
      * permission in the group is granted. If you want the user to observe the revocation in the
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index c8cae82..02d62a2 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -8157,6 +8157,9 @@
                 int eq = uri.indexOf('=', i);
                 if (eq < 0) eq = i-1;
                 int semi = uri.indexOf(';', i);
+                if (semi < 0) {
+                    throw new URISyntaxException(uri, "uri end not found");
+                }
                 String value = eq < semi ? Uri.decode(uri.substring(eq + 1, semi)) : "";
 
                 // action
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 6168b68..93cc71b 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -695,13 +695,13 @@
      * <p>If the caller is running on a managed profile, it'll return only the current profile.
      * Otherwise it'll return the same list as {@link UserManager#getUserProfiles()} would.
      *
-     * <p>To get hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>To get hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      */
     @SuppressLint("RequiresPermission")
@@ -764,13 +764,13 @@
      * list.</li>
      * </ul>
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param packageName The specific package to query. If null, it checks all installed packages
@@ -820,13 +820,13 @@
      * Returns information related to a user which is useful for displaying UI elements
      * to distinguish it from other users (eg, badges).
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param userHandle user handle of the user for which LauncherUserInfo is requested.
@@ -873,13 +873,13 @@
      * </ul>
      * </p>
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param packageName the package for which intent sender to launch App Market Activity is
@@ -913,13 +913,13 @@
      * <p>An empty list denotes that all system packages should be treated as pre-installed for that
      * user at creation.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param userHandle the user for which installed system packages are required.
@@ -945,7 +945,7 @@
     /**
      * Returns {@link IntentSender} which can be used to start the Private Space Settings Activity.
      *
-     * <p> Caller should have {@link android.app.role.RoleManager.ROLE_HOME} and either of the
+     * <p> Caller should have {@link android.app.role.RoleManager#ROLE_HOME} and either of the
      * permissions required.</p>
      *
      * @return {@link IntentSender} object which launches the Private Space Settings Activity, if
@@ -968,13 +968,13 @@
      * Returns the activity info for a given intent and user handle, if it resolves. Otherwise it
      * returns null.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param intent The intent to find a match for.
@@ -1033,13 +1033,13 @@
     /**
      * Starts a Main activity in the specified profile.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param component The ComponentName of the activity to launch
@@ -1087,13 +1087,13 @@
      * Starts the settings activity to show the application details for a
      * package in the specified profile.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param component The ComponentName of the package to launch settings for.
@@ -1215,13 +1215,13 @@
     /**
      * Checks if the package is installed and enabled for a profile.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param packageName The package to check.
@@ -1249,13 +1249,13 @@
      * <p>The contents of this {@link Bundle} are supposed to be a contract between the suspending
      * app and the launcher.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * <p>Note: This just returns whatever extras were provided to the system, <em>which might
@@ -1286,13 +1286,13 @@
      * could be done because the package was marked as distracting to the user via
      * {@code PackageManager.setDistractingPackageRestrictions(String[], int)}.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param packageName The package for which to check.
@@ -1316,13 +1316,13 @@
     /**
      * Returns {@link ApplicationInfo} about an application installed for a specific user profile.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param packageName The package name of the application
@@ -1385,13 +1385,13 @@
      * <p>The activity may still not be exported, in which case {@link #startMainActivity} will
      * throw a {@link SecurityException} unless the caller has the same UID as the target app's.
      *
-     * <p>If the user in question is a hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>If the user in question is a hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param component The activity to check.
@@ -1960,13 +1960,13 @@
     /**
      * Registers a callback for changes to packages in this user and managed profiles.
      *
-     * <p>To receive callbacks for hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>To receive callbacks for hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param callback The callback to register.
@@ -1981,13 +1981,13 @@
     /**
      * Registers a callback for changes to packages in this user and managed profiles.
      *
-     * <p>To receive callbacks for hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>To receive callbacks for hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @param callback The callback to register.
@@ -2446,13 +2446,13 @@
      * package name in the app's manifest, have the android.permission.QUERY_ALL_PACKAGES, or be
      * the session owner to retrieve these details.
      *
-     * <p>To receive callbacks for hidden profile {@link UserManager.USER_TYPE_PROFILE_PRIVATE},
+     * <p>To receive callbacks for hidden profile {@link UserManager#USER_TYPE_PROFILE_PRIVATE},
      * caller should have either:</p>
      * <ul>
-     * <li>the privileged {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES}
+     * <li>the privileged {@code android.Manifest.permission#ACCESS_HIDDEN_PROFILES_FULL}
      * permission</li>
-     * <li>the normal {@link android.Manifest.permission.ACCESS_HIDDEN_PROFILES} permission and the
-     * {@link android.app.role.RoleManager.ROLE_HOME} role. </li>
+     * <li>the normal {@link android.Manifest.permission#ACCESS_HIDDEN_PROFILES} permission and the
+     * {@link android.app.role.RoleManager#ROLE_HOME} role. </li>
      * </ul>
      *
      * @see PackageInstaller#getAllSessions()
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index bbd0e9f..821034a 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -3468,8 +3468,12 @@
          *              Android S  ({@link android.os.Build.VERSION_CODES#S API 31})</li>
          *              <li>{@link android.os.Build.VERSION_CODES#R API 30} or higher on
          *              Android T ({@link android.os.Build.VERSION_CODES#TIRAMISU API 33})</li>
-         *              <li>{@link android.os.Build.VERSION_CODES#S API 31} or higher <b>after</b>
-         *              Android T ({@link android.os.Build.VERSION_CODES#TIRAMISU API 33})</li>
+         *              <li>{@link android.os.Build.VERSION_CODES#S API 31} or higher on
+         *              Android U ({@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE API 34})
+         *              </li>
+         *              <li>{@link android.os.Build.VERSION_CODES#TIRAMISU API 33} or higher on
+         *              Android V ({@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM API 35})
+         *              </li>
          *          </ul>
          *     </li>
          *     <li>The installer is:
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 1f6730b..4b579e7 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2628,15 +2628,6 @@
             return Build.VERSION_CODES.CUR_DEVELOPMENT;
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                targetCode)) {
-            Slog.w(TAG, "Package requires development platform " + targetCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return Build.VERSION.SDK_INT;
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             outError[0] = "Requires development platform " + targetCode
@@ -2708,15 +2699,6 @@
             return Build.VERSION_CODES.CUR_DEVELOPMENT;
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                minCode)) {
-            Slog.w(TAG, "Package requires min development platform " + minCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return Build.VERSION.SDK_INT;
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             outError[0] = "Requires development platform " + minCode
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index 5668c54..a9c07d1 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -267,3 +267,13 @@
       purpose: PURPOSE_BUGFIX
     }
 }
+
+flag {
+  name: "use_private_space_icon_in_biometric_prompt"
+  namespace: "profile_experiences"
+  description: "Update the biometric prompt from generic Settings icon to private space icon"
+  bug: "333528540"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
index c7403c0..153dd9a 100644
--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
@@ -316,15 +316,6 @@
             return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                        minCode)) {
-            Slog.w(TAG, "Parsed package requires min development platform " + minCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return input.success(Build.VERSION.SDK_INT);
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK,
@@ -377,27 +368,19 @@
             return input.success(targetVers);
         }
 
-        // If it's a pre-release SDK and the codename matches this platform, it
-        // definitely targets this SDK.
-        if (matchTargetCode(platformSdkCodenames, targetCode)) {
-            return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
-        }
-
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                        targetCode)) {
-            Slog.w(TAG, "Parsed package requires development platform " + targetCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return input.success(Build.VERSION.SDK_INT);
-        }
-
         try {
             if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) {
                 return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
             }
         } catch (IllegalArgumentException e) {
-            return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, "Bad package SDK");
+            // isAtMost() throws it when encountering an older SDK codename
+            return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage());
+        }
+
+        // If it's a pre-release SDK and the codename matches this platform, it
+        // definitely targets this SDK.
+        if (matchTargetCode(platformSdkCodenames, targetCode)) {
+            return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
         }
 
         // Otherwise, we're looking at an incompatible pre-release SDK.
diff --git a/core/java/android/credentials/CredentialManager.java b/core/java/android/credentials/CredentialManager.java
index 481ff2e..f0f691d 100644
--- a/core/java/android/credentials/CredentialManager.java
+++ b/core/java/android/credentials/CredentialManager.java
@@ -470,8 +470,8 @@
      * Returns {@code true} if the calling application provides a CredentialProviderService that is
      * enabled for the current user, or {@code false} otherwise. CredentialProviderServices are
      * enabled on a per-service basis so the individual component name of the service should be
-     * passed in here. <strong>Usage of this API is discouraged as it is not fully functional, and
-     * may throw a NullPointerException on certain devices and/or API versions.</strong>
+     * passed in here. <strong>Usage of this API is encouraged in API level 35 and above. It
+     * may throw a NullPointerException on certain devices running other API versions.</strong>
      *
      * @throws IllegalArgumentException if the componentName package does not match the calling
      * package name this call will throw an exception
diff --git a/core/java/android/gesture/OWNERS b/core/java/android/gesture/OWNERS
index b3b8775..168630a 100644
--- a/core/java/android/gesture/OWNERS
+++ b/core/java/android/gesture/OWNERS
@@ -1,7 +1,6 @@
 # Bug component: 25700
 
 romainguy@google.com
-alanv@google.com
 adamp@google.com
 aurimas@google.com
 nduca@google.com
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 3cc87ea..6fffb82 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -1472,9 +1472,9 @@
             new Key<Integer>("android.flash.info.strengthDefaultLevel", int.class);
 
     /**
-     * <p>Maximum flash brightness level for manual flash control in SINGLE mode.</p>
+     * <p>Maximum flash brightness level for manual flash control in <code>SINGLE</code> mode.</p>
      * <p>Maximum flash brightness level in camera capture mode and
-     * {@link CaptureRequest#FLASH_MODE android.flash.mode} set to SINGLE.
+     * {@link CaptureRequest#FLASH_MODE android.flash.mode} set to <code>SINGLE</code>.
      * Value will be &gt; 1 if the manual flash strength control feature is supported,
      * otherwise the value will be equal to 1.
      * Note that this level is just a number of supported levels (the granularity of control).
@@ -1490,7 +1490,7 @@
             new Key<Integer>("android.flash.singleStrengthMaxLevel", int.class);
 
     /**
-     * <p>Default flash brightness level for manual flash control in SINGLE mode.</p>
+     * <p>Default flash brightness level for manual flash control in <code>SINGLE</code> mode.</p>
      * <p>If flash unit is available this will be greater than or equal to 1 and less
      * or equal to {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel}.
      * Note for devices that do not support the manual flash strength control
@@ -1506,9 +1506,9 @@
             new Key<Integer>("android.flash.singleStrengthDefaultLevel", int.class);
 
     /**
-     * <p>Maximum flash brightness level for manual flash control in TORCH mode</p>
+     * <p>Maximum flash brightness level for manual flash control in <code>TORCH</code> mode</p>
      * <p>Maximum flash brightness level in camera capture mode and
-     * {@link CaptureRequest#FLASH_MODE android.flash.mode} set to TORCH.
+     * {@link CaptureRequest#FLASH_MODE android.flash.mode} set to <code>TORCH</code>.
      * Value will be &gt; 1 if the manual flash strength control feature is supported,
      * otherwise the value will be equal to 1.</p>
      * <p>Note that this level is just a number of supported levels(the granularity of control).
@@ -1530,7 +1530,7 @@
             new Key<Integer>("android.flash.torchStrengthMaxLevel", int.class);
 
     /**
-     * <p>Default flash brightness level for manual flash control in TORCH mode</p>
+     * <p>Default flash brightness level for manual flash control in <code>TORCH</code> mode</p>
      * <p>If flash unit is available this will be greater than or equal to 1 and less
      * or equal to {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel}.
      * Note for the devices that do not support the manual flash strength control feature,
@@ -4152,10 +4152,16 @@
     /**
      * <p>Whether the RAW images output from this camera device are subject to
      * lens shading correction.</p>
-     * <p>If TRUE, all images produced by the camera device in the RAW image formats will
-     * have lens shading correction already applied to it. If FALSE, the images will
-     * not be adjusted for lens shading correction.
-     * See {@link CameraCharacteristics#REQUEST_MAX_NUM_OUTPUT_RAW android.request.maxNumOutputRaw} for a list of RAW image formats.</p>
+     * <p>If <code>true</code>, all images produced by the camera device in the <code>RAW</code> image formats will have
+     * at least some lens shading correction already applied to it. If <code>false</code>, the images will
+     * not be adjusted for lens shading correction.  See {@link CameraCharacteristics#REQUEST_MAX_NUM_OUTPUT_RAW android.request.maxNumOutputRaw} for a
+     * list of RAW image formats.</p>
+     * <p>When <code>true</code>, the <code>lensShadingCorrectionMap</code> key may still have values greater than 1.0,
+     * and those will need to be applied to any captured RAW frames for them to match the shading
+     * correction of processed buffers such as <code>YUV</code> or <code>JPEG</code> images. This may occur, for
+     * example, when some basic fixed lens shading correction is applied by hardware to RAW data,
+     * and additional correction is done dynamically in the camera processing pipeline after
+     * demosaicing.</p>
      * <p>This key will be <code>null</code> for all devices do not report this information.
      * Devices with RAW capability will always report this information in this key.</p>
      * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index 938636f..6968f27 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -2683,27 +2683,27 @@
     /**
      * <p>Flash strength level to be used when manual flash control is active.</p>
      * <p>Flash strength level to use in capture mode i.e. when the applications control
-     * flash with either SINGLE or TORCH mode.</p>
+     * flash with either <code>SINGLE</code> or <code>TORCH</code> mode.</p>
      * <p>Use {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} to check whether the device supports
      * flash strength control or not.
-     * If the values of android.flash.info.singleStrengthMaxLevel and
+     * If the values of {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} are greater than 1,
      * then the device supports manual flash strength control.</p>
-     * <p>If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> TORCH the value must be &gt;= 1
+     * <p>If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> <code>TORCH</code> the value must be &gt;= 1
      * and &lt;= {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel}.
      * If the application doesn't set the key and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} &gt; 1,
      * then the flash will be fired at the default level set by HAL in
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL android.flash.torchStrengthDefaultLevel}.
-     * If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> SINGLE, then the value must be &gt;= 1
+     * If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> <code>SINGLE</code>, then the value must be &gt;= 1
      * and &lt;= {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel}.
      * If the application does not set this key and
      * {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} &gt; 1,
      * then the flash will be fired at the default level set by HAL
      * in {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL android.flash.singleStrengthDefaultLevel}.
-     * If {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is set to any of ON_AUTO_FLASH, ON_ALWAYS_FLASH,
-     * ON_AUTO_FLASH_REDEYE, ON_EXTERNAL_FLASH values, then the strengthLevel will be ignored.</p>
+     * If {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is set to any of <code>ON_AUTO_FLASH</code>, <code>ON_ALWAYS_FLASH</code>,
+     * <code>ON_AUTO_FLASH_REDEYE</code>, <code>ON_EXTERNAL_FLASH</code> values, then the strengthLevel will be ignored.</p>
      * <p><b>Range of valid values:</b><br>
      * <code>[1-{@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel}]</code> when the {@link CaptureRequest#FLASH_MODE android.flash.mode} is
      * set to TORCH;
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 4406a41..ef83f9a 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -2976,27 +2976,27 @@
     /**
      * <p>Flash strength level to be used when manual flash control is active.</p>
      * <p>Flash strength level to use in capture mode i.e. when the applications control
-     * flash with either SINGLE or TORCH mode.</p>
+     * flash with either <code>SINGLE</code> or <code>TORCH</code> mode.</p>
      * <p>Use {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} to check whether the device supports
      * flash strength control or not.
-     * If the values of android.flash.info.singleStrengthMaxLevel and
+     * If the values of {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} are greater than 1,
      * then the device supports manual flash strength control.</p>
-     * <p>If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> TORCH the value must be &gt;= 1
+     * <p>If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> <code>TORCH</code> the value must be &gt;= 1
      * and &lt;= {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel}.
      * If the application doesn't set the key and
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel} &gt; 1,
      * then the flash will be fired at the default level set by HAL in
      * {@link CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL android.flash.torchStrengthDefaultLevel}.
-     * If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> SINGLE, then the value must be &gt;= 1
+     * If the {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> <code>SINGLE</code>, then the value must be &gt;= 1
      * and &lt;= {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel}.
      * If the application does not set this key and
      * {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL android.flash.singleStrengthMaxLevel} &gt; 1,
      * then the flash will be fired at the default level set by HAL
      * in {@link CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL android.flash.singleStrengthDefaultLevel}.
-     * If {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is set to any of ON_AUTO_FLASH, ON_ALWAYS_FLASH,
-     * ON_AUTO_FLASH_REDEYE, ON_EXTERNAL_FLASH values, then the strengthLevel will be ignored.</p>
+     * If {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is set to any of <code>ON_AUTO_FLASH</code>, <code>ON_ALWAYS_FLASH</code>,
+     * <code>ON_AUTO_FLASH_REDEYE</code>, <code>ON_EXTERNAL_FLASH</code> values, then the strengthLevel will be ignored.</p>
      * <p><b>Range of valid values:</b><br>
      * <code>[1-{@link CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL android.flash.torchStrengthMaxLevel}]</code> when the {@link CaptureRequest#FLASH_MODE android.flash.mode} is
      * set to TORCH;
@@ -4846,6 +4846,9 @@
      * correction map that needs to be applied to get shading
      * corrected images that match the camera device's output for
      * non-RAW formats.</p>
+     * <p>Therefore, whatever the value of lensShadingApplied is, the lens
+     * shading map should always be applied to RAW images if the goal is to
+     * match the shading appearance of processed (non-RAW) images.</p>
      * <p>For a complete shading correction map, the least shaded
      * section of the image will have a gain factor of 1; all
      * other sections will have gains above 1.</p>
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 278e863..4d69437 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -720,6 +720,7 @@
 
     final ViewTreeObserver.OnComputeInternalInsetsListener mInsetsComputer = info -> {
         onComputeInsets(mTmpInsets);
+        mNavigationBarController.updateInsets(mTmpInsets);
         if (!mViewsCreated) {
             // The IME views are not ready, keep visible insets untouched.
             mTmpInsets.visibleTopInsets = 0;
diff --git a/core/java/android/inputmethodservice/NavigationBarController.java b/core/java/android/inputmethodservice/NavigationBarController.java
index 9c55b0e..de67e06 100644
--- a/core/java/android/inputmethodservice/NavigationBarController.java
+++ b/core/java/android/inputmethodservice/NavigationBarController.java
@@ -58,6 +58,10 @@
 final class NavigationBarController {
 
     private interface Callback {
+
+        default void updateInsets(@NonNull InputMethodService.Insets originalInsets) {
+        }
+
         default void updateTouchableInsets(@NonNull InputMethodService.Insets originalInsets,
                 @NonNull ViewTreeObserver.InternalInsetsInfo dest) {
         }
@@ -96,6 +100,15 @@
                 ? new Impl(inputMethodService) : Callback.NOOP;
     }
 
+    /**
+     * Update the given insets to be at least as big as the IME navigation bar, when visible.
+     *
+     * @param originalInsets the insets to check and modify to include the IME navigation bar.
+     */
+    void updateInsets(@NonNull InputMethodService.Insets originalInsets) {
+        mImpl.updateInsets(originalInsets);
+    }
+
     void updateTouchableInsets(@NonNull InputMethodService.Insets originalInsets,
             @NonNull ViewTreeObserver.InternalInsetsInfo dest) {
         mImpl.updateTouchableInsets(originalInsets, dest);
@@ -270,6 +283,24 @@
         }
 
         @Override
+        public void updateInsets(@NonNull InputMethodService.Insets originalInsets) {
+            if (!mImeDrawsImeNavBar || mNavigationBarFrame == null
+                    || mNavigationBarFrame.getVisibility() != View.VISIBLE
+                    || mService.isFullscreenMode()) {
+                return;
+            }
+
+            final int[] loc = new int[2];
+            mNavigationBarFrame.getLocationInWindow(loc);
+            if (originalInsets.contentTopInsets > loc[1]) {
+                originalInsets.contentTopInsets = loc[1];
+            }
+            if (originalInsets.visibleTopInsets > loc[1]) {
+                originalInsets.visibleTopInsets = loc[1];
+            }
+        }
+
+        @Override
         public void updateTouchableInsets(@NonNull InputMethodService.Insets originalInsets,
                 @NonNull ViewTreeObserver.InternalInsetsInfo dest) {
             if (!mImeDrawsImeNavBar || mNavigationBarFrame == null) {
diff --git a/core/java/android/os/BatteryConsumer.java b/core/java/android/os/BatteryConsumer.java
index b417534..7bdd53d 100644
--- a/core/java/android/os/BatteryConsumer.java
+++ b/core/java/android/os/BatteryConsumer.java
@@ -197,6 +197,9 @@
             POWER_COMPONENT_MOBILE_RADIO,
             POWER_COMPONENT_WIFI,
             POWER_COMPONENT_BLUETOOTH,
+            POWER_COMPONENT_AUDIO,
+            POWER_COMPONENT_VIDEO,
+            POWER_COMPONENT_FLASHLIGHT,
     };
 
     static final int COLUMN_INDEX_BATTERY_CONSUMER_TYPE = 0;
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 8aa2c35..30d2dec 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -1238,6 +1238,18 @@
         public static final int VANILLA_ICE_CREAM = 35;
     }
 
+    /**
+     * The vendor API for 2024 Q2
+     *
+     * <p>For Android 14-QPR3 and later, the vendor API level is completely decoupled from the SDK
+     * API level and the format has switched to YYYYMM (year and month)
+     *
+     * @see <a href="https://preview.source.android.com/docs/core/architecture/api-flags">Vendor API
+     *     level</a>
+     * @hide
+     */
+    public static final int VENDOR_API_2024_Q2 = 202404;
+
     /** The type of build, like "user" or "eng". */
     public static final String TYPE = getString("ro.build.type");
 
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index 61b52c6..e6b1c07 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -580,6 +580,8 @@
                            ", copied:" + progress +
                            ", read:" + (count - countToRead) +
                            ", in pipe: " + countInPipe);
+                    Os.close(pipes[0]);
+                    Os.close(pipes[1]);
                     throw new ErrnoException("splice, pipe --> fdOut", EIO);
                 } else {
                     progress += t;
@@ -607,6 +609,8 @@
                 listener.onProgress(progressSnapshot);
             });
         }
+        Os.close(pipes[0]);
+        Os.close(pipes[1]);
         return progress;
     }
 
diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS
index 9f3364f..04d4970 100644
--- a/core/java/android/os/OWNERS
+++ b/core/java/android/os/OWNERS
@@ -107,4 +107,8 @@
 per-file ProfilingServiceManager.java = file:/PERFORMANCE_OWNERS
 
 # Memory
-per-file OomKillRecord.java = file:/MEMORY_OWNERS
\ No newline at end of file
+per-file OomKillRecord.java = file:/MEMORY_OWNERS
+
+# MessageQueue
+per-file MessageQueue.java = mfasheh@google.com, shayba@google.com
+per-file Message.java = mfasheh@google.com, shayba@google.com
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 222c69c..292e6bd 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -17,6 +17,10 @@
 
 import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
 
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH;
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH;
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH;
+
 import android.animation.ValueAnimator;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -2135,27 +2139,26 @@
         }
     }
 
-    private static void registerIntentMatchingRestrictionCallback() {
-        try {
-            ActivityManager.getService().registerStrictModeCallback(
-                    new UnsafeIntentStrictModeCallback());
-        } catch (RemoteException e) {
-            /*
-            If exception is DeadObjectException it means system process is dead, so we can ignore
-             */
-            if (!(e instanceof DeadObjectException)) {
-                Log.e(TAG, "RemoteException handling StrictMode violation", e);
+    private static final class UnsafeIntentStrictModeCallback
+            extends IUnsafeIntentStrictModeCallback.Stub {
+        @Override
+        public void onUnsafeIntent(int type, Intent intent) {
+            if (StrictMode.vmUnsafeIntentLaunchEnabled()) {
+                StrictMode.onUnsafeIntentLaunch(type, intent);
             }
         }
     }
 
-    private static final class UnsafeIntentStrictModeCallback
-            extends IUnsafeIntentStrictModeCallback.Stub {
-        @Override
-        public void onImplicitIntentMatchedInternalComponent(Intent intent) {
-            if (StrictMode.vmUnsafeIntentLaunchEnabled()) {
-                StrictMode.onUnsafeIntentLaunch(intent,
-                        "Launch of unsafe implicit intent: " + intent);
+    /** Each process should only have one singleton callback */
+    private static volatile UnsafeIntentStrictModeCallback sUnsafeIntentCallback;
+
+    private static void registerIntentMatchingRestrictionCallback() {
+        if (sUnsafeIntentCallback == null) {
+            sUnsafeIntentCallback = new UnsafeIntentStrictModeCallback();
+            try {
+                ActivityManager.getService().registerStrictModeCallback(sUnsafeIntentCallback);
+            } catch (RemoteException e) {
+                // system_server should not throw
             }
         }
     }
@@ -2383,9 +2386,22 @@
         onVmPolicyViolation(new UnsafeIntentLaunchViolation(intent));
     }
 
-    /** @hide */
-    public static void onUnsafeIntentLaunch(Intent intent, String message) {
-        onVmPolicyViolation(new UnsafeIntentLaunchViolation(intent, message));
+    private static void onUnsafeIntentLaunch(int type, Intent intent) {
+        String msg;
+        switch (type) {
+            case UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH:
+                msg = "Launch of intent with null action: ";
+                break;
+            case UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH:
+                msg = "Implicit intent matching internal non-exported component: ";
+                break;
+            case UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH:
+                msg = "Intent mismatch target component intent filter: ";
+                break;
+            default:
+                return;
+        }
+        onVmPolicyViolation(new UnsafeIntentLaunchViolation(intent, msg + intent));
     }
 
     /** Assume locked until we hear otherwise */
diff --git a/core/java/android/os/health/SystemHealthManager.java b/core/java/android/os/health/SystemHealthManager.java
index 322a8e6..deabfed 100644
--- a/core/java/android/os/health/SystemHealthManager.java
+++ b/core/java/android/os/health/SystemHealthManager.java
@@ -33,13 +33,16 @@
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
+import android.os.SynchronousResultReceiver;
 
 import com.android.internal.app.IBatteryStats;
+import com.android.server.power.optimization.Flags;
 
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 import java.util.concurrent.Executor;
+import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 
 /**
@@ -67,6 +70,14 @@
     private final IPowerStatsService mPowerStats;
     private List<PowerMonitor> mPowerMonitorsInfo;
     private final Object mPowerMonitorsLock = new Object();
+    private static final long TAKE_UID_SNAPSHOT_TIMEOUT_MILLIS = 10_000;
+
+    private static class PendingUidSnapshots {
+        public int[] uids;
+        public SynchronousResultReceiver resultReceiver;
+    }
+
+    private final PendingUidSnapshots mPendingUidSnapshots = new PendingUidSnapshots();
 
     /**
      * Construct a new SystemHealthManager object.
@@ -111,12 +122,19 @@
      * @see Process#myUid() Process.myUid()
      */
     public HealthStats takeUidSnapshot(int uid) {
-        try {
-            final HealthStatsParceler parceler = mBatteryStats.takeUidSnapshot(uid);
-            return parceler.getHealthStats();
-        } catch (RemoteException ex) {
-            throw new RuntimeException(ex);
+        if (!Flags.onewayBatteryStatsService()) {
+            try {
+                final HealthStatsParceler parceler = mBatteryStats.takeUidSnapshot(uid);
+                return parceler.getHealthStats();
+            } catch (RemoteException ex) {
+                throw ex.rethrowFromSystemServer();
+            }
         }
+        final HealthStats[] result = takeUidSnapshots(new int[]{uid});
+        if (result != null && result.length >= 1) {
+            return result[0];
+        }
+        return null;
     }
 
     /**
@@ -144,17 +162,61 @@
      * other than its own.
      */
     public HealthStats[] takeUidSnapshots(int[] uids) {
-        try {
-            final HealthStatsParceler[] parcelers = mBatteryStats.takeUidSnapshots(uids);
-            final HealthStats[] results = new HealthStats[uids.length];
-            final int N = uids.length;
-            for (int i = 0; i < N; i++) {
-                results[i] = parcelers[i].getHealthStats();
+        if (!Flags.onewayBatteryStatsService()) {
+            try {
+                final HealthStatsParceler[] parcelers = mBatteryStats.takeUidSnapshots(uids);
+                final int count = uids.length;
+                final HealthStats[] results = new HealthStats[count];
+                for (int i = 0; i < count; i++) {
+                    results[i] = parcelers[i].getHealthStats();
+                }
+                return results;
+            } catch (RemoteException ex) {
+                throw ex.rethrowFromSystemServer();
             }
-            return results;
-        } catch (RemoteException ex) {
-            throw new RuntimeException(ex);
         }
+
+        SynchronousResultReceiver resultReceiver;
+        synchronized (mPendingUidSnapshots) {
+            if (Arrays.equals(mPendingUidSnapshots.uids, uids)) {
+                resultReceiver = mPendingUidSnapshots.resultReceiver;
+            } else {
+                mPendingUidSnapshots.uids = Arrays.copyOf(uids, uids.length);
+                mPendingUidSnapshots.resultReceiver = resultReceiver =
+                        new SynchronousResultReceiver("takeUidSnapshots");
+                try {
+                    mBatteryStats.takeUidSnapshotsAsync(uids, resultReceiver);
+                } catch (RemoteException ex) {
+                    throw ex.rethrowFromSystemServer();
+                }
+            }
+        }
+
+        SynchronousResultReceiver.Result result;
+        try {
+            result = resultReceiver.awaitResult(TAKE_UID_SNAPSHOT_TIMEOUT_MILLIS);
+        } catch (TimeoutException e) {
+            throw new RuntimeException(e);
+        } finally {
+            synchronized (mPendingUidSnapshots) {
+                if (mPendingUidSnapshots.resultReceiver == resultReceiver) {
+                    mPendingUidSnapshots.uids = null;
+                    mPendingUidSnapshots.resultReceiver = null;
+                }
+            }
+        }
+
+        final HealthStats[] results = new HealthStats[uids.length];
+        if (result.bundle != null) {
+            HealthStatsParceler[] parcelers = result.bundle.getParcelableArray(
+                    IBatteryStats.KEY_UID_SNAPSHOTS, HealthStatsParceler.class);
+            if (parcelers != null && parcelers.length == uids.length) {
+                for (int i = 0; i < parcelers.length; i++) {
+                    results[i] = parcelers[i].getHealthStats();
+                }
+            }
+        }
+        return results;
     }
 
     /**
diff --git a/core/java/android/permission/flags.aconfig b/core/java/android/permission/flags.aconfig
index 34fb963..e029e52 100644
--- a/core/java/android/permission/flags.aconfig
+++ b/core/java/android/permission/flags.aconfig
@@ -193,7 +193,7 @@
     namespace: "permissions"
     description: "Enable getDeviceId API in OpEventProxyInfo"
     bug: "337340961"
- }
+}
 
 flag {
     name: "device_aware_app_op_new_schema_enabled"
@@ -201,4 +201,15 @@
     namespace: "permissions"
     description: "Persist device attributed AppOp accesses on the disk"
     bug: "308201969"
-}
\ No newline at end of file
+}
+
+flag {
+    name: "apex_signature_permission_allowlist_enabled"
+    is_fixed_read_only: true
+    namespace: "permissions"
+    description: "Enable reading signature permission allowlist from APEXes"
+    bug: "308573169"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 7933212..05345d8 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1736,6 +1736,24 @@
             "android.settings.NETWORK_OPERATOR_SETTINGS";
 
     /**
+     * Activity Action: Show settings for selecting the network provider.
+     * <p>
+     * In some cases, a matching Activity may not be provided, so ensure you
+     * safeguard against this.
+     * <p>
+     * Access to this preference can be customized via Settings' app.
+     * <p>
+     * Input: Nothing.
+     * <p>
+     * Output: Nothing.
+     *
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_NETWORK_PROVIDER_SETTINGS =
+            "android.settings.NETWORK_PROVIDER_SETTINGS";
+
+    /**
      * Activity Action: Show settings for selection of 2G/3G.
      * <p>
      * In some cases, a matching Activity may not exist, so ensure you
@@ -6129,6 +6147,15 @@
         public static final String TOUCHPAD_RIGHT_CLICK_ZONE = "touchpad_right_click_zone";
 
         /**
+         * Pointer fill style, specified by
+         * {@link android.view.PointerIcon.PointerIconVectorStyleFill} constants.
+         *
+         * @hide
+         */
+        @Readable
+        public static final String POINTER_FILL_STYLE = "pointer_fill_style";
+
+        /**
          * Whether lock-to-app will be triggered by long-press on recents.
          * @hide
          */
@@ -6330,6 +6357,7 @@
             PRIVATE_SETTINGS.add(SIP_ADDRESS_ONLY);
             PRIVATE_SETTINGS.add(SIP_ASK_ME_EACH_TIME);
             PRIVATE_SETTINGS.add(POINTER_SPEED);
+            PRIVATE_SETTINGS.add(POINTER_FILL_STYLE);
             PRIVATE_SETTINGS.add(LOCK_TO_APP_ENABLED);
             PRIVATE_SETTINGS.add(EGG_MODE);
             PRIVATE_SETTINGS.add(SHOW_BATTERY_PERCENT);
diff --git a/core/java/android/security/responsible_apis_flags.aconfig b/core/java/android/security/responsible_apis_flags.aconfig
index c7d951b..56d3669 100644
--- a/core/java/android/security/responsible_apis_flags.aconfig
+++ b/core/java/android/security/responsible_apis_flags.aconfig
@@ -45,3 +45,10 @@
     description: "Do not allow intents without an action to match any intent filters"
     bug: "293560872"
 }
+
+flag {
+    name: "asm_opt_system_into_enforcement"
+    namespace: "responsible_apis"
+    description: "Opt the system into enforcement of BAL"
+    bug: "339403750"
+}
diff --git a/core/java/android/service/dreams/OWNERS b/core/java/android/service/dreams/OWNERS
index 77bcee8..119ca55 100644
--- a/core/java/android/service/dreams/OWNERS
+++ b/core/java/android/service/dreams/OWNERS
@@ -1,10 +1,11 @@
-# Bug component: 78010
+# Bug component: 66910
 
 brycelee@google.com
-dsandler@google.com
-galinap@google.com
-jjaggi@google.com
 lusilva@google.com
-michaelwr@google.com
-santoscordon@google.com
 wxyz@google.com
+justinkoh@google.com
+
+rgl@google.com
+santoscordon@google.com
+
+dsandler@google.com
diff --git a/core/java/android/service/ondeviceintelligence/IOnDeviceSandboxedInferenceService.aidl b/core/java/android/service/ondeviceintelligence/IOnDeviceSandboxedInferenceService.aidl
index 2aa17c4..1af3b0f 100644
--- a/core/java/android/service/ondeviceintelligence/IOnDeviceSandboxedInferenceService.aidl
+++ b/core/java/android/service/ondeviceintelligence/IOnDeviceSandboxedInferenceService.aidl
@@ -21,6 +21,7 @@
 import android.app.ondeviceintelligence.ITokenInfoCallback;
 import android.app.ondeviceintelligence.IProcessingSignal;
 import android.app.ondeviceintelligence.Feature;
+import android.os.IRemoteCallback;
 import android.os.ICancellationSignal;
 import android.os.PersistableBundle;
 import android.os.Bundle;
@@ -34,18 +35,19 @@
  * @hide
  */
 oneway interface IOnDeviceSandboxedInferenceService {
-    void registerRemoteStorageService(in IRemoteStorageService storageService);
+    void registerRemoteStorageService(in IRemoteStorageService storageService,
+                                        in IRemoteCallback remoteCallback) = 0;
     void requestTokenInfo(int callerUid, in Feature feature, in Bundle request,
                             in AndroidFuture cancellationSignal,
-                            in ITokenInfoCallback tokenInfoCallback);
+                            in ITokenInfoCallback tokenInfoCallback) = 1;
     void processRequest(int callerUid, in Feature feature, in Bundle request, in int requestType,
                         in AndroidFuture cancellationSignal,
                         in AndroidFuture processingSignal,
-                        in IResponseCallback callback);
+                        in IResponseCallback callback) = 2;
     void processRequestStreaming(int callerUid, in Feature feature, in Bundle request, in int requestType,
                                 in AndroidFuture cancellationSignal,
                                 in AndroidFuture processingSignal,
-                                in IStreamingResponseCallback callback);
+                                in IStreamingResponseCallback callback) = 3;
     void updateProcessingState(in Bundle processingState,
-                                     in IProcessingUpdateStatusCallback callback);
+                                     in IProcessingUpdateStatusCallback callback) = 4;
 }
\ No newline at end of file
diff --git a/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java b/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
index d00485c..a77e076 100644
--- a/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
+++ b/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
@@ -51,6 +51,7 @@
 import android.os.HandlerExecutor;
 import android.os.IBinder;
 import android.os.ICancellationSignal;
+import android.os.IRemoteCallback;
 import android.os.Looper;
 import android.os.OutcomeReceiver;
 import android.os.ParcelFileDescriptor;
@@ -148,9 +149,12 @@
         if (SERVICE_INTERFACE.equals(intent.getAction())) {
             return new IOnDeviceSandboxedInferenceService.Stub() {
                 @Override
-                public void registerRemoteStorageService(IRemoteStorageService storageService) {
+                public void registerRemoteStorageService(IRemoteStorageService storageService,
+                        IRemoteCallback remoteCallback) throws RemoteException {
                     Objects.requireNonNull(storageService);
                     mRemoteStorageService = storageService;
+                    remoteCallback.sendResult(
+                            Bundle.EMPTY); //to notify caller uid to system-server.
                 }
 
                 @Override
diff --git a/core/java/android/telephony/DropBoxManagerLoggerBackend.java b/core/java/android/telephony/DropBoxManagerLoggerBackend.java
new file mode 100644
index 0000000..25a3b9f
--- /dev/null
+++ b/core/java/android/telephony/DropBoxManagerLoggerBackend.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.os.DropBoxManager;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.util.Log;
+
+import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
+
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+
+/**
+ * A persistent logger backend that stores logs in Android DropBoxManager
+ *
+ * @hide
+ */
+public class DropBoxManagerLoggerBackend implements PersistentLoggerBackend {
+
+    private static final String TAG = "DropBoxManagerLoggerBackend";
+    // Separate tag reference to be explicitly used for dropboxmanager instead of logcat logging
+    private static final String DROPBOX_TAG = "DropBoxManagerLoggerBackend";
+    private static final DateTimeFormatter LOG_TIMESTAMP_FORMATTER =
+            DateTimeFormatter.ofPattern("MM-dd HH:mm:ss.SSS");
+    private static final ZoneId LOCAL_ZONE_ID = ZoneId.systemDefault();
+    private static final int BUFFER_SIZE_BYTES = 500 * 1024; // 500 KB
+    private static final int MIN_BUFFER_BYTES_FOR_FLUSH = 5 * 1024; // 5 KB
+
+    private static DropBoxManagerLoggerBackend sInstance;
+
+    private final DropBoxManager mDropBoxManager;
+    private final Object mBufferLock = new Object();
+    @GuardedBy("mBufferLock")
+    private final StringBuilder mLogBuffer = new StringBuilder();
+    private long mBufferStartTime = -1L;
+    private final HandlerThread mHandlerThread = new HandlerThread(DROPBOX_TAG);
+    private final Handler mHandler;
+    // Flag for determining if logging is enabled as a general feature
+    private final boolean mDropBoxManagerLoggingEnabled;
+    // Flag for controlling if logging is enabled at runtime
+    private boolean mIsLoggingEnabled = false;
+
+    /**
+     * Returns a singleton instance of {@code DropBoxManagerLoggerBackend} that will log to
+     * DropBoxManager if the config_dropboxmanager_persistent_logging_enabled resource config is
+     * enabled.
+     * @param context Android context
+     */
+    @Nullable
+    public static synchronized DropBoxManagerLoggerBackend getInstance(@NonNull Context context) {
+        if (sInstance == null) {
+            sInstance = new DropBoxManagerLoggerBackend(context);
+        }
+        return sInstance;
+    }
+
+    private DropBoxManagerLoggerBackend(@NonNull Context context) {
+        mDropBoxManager = context.getSystemService(DropBoxManager.class);
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mDropBoxManagerLoggingEnabled = persistentLoggingEnabled(context);
+    }
+
+    private boolean persistentLoggingEnabled(@NonNull Context context) {
+        try {
+            return context.getResources().getBoolean(
+                    R.bool.config_dropboxmanager_persistent_logging_enabled);
+        } catch (RuntimeException e) {
+            Log.w(TAG, "Persistent logging config not found");
+            return false;
+        }
+    }
+
+    /**
+     * Enable or disable logging to DropBoxManager
+     * @param isLoggingEnabled Whether logging should be enabled
+     */
+    public void setLoggingEnabled(boolean isLoggingEnabled) {
+        Log.i(DROPBOX_TAG, "toggle logging: " + isLoggingEnabled);
+        mIsLoggingEnabled = isLoggingEnabled;
+    }
+
+    /**
+     * Persist a DEBUG log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void debug(@NonNull String tag, @NonNull String msg) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("D", tag, msg, Optional.empty());
+    }
+
+    /**
+     * Persist a INFO log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void info(@NonNull String tag, @NonNull String msg) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("I", tag, msg, Optional.empty());
+    }
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void warn(@NonNull String tag, @NonNull String msg) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("W", tag, msg, Optional.empty());
+    }
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    public void warn(@NonNull String tag, @NonNull String msg, @NonNull Throwable t) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("W", tag, msg, Optional.of(t));
+    }
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void error(@NonNull String tag, @NonNull String msg) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("E", tag, msg, Optional.empty());
+    }
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    public void error(@NonNull String tag, @NonNull String msg, @NonNull Throwable t) {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+        bufferLog("E", tag, msg, Optional.of(t));
+    }
+
+    private synchronized void bufferLog(
+            @NonNull String level,
+            @NonNull String tag,
+            @NonNull String msg,
+            Optional<Throwable> t) {
+        if (!mIsLoggingEnabled) {
+            return;
+        }
+
+        if (mBufferStartTime == -1L) {
+            mBufferStartTime = System.currentTimeMillis();
+        }
+
+        synchronized (mBufferLock) {
+            mLogBuffer
+                    .append(formatLog(level, tag, msg, t))
+                    .append("\n");
+
+            if (mLogBuffer.length() >= BUFFER_SIZE_BYTES) {
+                flushAsync();
+            }
+        }
+    }
+
+    private String formatLog(
+            @NonNull String level,
+            @NonNull String tag,
+            @NonNull String msg,
+            Optional<Throwable> t) {
+        // Expected format = "$Timestamp $Level $Tag: $Message"
+        return formatTimestamp(System.currentTimeMillis()) + " " + level + " " + tag + ": "
+                + t.map(throwable -> msg + ": " + Log.getStackTraceString(throwable)).orElse(msg);
+    }
+
+    private String formatTimestamp(long currentTimeMillis) {
+        return Instant.ofEpochMilli(currentTimeMillis)
+                .atZone(LOCAL_ZONE_ID)
+                .format(LOG_TIMESTAMP_FORMATTER);
+    }
+
+    /**
+     * Flushes all buffered logs into DropBoxManager as a single log record with a tag of
+     * {@link #DROPBOX_TAG} asynchronously. Should be invoked sparingly as DropBoxManager has
+     * device-level limitations on the number files that can be stored.
+     */
+    public void flushAsync() {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+
+        mHandler.post(this::flush);
+    };
+
+    /**
+     * Flushes all buffered logs into DropBoxManager as a single log record with a tag of
+     * {@link #DROPBOX_TAG}. Should be invoked sparingly as DropBoxManager has device-level
+     * limitations on the number files that can be stored.
+     */
+    public void flush() {
+        if (!mDropBoxManagerLoggingEnabled) {
+            return;
+        }
+
+        synchronized (mBufferLock) {
+            if (mLogBuffer.length() < MIN_BUFFER_BYTES_FOR_FLUSH) {
+                return;
+            }
+
+            Log.d(DROPBOX_TAG, "Flushing logs from "
+                    + formatTimestamp(mBufferStartTime) + " to "
+                    + formatTimestamp(System.currentTimeMillis()));
+
+            try {
+                mDropBoxManager.addText(DROPBOX_TAG, mLogBuffer.toString());
+            } catch (Exception e) {
+                Log.w(DROPBOX_TAG, "Failed to flush logs of length "
+                        + mLogBuffer.length() + " to DropBoxManager", e);
+            }
+            mLogBuffer.setLength(0);
+        }
+        mBufferStartTime = -1L;
+    }
+}
diff --git a/core/java/android/telephony/PersistentLogger.java b/core/java/android/telephony/PersistentLogger.java
new file mode 100644
index 0000000..8b12a1c
--- /dev/null
+++ b/core/java/android/telephony/PersistentLogger.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+
+/**
+ * A persistent logging client. Intended for persisting critical debug logs in situations where
+ * standard Android logcat logs may not be retained long enough.
+ *
+ * @hide
+ */
+public class PersistentLogger {
+    private final PersistentLoggerBackend mPersistentLoggerBackend;
+
+    public PersistentLogger(@NonNull PersistentLoggerBackend persistentLoggerBackend) {
+        mPersistentLoggerBackend = persistentLoggerBackend;
+    }
+
+    /**
+     * Persist a DEBUG log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void debug(@NonNull String tag, @NonNull String msg) {
+        mPersistentLoggerBackend.debug(tag, msg);
+    }
+
+    /**
+     * Persist a INFO log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void info(@NonNull String tag, @NonNull String msg) {
+        mPersistentLoggerBackend.info(tag, msg);
+    }
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void warn(@NonNull String tag, @NonNull String msg) {
+        mPersistentLoggerBackend.warn(tag, msg);
+    }
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    public void warn(@NonNull String tag, @NonNull String msg, @NonNull Throwable t) {
+        mPersistentLoggerBackend.warn(tag, msg, t);
+    }
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    public void error(@NonNull String tag, @NonNull String msg) {
+        mPersistentLoggerBackend.error(tag, msg);
+    }
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    public void error(@NonNull String tag, @NonNull String msg, @NonNull Throwable t) {
+        mPersistentLoggerBackend.error(tag, msg, t);
+    }
+}
diff --git a/core/java/android/telephony/PersistentLoggerBackend.java b/core/java/android/telephony/PersistentLoggerBackend.java
new file mode 100644
index 0000000..e3e72e1
--- /dev/null
+++ b/core/java/android/telephony/PersistentLoggerBackend.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+
+/**
+ * Interface for logging backends to provide persistent log storage.
+ *
+ * @hide
+ */
+public interface PersistentLoggerBackend {
+
+    /**
+     * Persist a DEBUG log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    void debug(@NonNull String tag, @NonNull String msg);
+
+    /**
+     * Persist a INFO log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    void info(@NonNull String tag, @NonNull String msg);
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    void warn(@NonNull String tag, @NonNull String msg);
+
+    /**
+     * Persist a WARN log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    void warn(@NonNull String tag, @NonNull String msg, @NonNull Throwable t);
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     */
+    void error(@NonNull String tag, @NonNull String msg);
+
+    /**
+     * Persist a ERROR log message.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param t An exception to log.
+     */
+    void error(@NonNull String tag, @NonNull String msg, @NonNull Throwable t);
+}
diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig
index 70dc300e..7023ef7 100644
--- a/core/java/android/text/flags/flags.aconfig
+++ b/core/java/android/text/flags/flags.aconfig
@@ -191,3 +191,23 @@
     purpose: PURPOSE_BUGFIX
   }
 }
+
+flag {
+  name: "disable_handwriting_initiator_for_ime"
+  namespace: "text"
+  description: "Don't initiate handwriting for IME views."
+  bug: "343304685"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
+
+flag {
+  name: "fix_null_typeface_bolding"
+  namespace: "text"
+  description: "Use a bold typeface when bolding is enabled and the original typeface is null"
+  bug: "314811487"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
diff --git a/core/java/android/transition/OWNERS b/core/java/android/transition/OWNERS
index eb5a581..2a8d940 100644
--- a/core/java/android/transition/OWNERS
+++ b/core/java/android/transition/OWNERS
@@ -2,5 +2,4 @@
 
 romainguy@google.com
 mount@google.com
-alanv@google.com
 adamp@google.com
diff --git a/core/java/android/view/IDisplayWindowInsetsController.aidl b/core/java/android/view/IDisplayWindowInsetsController.aidl
index 91270d4..45dbe43 100644
--- a/core/java/android/view/IDisplayWindowInsetsController.aidl
+++ b/core/java/android/view/IDisplayWindowInsetsController.aidl
@@ -55,4 +55,10 @@
      * @see IWindow#hideInsets
      */
     void hideInsets(int types, boolean fromIme, in @nullable ImeTracker.Token statsToken);
+
+    /**
+     * Reports the requested IME visibility of the IME input target to
+     * the IDisplayWindowInsetsController
+     */
+    void setImeInputTargetRequestedVisibility(boolean visible);
 }
diff --git a/core/java/android/view/ImeInsetsSourceConsumer.java b/core/java/android/view/ImeInsetsSourceConsumer.java
index 62dbc39..1d950dc 100644
--- a/core/java/android/view/ImeInsetsSourceConsumer.java
+++ b/core/java/android/view/ImeInsetsSourceConsumer.java
@@ -27,6 +27,7 @@
 import android.os.Trace;
 import android.util.proto.ProtoOutputStream;
 import android.view.SurfaceControl.Transaction;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputMethodManager;
 
@@ -61,51 +62,59 @@
 
     @Override
     public boolean onAnimationStateChanged(boolean running) {
-        if (!running) {
-            ImeTracing.getInstance().triggerClientDump(
-                    "ImeInsetsSourceConsumer#onAnimationFinished",
-                    mController.getHost().getInputMethodManager(), null /* icProto */);
-        }
-        boolean insetsChanged = super.onAnimationStateChanged(running);
-        if (running && !isShowRequested() && mController.isPredictiveBackImeHideAnimInProgress()) {
-            // IME predictive back animation switched from pre-commit to post-commit.
-            insetsChanged |= applyLocalVisibilityOverride();
-        }
-
-        if (!isShowRequested()) {
-            mIsRequestedVisibleAwaitingLeash = false;
-            if (!running && !mHasPendingRequest) {
-                final var statsToken = ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
-                        ImeTracker.ORIGIN_CLIENT,
-                        SoftInputShowHideReason.HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED,
-                        mController.getHost().isHandlingPointerEvent() /* fromUser */);
-                notifyHidden(statsToken);
-                removeSurface();
+        if (Flags.refactorInsetsController()) {
+            return super.onAnimationStateChanged(running);
+        } else {
+            if (!running) {
+                ImeTracing.getInstance().triggerClientDump(
+                        "ImeInsetsSourceConsumer#onAnimationFinished",
+                        mController.getHost().getInputMethodManager(), null /* icProto */);
             }
+            boolean insetsChanged = super.onAnimationStateChanged(running);
+            if (running && !isShowRequested()
+                    && mController.isPredictiveBackImeHideAnimInProgress()) {
+                // IME predictive back animation switched from pre-commit to post-commit.
+                insetsChanged |= applyLocalVisibilityOverride();
+            }
+            if (!isShowRequested()) {
+                mIsRequestedVisibleAwaitingLeash = false;
+                if (!running && !mHasPendingRequest) {
+                    final var statsToken = ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
+                            ImeTracker.ORIGIN_CLIENT,
+                            SoftInputShowHideReason.HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED,
+                            mController.getHost().isHandlingPointerEvent() /* fromUser */);
+                    notifyHidden(statsToken);
+                    removeSurface();
+                }
+            }
+            // This method is called
+            // (1) after the animation starts.
+            // (2) after the animation ends (including the case of cancel).
+            // (3) if the IME is not controllable (running == false in this case).
+            // We should reset mHasPendingRequest in all cases.
+            mHasPendingRequest = false;
+            return insetsChanged;
         }
-        // This method is called
-        // (1) after the animation starts.
-        // (2) after the animation ends (including the case of cancel).
-        // (3) if the IME is not controllable (running == false in this case).
-        // We should reset mHasPendingRequest in all cases.
-        mHasPendingRequest = false;
-        return insetsChanged;
     }
 
     @Override
     public void onWindowFocusGained(boolean hasViewFocus) {
         super.onWindowFocusGained(hasViewFocus);
-        getImm().registerImeConsumer(this);
-        if ((mController.getRequestedVisibleTypes() & getType()) != 0 && !hasLeash()) {
-            mIsRequestedVisibleAwaitingLeash = true;
+        if (!Flags.refactorInsetsController()) {
+            getImm().registerImeConsumer(this);
+            if ((mController.getRequestedVisibleTypes() & getType()) != 0 && !hasLeash()) {
+                mIsRequestedVisibleAwaitingLeash = true;
+            }
         }
     }
 
     @Override
     public void onWindowFocusLost() {
         super.onWindowFocusLost();
-        getImm().unregisterImeConsumer(this);
-        mIsRequestedVisibleAwaitingLeash = false;
+        if (!Flags.refactorInsetsController()) {
+            getImm().unregisterImeConsumer(this);
+            mIsRequestedVisibleAwaitingLeash = false;
+        }
     }
 
     @Override
@@ -123,50 +132,57 @@
     @Override
     @ShowResult
     public int requestShow(boolean fromIme, @Nullable ImeTracker.Token statsToken) {
-        if (fromIme) {
-            ImeTracing.getInstance().triggerClientDump(
-                    "ImeInsetsSourceConsumer#requestShow",
-                    mController.getHost().getInputMethodManager(), null /* icProto */);
-        }
-        onShowRequested();
+        if (!Flags.refactorInsetsController()) {
+            if (fromIme) {
+                ImeTracing.getInstance().triggerClientDump(
+                        "ImeInsetsSourceConsumer#requestShow",
+                        mController.getHost().getInputMethodManager(), null /* icProto */);
+            }
+            onShowRequested();
 
-        // TODO: ResultReceiver for IME.
-        // TODO: Set mShowOnNextImeRender to automatically show IME and guard it with a flag.
-        ImeTracker.forLogging().onProgress(statsToken,
-                ImeTracker.PHASE_CLIENT_INSETS_CONSUMER_REQUEST_SHOW);
+            // TODO: ResultReceiver for IME.
+            // TODO: Set mShowOnNextImeRender to automatically show IME and guard it with a flag.
+            ImeTracker.forLogging().onProgress(statsToken,
+                    ImeTracker.PHASE_CLIENT_INSETS_CONSUMER_REQUEST_SHOW);
 
-        if (!hasLeash()) {
-            // If control or leash is null, schedule to show IME when both available.
-            mIsRequestedVisibleAwaitingLeash = true;
-        }
-        // If we had a request before to show from IME (tracked with mImeRequestedShow), reaching
-        // this code here means that we now got control, so we can start the animation immediately.
-        // If client window is trying to control IME and IME is already visible, it is immediate.
-        if (fromIme
-                || (mState.isSourceOrDefaultVisible(getId(), getType()) && hasLeash())) {
-            return ShowResult.SHOW_IMMEDIATELY;
-        }
+            if (!hasLeash()) {
+                // If control or leash is null, schedule to show IME when both available.
+                mIsRequestedVisibleAwaitingLeash = true;
+            }
+            // If we had a request before to show from IME (tracked with mImeRequestedShow),
+            // reaching this code here means that we now got control, so we can start the
+            // animation immediately. If client window is trying to control IME and IME is
+            // already visible, it is immediate.
+            if (fromIme || (mState.isSourceOrDefaultVisible(getId(), getType())
+                    && hasLeash())) {
+                return ShowResult.SHOW_IMMEDIATELY;
+            }
 
-        return getImm().requestImeShow(mController.getHost().getWindowToken(), statsToken)
-                ? ShowResult.IME_SHOW_DELAYED : ShowResult.IME_SHOW_FAILED;
+            return getImm().requestImeShow(mController.getHost().getWindowToken(), statsToken)
+                    ? ShowResult.IME_SHOW_DELAYED : ShowResult.IME_SHOW_FAILED;
+        } else {
+            return ShowResult.IME_SHOW_FAILED;
+        }
     }
 
     void requestHide(boolean fromIme, @Nullable ImeTracker.Token statsToken) {
-        if (!fromIme) {
-            // Create a new token to track the hide request when we have control and leash,
-            // as we use the passed in token for the insets animation already.
-            final var notifyStatsToken = hasLeash()
-                    ? ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
-                        ImeTracker.ORIGIN_CLIENT,
-                        SoftInputShowHideReason.HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL,
-                        mController.getHost().isHandlingPointerEvent() /* fromUser */)
-                    : statsToken;
-            // The insets might be controlled by a remote target. Let the server know we are
-            // requested to hide.
-            notifyHidden(notifyStatsToken);
-        }
-        if (mAnimationState == ANIMATION_STATE_SHOW) {
-            mHasPendingRequest = true;
+        if (!Flags.refactorInsetsController()) {
+            if (!fromIme) {
+                // Create a new token to track the hide request when we have control and leash,
+                // as we use the passed in token for the insets animation already.
+                final var notifyStatsToken = hasLeash()
+                        ? ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
+                            ImeTracker.ORIGIN_CLIENT,
+                            SoftInputShowHideReason.HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL,
+                            mController.getHost().isHandlingPointerEvent() /* fromUser */)
+                        : statsToken;
+                // The insets might be controlled by a remote target. Let the server know we are
+                // requested to hide.
+                notifyHidden(notifyStatsToken);
+            }
+            if (mAnimationState == ANIMATION_STATE_SHOW) {
+                mHasPendingRequest = true;
+            }
         }
     }
 
@@ -177,12 +193,14 @@
      * @param statsToken the token tracking the current IME request or {@code null} otherwise.
      */
     private void notifyHidden(@NonNull ImeTracker.Token statsToken) {
-        ImeTracker.forLogging().onProgress(statsToken,
-                ImeTracker.PHASE_CLIENT_INSETS_CONSUMER_NOTIFY_HIDDEN);
+        if (!Flags.refactorInsetsController()) {
+            ImeTracker.forLogging().onProgress(statsToken,
+                    ImeTracker.PHASE_CLIENT_INSETS_CONSUMER_NOTIFY_HIDDEN);
 
-        getImm().notifyImeHidden(mController.getHost().getWindowToken(), statsToken);
-        mIsRequestedVisibleAwaitingLeash = false;
-        Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.hideRequestFromApi", 0);
+            getImm().notifyImeHidden(mController.getHost().getWindowToken(), statsToken);
+            mIsRequestedVisibleAwaitingLeash = false;
+            Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.hideRequestFromApi", 0);
+        }
     }
 
     @Override
@@ -196,20 +214,24 @@
     @Override
     public boolean setControl(@Nullable InsetsSourceControl control, int[] showTypes,
             int[] hideTypes) {
-        ImeTracing.getInstance().triggerClientDump("ImeInsetsSourceConsumer#setControl",
-                mController.getHost().getInputMethodManager(), null /* icProto */);
-        if (!super.setControl(control, showTypes, hideTypes)) {
-            return false;
+        if (Flags.refactorInsetsController()) {
+            return super.setControl(control, showTypes, hideTypes);
+        } else {
+            ImeTracing.getInstance().triggerClientDump("ImeInsetsSourceConsumer#setControl",
+                    mController.getHost().getInputMethodManager(), null /* icProto */);
+            if (!super.setControl(control, showTypes, hideTypes)) {
+                return false;
+            }
+            if (control == null && !mIsRequestedVisibleAwaitingLeash) {
+                mController.setRequestedVisibleTypes(0 /* visibleTypes */, getType());
+                removeSurface();
+            }
+            final boolean hasLeash = control != null && control.getLeash() != null;
+            if (hasLeash) {
+                mIsRequestedVisibleAwaitingLeash = false;
+            }
+            return true;
         }
-        if (control == null && !mIsRequestedVisibleAwaitingLeash) {
-            mController.setRequestedVisibleTypes(0 /* visibleTypes */, getType());
-            removeSurface();
-        }
-        final boolean hasLeash = control != null && control.getLeash() != null;
-        if (hasLeash) {
-            mIsRequestedVisibleAwaitingLeash = false;
-        }
-        return true;
     }
 
     @Override
@@ -228,9 +250,11 @@
     @Override
     public void onPerceptible(boolean perceptible) {
         super.onPerceptible(perceptible);
-        final IBinder window = mController.getHost().getWindowToken();
-        if (window != null) {
-            getImm().reportPerceptible(window, perceptible);
+        if (!Flags.refactorInsetsController()) {
+            final IBinder window = mController.getHost().getWindowToken();
+            if (window != null) {
+                getImm().reportPerceptible(window, perceptible);
+            }
         }
     }
 
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index eec805b7..8d884f2 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -62,6 +62,7 @@
 import android.view.animation.Interpolator;
 import android.view.animation.LinearInterpolator;
 import android.view.animation.PathInterpolator;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.ImeTracker.InputMethodJankContext;
 import android.view.inputmethod.InputMethodManager;
@@ -675,6 +676,12 @@
     /** Set of inset types that we have controls of */
     private @InsetsType int mControllableTypes;
 
+    /**
+     * Set of inset types that are about to be cancelled.
+     * Used in {@link InsetsSourceConsumer#onAnimationStateChanged}
+     */
+    private @InsetsType int mCancelledForNewAnimationTypes;
+
     private final Runnable mInvokeControllableInsetsChangedListeners =
             this::invokeControllableInsetsChangedListeners;
 
@@ -706,11 +713,13 @@
             new InsetsState.OnTraverseCallbacks() {
 
                 private @InsetsType int mTypes;
+                private InsetsState mFromState;
                 private InsetsState mToState;
 
                 @Override
                 public void onStart(InsetsState state1, InsetsState state2) {
                     mTypes = 0;
+                    mFromState = null;
                     mToState = null;
                 }
 
@@ -727,9 +736,13 @@
                         return;
                     }
                     mTypes |= source1.getType();
+                    if (mFromState == null) {
+                        mFromState = new InsetsState();
+                    }
                     if (mToState == null) {
                         mToState = new InsetsState();
                     }
+                    mFromState.addSource(new InsetsSource(source1));
                     mToState.addSource(new InsetsSource(source2));
                 }
 
@@ -740,7 +753,7 @@
                     }
                     cancelExistingControllers(mTypes);
                     final InsetsAnimationControlRunner runner = new InsetsResizeAnimationRunner(
-                            mFrame, state1, mToState, RESIZE_INTERPOLATOR,
+                            mFrame, mFromState, mToState, RESIZE_INTERPOLATOR,
                             ANIMATION_DURATION_RESIZE, mTypes, InsetsController.this);
                     if (mRunningAnimations.isEmpty()) {
                         mHost.notifyAnimationRunningStateChanged(true);
@@ -1002,19 +1015,38 @@
         showTypes[0] &= ~animatingTypes;
         hideTypes[0] &= ~animatingTypes;
 
-        if (showTypes[0] != 0) {
-            final var statsToken = (showTypes[0] & ime()) == 0 ? null
-                    : ImeTracker.forLogging().onStart(ImeTracker.TYPE_SHOW,
-                            ImeTracker.ORIGIN_CLIENT, SoftInputShowHideReason.CONTROLS_CHANGED,
-                            mHost.isHandlingPointerEvent() /* fromUser */);
-            applyAnimation(showTypes[0], true /* show */, false /* fromIme */, statsToken);
-        }
-        if (hideTypes[0] != 0) {
-            final var statsToken = (hideTypes[0] & ime()) == 0 ? null
-                    : ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
-                            ImeTracker.ORIGIN_CLIENT, SoftInputShowHideReason.CONTROLS_CHANGED,
-                            mHost.isHandlingPointerEvent() /* fromUser */);
-            applyAnimation(hideTypes[0], false /* show */, false /* fromIme */, statsToken);
+        if (Flags.refactorInsetsController()) {
+            if (mPendingImeControlRequest != null && getImeSourceConsumer().getControl() != null
+                    && getImeSourceConsumer().getControl().getLeash() != null) {
+                // TODO we need to pass the statsToken
+                handlePendingControlRequest(null);
+            } else {
+                if (showTypes[0] != 0) {
+                    applyAnimation(showTypes[0], true /* show */, false /* fromIme */,
+                            null /* statsToken */);
+                }
+                if (hideTypes[0] != 0) {
+                    applyAnimation(hideTypes[0], false /* show */, false /* fromIme */,
+                            null /* statsToken */);
+                }
+            }
+        } else {
+            if (showTypes[0] != 0) {
+                final var statsToken =
+                        (showTypes[0] & ime()) == 0 ? null : ImeTracker.forLogging().onStart(
+                                ImeTracker.TYPE_SHOW, ImeTracker.ORIGIN_CLIENT,
+                                SoftInputShowHideReason.CONTROLS_CHANGED,
+                                mHost.isHandlingPointerEvent() /* fromUser */);
+                applyAnimation(showTypes[0], true /* show */, false /* fromIme */, statsToken);
+            }
+            if (hideTypes[0] != 0) {
+                final var statsToken =
+                        (hideTypes[0] & ime()) == 0 ? null : ImeTracker.forLogging().onStart(
+                                ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
+                                SoftInputShowHideReason.CONTROLS_CHANGED,
+                                mHost.isHandlingPointerEvent() /* fromUser */);
+                applyAnimation(hideTypes[0], false /* show */, false /* fromIme */, statsToken);
+            }
         }
 
         if (mControllableTypes != controllableTypes) {
@@ -1024,6 +1056,11 @@
             mControllableTypes = controllableTypes;
         }
 
+        if (Flags.refactorInsetsController()) {
+            // The local visibility override takes into account whether we have control.
+            applyLocalVisibilityOverride();
+        }
+
         // InsetsSourceConsumer#setControl might change the requested visibility.
         reportRequestedVisibleTypes();
     }
@@ -1069,6 +1106,7 @@
                         mHost.isHandlingPointerEvent() /* fromUser */);
             }
         }
+
         if (fromIme) {
             ImeTracing.getInstance().triggerClientDump("InsetsController#show",
                     mHost.getInputMethodManager(), null /* icProto */);
@@ -1078,21 +1116,23 @@
             Trace.asyncTraceBegin(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
             Trace.asyncTraceBegin(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
         }
-        // Handle pending request ready in case there was one set.
-        if (fromIme && mPendingImeControlRequest != null) {
-            if ((types & Type.ime()) != 0) {
-                ImeTracker.forLatency().onShown(statsToken, ActivityThread::currentApplication);
+        if (!Flags.refactorInsetsController()) {
+            // Handle pending request ready in case there was one set.
+            if (fromIme && mPendingImeControlRequest != null) {
+                if ((types & Type.ime()) != 0) {
+                    ImeTracker.forLatency().onShown(statsToken, ActivityThread::currentApplication);
+                }
+                handlePendingControlRequest(statsToken);
+                return;
             }
-            handlePendingControlRequest(statsToken);
-            return;
         }
 
         // TODO: Support a ResultReceiver for IME.
         // TODO(b/123718661): Make show() work for multi-session IME.
-        int typesReady = 0;
+        @InsetsType int typesReady = 0;
         final boolean imeVisible = mState.isSourceOrDefaultVisible(
                 mImeSourceConsumer.getId(), ime());
-        for (int type = FIRST; type <= LAST; type = type << 1) {
+        for (@InsetsType int type = FIRST; type <= LAST; type = type << 1) {
             if ((types & type) == 0) {
                 continue;
             }
@@ -1114,14 +1154,16 @@
                 }
                 continue;
             }
-            if (fromIme && animationType == ANIMATION_TYPE_USER
-                    && !mIsPredictiveBackImeHideAnimInProgress) {
-                // App is already controlling the IME, don't cancel it.
-                if (isIme) {
-                    ImeTracker.forLogging().onFailed(
-                            statsToken, ImeTracker.PHASE_CLIENT_APPLY_ANIMATION);
+            if (!Flags.refactorInsetsController()) {
+                if (fromIme && animationType == ANIMATION_TYPE_USER
+                        && !mIsPredictiveBackImeHideAnimInProgress) {
+                    // App is already controlling the IME, don't cancel it.
+                    if (isIme) {
+                        ImeTracker.forLogging().onFailed(
+                                statsToken, ImeTracker.PHASE_CLIENT_APPLY_ANIMATION);
+                    }
+                    continue;
                 }
-                continue;
             }
             if (isIme) {
                 ImeTracker.forLogging().onProgress(
@@ -1130,7 +1172,7 @@
             typesReady |= type;
         }
         if (DEBUG) Log.d(TAG, "show typesReady: " + typesReady);
-        if (fromIme && (typesReady & Type.ime()) != 0) {
+        if ((Flags.refactorInsetsController() || fromIme) && (typesReady & Type.ime()) != 0) {
             ImeTracker.forLatency().onShown(statsToken, ActivityThread::currentApplication);
         }
         applyAnimation(typesReady, true /* show */, fromIme, statsToken);
@@ -1184,16 +1226,26 @@
         } else {
             Trace.asyncTraceBegin(TRACE_TAG_VIEW, "IC.hideRequestFromApi", 0);
         }
-        int typesReady = 0;
+        @InsetsType int typesReady = 0;
         boolean hasImeRequestedHidden = false;
         final boolean hadPendingImeControlRequest = mPendingImeControlRequest != null;
-        for (int type = FIRST; type <= LAST; type = type << 1) {
+        for (@InsetsType int type = FIRST; type <= LAST; type = type << 1) {
             if ((types & type) == 0) {
                 continue;
             }
+            final boolean isImeAnimation = type == ime();
+            if (Flags.refactorInsetsController()) {
+                if (isImeAnimation) {
+                    // When the IME is requested to be hidden, but already hidden, we don't show
+                    // an animation again (mRequestedVisibleTypes are reported at the end of the IME
+                    // hide animation but set at the beginning)
+                    if ((mRequestedVisibleTypes & ime()) == 0) {
+                        continue;
+                    }
+                }
+            }
             @AnimationType final int animationType = getAnimationType(type);
             final boolean requestedVisible = (type & mRequestedVisibleTypes) != 0;
-            final boolean isImeAnimation = type == ime();
             if (mPendingImeControlRequest != null && !requestedVisible) {
                 // Remove the hide insets type from the pending show request.
                 mPendingImeControlRequest.types &= ~type;
@@ -1201,13 +1253,15 @@
                     abortPendingImeControlRequest();
                 }
             }
-            if (isImeAnimation && !requestedVisible && animationType == ANIMATION_TYPE_NONE) {
-                hasImeRequestedHidden = true;
-                // Ensure to request hide IME in case there is any pending requested visible
-                // being applied from setControl when receiving the insets control.
-                if (hadPendingImeControlRequest
-                        || getImeSourceConsumer().isRequestedVisibleAwaitingControl()) {
-                    getImeSourceConsumer().requestHide(fromIme, statsToken);
+            if (!Flags.refactorInsetsController()) {
+                if (isImeAnimation && !requestedVisible && animationType == ANIMATION_TYPE_NONE) {
+                    hasImeRequestedHidden = true;
+                    // Ensure to request hide IME in case there is any pending requested visible
+                    // being applied from setControl when receiving the insets control.
+                    if (hadPendingImeControlRequest
+                            || getImeSourceConsumer().isRequestedVisibleAwaitingControl()) {
+                        getImeSourceConsumer().requestHide(fromIme, statsToken);
+                    }
                 }
             }
             if (!requestedVisible && animationType == ANIMATION_TYPE_NONE
@@ -1228,8 +1282,8 @@
             typesReady |= type;
         }
         if (hasImeRequestedHidden && mPendingImeControlRequest != null) {
-            // Handle the pending show request for other insets types since the IME insets has being
-            // requested hidden.
+            // Handle the pending show request for other insets types since the IME insets
+            // has being requested hidden.
             handlePendingControlRequest(statsToken);
             getImeSourceConsumer().removeSurface();
         }
@@ -1287,8 +1341,8 @@
                 durationMs, interpolator, animationType, layoutInsetsDuringAnimation,
                 useInsetsAnimationThread, statsToken);
 
-        // We are finishing setting the requested visible types. Report them to the server and/or
-        // the app.
+        // We are finishing setting the requested visible types. Report them to the server
+        // and/or the app.
         reportRequestedVisibleTypes();
     }
 
@@ -1333,58 +1387,120 @@
         mLastStartedAnimTypes |= types;
 
         final SparseArray<InsetsSourceControl> controls = new SparseArray<>();
+        @InsetsType int typesReady;
 
-        Pair<Integer, Boolean> typesReadyPair = collectSourceControls(
-                fromIme, types, controls, animationType, statsToken);
-        int typesReady = typesReadyPair.first;
-        boolean imeReady = typesReadyPair.second;
-        if (DEBUG) Log.d(TAG, String.format(
-                "controlAnimationUnchecked, typesReady: %s imeReady: %s", typesReady, imeReady));
-        if (!imeReady) {
-            // IME isn't ready, all requested types will be animated once IME is ready
-            abortPendingImeControlRequest();
-            final PendingControlRequest request = new PendingControlRequest(types,
-                    listener, durationMs,
-                    interpolator, animationType, layoutInsetsDuringAnimation, cancellationSignal,
-                    useInsetsAnimationThread);
-            mPendingImeControlRequest = request;
-            mHandler.postDelayed(mPendingControlTimeout, PENDING_CONTROL_TIMEOUT_MS);
-            if (DEBUG) Log.d(TAG, "Ime not ready. Create pending request");
-            if (cancellationSignal != null) {
-                cancellationSignal.setOnCancelListener(() -> {
-                    if (mPendingImeControlRequest == request) {
-                        if (DEBUG) Log.d(TAG,
-                                "Cancellation signal abortPendingImeControlRequest");
-                        abortPendingImeControlRequest();
+        if (Flags.refactorInsetsController()) {
+            // Ime will not be contained in typesReady nor in controls, if we don't have a leash
+            Pair<Integer, Integer> typesReadyPair = collectSourceControlsV2(types, controls);
+            typesReady = typesReadyPair.first;
+            @InsetsType int typesWithoutLeash = typesReadyPair.second;
+            if (animationType == ANIMATION_TYPE_USER) {
+                // When using an app-driven animation, the IME won't have a leash (because the
+                // window isn't created yet). If we have a control, but no leash, defers the
+                // request until the leash gets created.
+                // The mRequestedVisibleTypes were set just before, so we check the currently
+                // visible types
+                if ((types & ime()) != 0 && (types & typesWithoutLeash) != 0) {
+                    // If we have control but no leash for any of the controlling sources, we
+                    // wait until the leashes are ready. Thus, creating a PendingControlRequest
+                    // is always for showing, not hiding.
+                    // TODO (b/323319146) remove layoutInsetsDuringAnimation from
+                    //  PendingControlRequest, as it is now only used for showing
+                    final PendingControlRequest request = new PendingControlRequest(types,
+                            listener, durationMs,
+                            interpolator, animationType, LAYOUT_INSETS_DURING_ANIMATION_SHOWN,
+                            cancellationSignal, false /* useInsetsAnimationThread */);
+                    mPendingImeControlRequest = request;
+                    // only add a timeout when the control is not currently showing
+                    mHandler.postDelayed(mPendingControlTimeout, PENDING_CONTROL_TIMEOUT_MS);
+
+                    if (DEBUG) Log.d(TAG, "Ime not ready. Create pending request");
+                    if (cancellationSignal != null) {
+                        cancellationSignal.setOnCancelListener(() -> {
+                            if (mPendingImeControlRequest == request) {
+                                if (DEBUG) {
+                                    Log.d(TAG, "Cancellation signal abortPendingImeControlRequest");
+                                }
+                                abortPendingImeControlRequest();
+                            }
+                        });
                     }
-                });
+                }
+                // We need to wait until all types are ready
+                if (typesReady != types) {
+                    return;
+                }
             }
-
-            // The leashes are copied, but they won't be used.
-            releaseControls(controls);
-
-            // The requested visibilities should be delayed as well. Otherwise, we might override
-            // the insets visibility before playing animation.
-            setRequestedVisibleTypes(mReportedRequestedVisibleTypes, types);
-
-            Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
-            if (!fromIme) {
-                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+        } else {
+            Pair<Integer, Boolean> typesReadyPair = collectSourceControls(
+                    fromIme, types, controls, animationType, statsToken);
+            typesReady = typesReadyPair.first;
+            boolean imeReady = typesReadyPair.second;
+            if (DEBUG) {
+                Log.d(TAG, TextUtils.formatSimple(
+                        "controlAnimationUnchecked, typesReady: %s imeReady: %s", typesReady,
+                        imeReady));
             }
-            return;
+            if (!imeReady) {
+                // IME isn't ready, all requested types will be animated once IME is ready
+                abortPendingImeControlRequest();
+                final PendingControlRequest request = new PendingControlRequest(types,
+                        listener, durationMs,
+                        interpolator, animationType, layoutInsetsDuringAnimation,
+                        cancellationSignal,
+                        useInsetsAnimationThread);
+                mPendingImeControlRequest = request;
+                mHandler.postDelayed(mPendingControlTimeout, PENDING_CONTROL_TIMEOUT_MS);
+                if (DEBUG) Log.d(TAG, "Ime not ready. Create pending request");
+                if (cancellationSignal != null) {
+                    cancellationSignal.setOnCancelListener(() -> {
+                        if (mPendingImeControlRequest == request) {
+                            if (DEBUG) {
+                                Log.d(TAG, "Cancellation signal abortPendingImeControlRequest");
+                            }
+                            abortPendingImeControlRequest();
+                        }
+                    });
+                }
+
+                // The leashes are copied, but they won't be used.
+                releaseControls(controls);
+
+                // The requested visibilities should be delayed as well. Otherwise, we might
+                // override the insets visibility before playing animation.
+                setRequestedVisibleTypes(mReportedRequestedVisibleTypes, types);
+
+                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
+                if (!fromIme) {
+                    Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+                }
+                return;
+            }
         }
 
         if (typesReady == 0) {
-            if (DEBUG) Log.d(TAG, "No types ready. onCancelled()");
-            listener.onCancelled(null);
-            Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
-            if (!fromIme) {
-                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+            if (Flags.refactorInsetsController()) {
+                // if no types are ready, we need to wait for receiving new controls
+                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
+                listener.onCancelled(null);
+            } else {
+                if (DEBUG) Log.d(TAG, "No types ready. onCancelled()");
+                listener.onCancelled(null);
+                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
+                if (!fromIme) {
+                    Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+                }
             }
             return;
         }
 
-        cancelExistingControllers(typesReady);
+        if (Flags.refactorInsetsController()) {
+            mCancelledForNewAnimationTypes = typesReady;
+            cancelExistingControllers(typesReady);
+            mCancelledForNewAnimationTypes = 0;
+        } else {
+            cancelExistingControllers(typesReady);
+        }
 
         final InsetsAnimationControlRunner runner = useInsetsAnimationThread
                 ? new InsetsAnimationThreadControlRunner(controls,
@@ -1416,7 +1532,12 @@
         } else {
             Trace.asyncTraceBegin(TRACE_TAG_VIEW, "IC.pendingAnim", 0);
         }
-        onAnimationStateChanged(types, true /* running */);
+
+        if (Flags.refactorInsetsController()) {
+            onAnimationStateChanged(typesReady, true /* running */);
+        } else {
+            onAnimationStateChanged(types, true /* running */);
+        }
 
         if (fromIme) {
             switch (animationType) {
@@ -1454,7 +1575,7 @@
         ImeTracker.forLogging().onProgress(statsToken,
                 ImeTracker.PHASE_CLIENT_COLLECT_SOURCE_CONTROLS);
 
-        int typesReady = 0;
+        @InsetsType int typesReady = 0;
         boolean imeReady = true;
         for (int i = mSourceConsumers.size() - 1; i >= 0; i--) {
             final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i);
@@ -1511,6 +1632,33 @@
         return new Pair<>(typesReady, imeReady);
     }
 
+    /**
+     * @return Pair of (types ready to animate, types that we have control for, but no leash).
+     */
+    private Pair<Integer, Integer> collectSourceControlsV2(@InsetsType int types,
+            SparseArray<InsetsSourceControl> controls) {
+        @InsetsType int typesReady = 0;
+        int typesWithoutLeash = 0;
+
+        for (int i = mSourceConsumers.size() - 1; i >= 0; i--) {
+            final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i);
+            if ((consumer.getType() & types) == 0) {
+                continue;
+            }
+
+            final InsetsSourceControl control = consumer.getControl();
+            if (control != null) {
+                if (control.getLeash() != null || control.getId() == ID_IME_CAPTION_BAR) {
+                    controls.put(control.getId(), new InsetsSourceControl(control));
+                    typesReady |= consumer.getType();
+                } else {
+                    typesWithoutLeash |= consumer.getType();
+                }
+            }
+        }
+        return new Pair<>(typesReady, typesWithoutLeash);
+    }
+
     private @LayoutInsetsDuringAnimation int getLayoutInsetsDuringAnimationMode(
             @InsetsType int types, boolean fromPredictiveBack) {
         if (fromPredictiveBack) {
@@ -1629,6 +1777,19 @@
                 removedTypes = control.getTypes();
                 if (invokeCallback) {
                     dispatchAnimationEnd(runningAnimation.runner.getAnimation());
+                } else {
+                    if (Flags.refactorInsetsController()) {
+                        if (removedTypes == ime()
+                                && control.getAnimationType() == ANIMATION_TYPE_HIDE) {
+                            if (mHost != null) {
+                                // if the (hide) animation is cancelled, the
+                                // requestedVisibleTypes should be reported at this point.
+                                reportRequestedVisibleTypes();
+                                mHost.getInputMethodManager().removeImeSurface(
+                                        mHost.getWindowToken());
+                            }
+                        }
+                    }
                 }
                 break;
             }
@@ -1659,6 +1820,10 @@
         }
     }
 
+    @InsetsType int getCancelledForNewAnimationTypes() {
+        return mCancelledForNewAnimationTypes;
+    }
+
     @VisibleForTesting
     public @NonNull InsetsSourceConsumer getSourceConsumer(int id, int type) {
         InsetsSourceConsumer consumer = mSourceConsumers.get(id);
@@ -1733,11 +1898,43 @@
     }
 
     /**
+     * @return Types of currently running animations that are controlled by the user.
+     */
+    public @InsetsType int computeUserAnimatingTypes() {
+        int animatingTypes = 0;
+        for (int i = 0; i < mRunningAnimations.size(); i++) {
+            if (mRunningAnimations.get(i).runner.getAnimationType() == ANIMATION_TYPE_USER) {
+                animatingTypes |= mRunningAnimations.get(i).runner.getTypes();
+            }
+        }
+        return animatingTypes;
+    }
+
+    private @InsetsType int computeAnimatingTypes() {
+        int animatingTypes = 0;
+        for (int i = 0; i < mRunningAnimations.size(); i++) {
+            animatingTypes |= mRunningAnimations.get(i).runner.getTypes();
+        }
+        return animatingTypes;
+    }
+
+    /**
      * Called when finishing setting requested visible types or finishing setting controls.
      */
     private void reportRequestedVisibleTypes() {
-        if (mReportedRequestedVisibleTypes != mRequestedVisibleTypes) {
-            final @InsetsType int diff = mRequestedVisibleTypes ^ mReportedRequestedVisibleTypes;
+        final @InsetsType int typesToReport;
+        if (Flags.refactorInsetsController()) {
+            // If the IME is currently animating out, it is still visible, therefore we only
+            // report its requested visibility at the end of the animation, otherwise we would
+            // lose the leash, and it would disappear during the animation
+            // TODO(b/326377046) revisit this part and see if we can make it more general
+            typesToReport = mRequestedVisibleTypes | (computeAnimatingTypes() & ime());
+        } else {
+            typesToReport = mRequestedVisibleTypes;
+        }
+
+        if (typesToReport != mReportedRequestedVisibleTypes) {
+            final @InsetsType int diff = typesToReport ^ mReportedRequestedVisibleTypes;
             if (WindowInsets.Type.hasCompatSystemBars(diff)) {
                 mCompatSysUiVisibilityStaled = true;
             }
@@ -1769,10 +1966,12 @@
             boolean skipAnim, @Nullable ImeTracker.Token statsToken) {
         if (types == 0) {
             // nothing to animate.
-            if (DEBUG) Log.d(TAG, "applyAnimation, nothing to animate");
+            if (DEBUG) Log.d(TAG, "applyAnimation, nothing to animate. Stopping here");
             Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApi", 0);
-            if (!fromIme) {
-                Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+            if (!Flags.refactorInsetsController()) {
+                if (!fromIme) {
+                    Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.showRequestFromApiToImeReady", 0);
+                }
             }
             return;
         }
diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java
index fdb2a6e..6a92fd9 100644
--- a/core/java/android/view/InsetsSourceConsumer.java
+++ b/core/java/android/view/InsetsSourceConsumer.java
@@ -32,10 +32,13 @@
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.graphics.Rect;
+import android.os.IBinder;
+import android.text.TextUtils;
 import android.util.Log;
 import android.util.proto.ProtoOutputStream;
 import android.view.SurfaceControl.Transaction;
 import android.view.WindowInsets.Type.InsetsType;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -241,9 +244,15 @@
         }
 
         final boolean showRequested = isShowRequested();
-        final boolean cancelledForNewAnimation = !running && showRequested
-                ? mAnimationState == ANIMATION_STATE_HIDE
-                : mAnimationState == ANIMATION_STATE_SHOW;
+        final boolean cancelledForNewAnimation;
+        if (Flags.refactorInsetsController()) {
+            cancelledForNewAnimation =
+                    (mController.getCancelledForNewAnimationTypes() & mType) != 0;
+        } else {
+            cancelledForNewAnimation = (!running && showRequested)
+                    ? mAnimationState == ANIMATION_STATE_HIDE
+                    : mAnimationState == ANIMATION_STATE_SHOW;
+        }
 
         mAnimationState = running
                 ? (showRequested ? ANIMATION_STATE_SHOW : ANIMATION_STATE_HIDE)
@@ -292,12 +301,44 @@
         }
         final boolean requestedVisible = (mController.getRequestedVisibleTypes() & mType) != 0;
 
-        // If we don't have control, we are not able to change the visibility.
-        if (mSourceControl == null) {
-            if (DEBUG) Log.d(TAG, "applyLocalVisibilityOverride: No control in "
-                    + mController.getHost().getRootViewTitle()
-                    + " requestedVisible=" + requestedVisible);
-            return false;
+        if (Flags.refactorInsetsController()) {
+            // If we don't have control or the leash (in case of the IME), we enforce the
+            // visibility to be hidden, as otherwise we would let the app know too early.
+            if (mSourceControl == null) {
+                if (DEBUG) {
+                    Log.d(TAG, TextUtils.formatSimple(
+                            "applyLocalVisibilityOverride: No control in %s for type %s, "
+                                    + "requestedVisible=%s",
+                            mController.getHost().getRootViewTitle(),
+                            WindowInsets.Type.toString(mType), requestedVisible));
+                }
+                return false;
+                // TODO(b/323136120) add a flag to the control, to define whether a leash is needed
+            } else if (mId != InsetsSource.ID_IME_CAPTION_BAR
+                    && mSourceControl.getLeash() == null) {
+                if (DEBUG) {
+                    Log.d(TAG, TextUtils.formatSimple(
+                            "applyLocalVisibilityOverride: Set the source visibility to false, as"
+                                    + " there is no leash yet for type %s in %s",
+                            WindowInsets.Type.toString(mType),
+                            mController.getHost().getRootViewTitle()));
+                }
+                boolean wasVisible = source.isVisible();
+                source.setVisible(false);
+                // only if it was visible before and is now hidden, we want to notify about the
+                // changed state
+                return wasVisible;
+            }
+        } else {
+            // If we don't have control, we are not able to change the visibility.
+            if (mSourceControl == null) {
+                if (DEBUG) {
+                    Log.d(TAG, "applyLocalVisibilityOverride: No control in "
+                            + mController.getHost().getRootViewTitle()
+                            + " requestedVisible=" + requestedVisible);
+                }
+                return false;
+            }
         }
         if (source.isVisible() == requestedVisible) {
             return false;
@@ -338,6 +379,15 @@
      * @see InsetsAnimationControlCallbacks#reportPerceptible
      */
     public void onPerceptible(boolean perceptible) {
+        if (Flags.refactorInsetsController()) {
+            if (mType == WindowInsets.Type.ime()) {
+                final IBinder window = mController.getHost().getWindowToken();
+                if (window != null) {
+                    mController.getHost().getInputMethodManager().reportPerceptible(window,
+                            perceptible);
+                }
+            }
+        }
     }
 
     /**
diff --git a/core/java/android/view/OWNERS b/core/java/android/view/OWNERS
index 07d05a4..31a8dfa 100644
--- a/core/java/android/view/OWNERS
+++ b/core/java/android/view/OWNERS
@@ -1,7 +1,6 @@
 # Bug component: 25700
 
 romainguy@google.com
-alanv@google.com
 adamp@google.com
 aurimas@google.com
 nduca@google.com
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index 71199e9..7c2577f 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
@@ -43,8 +44,13 @@
 import android.util.SparseArray;
 import android.view.flags.Flags;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.internal.util.XmlUtils;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * Represents an icon that can be used as a mouse pointer.
  * <p>
@@ -164,6 +170,29 @@
     // every time we need to resolve the icon (i.e. on each input event).
     private static final SparseArray<PointerIcon> SYSTEM_ICONS = new SparseArray<>();
 
+    /** @hide */
+    @IntDef(prefix = {"POINTER_ICON_VECTOR_STYLE_FILL_"}, value = {
+            POINTER_ICON_VECTOR_STYLE_FILL_BLACK,
+            POINTER_ICON_VECTOR_STYLE_FILL_GREEN,
+            POINTER_ICON_VECTOR_STYLE_FILL_YELLOW,
+            POINTER_ICON_VECTOR_STYLE_FILL_PINK,
+            POINTER_ICON_VECTOR_STYLE_FILL_BLUE
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface PointerIconVectorStyleFill {}
+
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_BLACK = 0;
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_GREEN = 1;
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_YELLOW = 2;
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_PINK = 3;
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_BLUE = 4;
+
+    // If adding a PointerIconVectorStyleFill, update END value for {@link SystemSettingsValidators}
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_BEGIN =
+            POINTER_ICON_VECTOR_STYLE_FILL_BLACK;
+    /** @hide */ public static final int POINTER_ICON_VECTOR_STYLE_FILL_END =
+            POINTER_ICON_VECTOR_STYLE_FILL_BLUE;
+
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final int mType;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
@@ -261,7 +290,7 @@
         }
 
         final PointerIcon icon = new PointerIcon(type);
-        icon.loadResource(context.getResources(), resourceId);
+        icon.loadResource(context.getResources(), resourceId, context.getTheme());
         return icon;
     }
 
@@ -324,7 +353,7 @@
         }
 
         PointerIcon icon = new PointerIcon(TYPE_CUSTOM);
-        icon.loadResource(resources, resourceId);
+        icon.loadResource(resources, resourceId, null);
         return icon;
     }
 
@@ -443,7 +472,8 @@
         return new BitmapDrawable(resources, bitmap);
     }
 
-    private void loadResource(@NonNull Resources resources, @XmlRes int resourceId) {
+    private void loadResource(@NonNull Resources resources, @XmlRes int resourceId,
+            @Nullable Resources.Theme theme) {
         final XmlResourceParser parser = resources.getXml(resourceId);
         final int bitmapRes;
         final float hotSpotX;
@@ -467,7 +497,7 @@
             throw new IllegalArgumentException("<pointer-icon> is missing bitmap attribute.");
         }
 
-        Drawable drawable = resources.getDrawable(bitmapRes);
+        Drawable drawable = resources.getDrawable(bitmapRes, theme);
         if (drawable instanceof AnimationDrawable) {
             // Extract animation frame bitmaps.
             final AnimationDrawable animationDrawable = (AnimationDrawable) drawable;
@@ -649,6 +679,27 @@
     }
 
     /**
+     * Convert fill style constant to resource ID.
+     *
+     * @hide
+     */
+    public static int vectorFillStyleToResource(@PointerIconVectorStyleFill int fillStyle) {
+        return switch (fillStyle) {
+            case POINTER_ICON_VECTOR_STYLE_FILL_BLACK ->
+                    com.android.internal.R.style.PointerIconVectorStyleFillBlack;
+            case POINTER_ICON_VECTOR_STYLE_FILL_GREEN ->
+                    com.android.internal.R.style.PointerIconVectorStyleFillGreen;
+            case POINTER_ICON_VECTOR_STYLE_FILL_YELLOW ->
+                    com.android.internal.R.style.PointerIconVectorStyleFillYellow;
+            case POINTER_ICON_VECTOR_STYLE_FILL_PINK ->
+                    com.android.internal.R.style.PointerIconVectorStyleFillPink;
+            case POINTER_ICON_VECTOR_STYLE_FILL_BLUE ->
+                    com.android.internal.R.style.PointerIconVectorStyleFillBlue;
+            default -> com.android.internal.R.style.PointerIconVectorStyleFillBlack;
+        };
+    }
+
+    /**
      * Sets whether drop shadow will draw in the native code.
      *
      * @hide
@@ -658,4 +709,14 @@
     public void setDrawNativeDropShadow(boolean drawNativeDropShadow) {
         mDrawNativeDropShadow = drawNativeDropShadow;
     }
+
+    /**
+     * Gets the PointerIcon's bitmap.
+     *
+     * @hide
+     */
+    @VisibleForTesting
+    public Bitmap getBitmap() {
+        return mBitmap;
+    }
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 5e3f09a..14bb681 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -204,7 +204,6 @@
 import android.view.translation.ViewTranslationRequest;
 import android.view.translation.ViewTranslationResponse;
 import android.widget.Checkable;
-import android.widget.FrameLayout;
 import android.widget.ScrollBarDrawable;
 import android.window.OnBackInvokedDispatcher;
 
@@ -962,21 +961,6 @@
     public HapticScrollFeedbackProvider mScrollFeedbackProvider = null;
 
     /**
-     * Use the old (broken) way of building MeasureSpecs.
-     */
-    private static boolean sUseBrokenMakeMeasureSpec = false;
-
-    /**
-     * Always return a size of 0 for MeasureSpec values with a mode of UNSPECIFIED
-     */
-    static boolean sUseZeroUnspecifiedMeasureSpec = false;
-
-    /**
-     * Ignore any optimizations using the measure cache.
-     */
-    private static boolean sIgnoreMeasureCache = false;
-
-    /**
      * Ignore an optimization that skips unnecessary EXACTLY layout passes.
      */
     private static boolean sAlwaysRemeasureExactly = false;
@@ -5845,20 +5829,6 @@
         if (!sCompatibilityDone && context != null) {
             final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
 
-            // Older apps may need this compatibility hack for measurement.
-            sUseBrokenMakeMeasureSpec = targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR1;
-
-            // Older apps expect onMeasure() to always be called on a layout pass, regardless
-            // of whether a layout was requested on that View.
-            sIgnoreMeasureCache = targetSdkVersion < Build.VERSION_CODES.KITKAT;
-
-            // In M and newer, our widgets can pass a "hint" value in the size
-            // for UNSPECIFIED MeasureSpecs. This lets child views of scrolling containers
-            // know what the expected parent size is going to be, so e.g. list items can size
-            // themselves at 1/3 the size of their container. It breaks older apps though,
-            // specifically apps that use some popular open source libraries.
-            sUseZeroUnspecifiedMeasureSpec = targetSdkVersion < Build.VERSION_CODES.M;
-
             // Old versions of the platform would give different results from
             // LinearLayout measurement passes using EXACTLY and non-EXACTLY
             // modes, so we always need to run an additional EXACTLY pass.
@@ -6035,8 +6005,6 @@
         boolean leftPaddingDefined = false;
         boolean rightPaddingDefined = false;
 
-        final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
-
         // Set default values.
         viewFlagValues |= FOCUSABLE_AUTO;
         viewFlagMasks |= FOCUSABLE_AUTO;
@@ -6257,11 +6225,7 @@
                     break;
                 //noinspection deprecation
                 case R.styleable.View_fadingEdge:
-                    if (targetSdkVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-                        // Ignore the attribute starting with ICS
-                        break;
-                    }
-                    // With builds < ICS, fall through and apply fading edges
+                    break;
                 case R.styleable.View_requiresFadingEdge:
                     final int fadingEdge = a.getInt(attr, FADING_EDGE_NONE);
                     if (fadingEdge != FADING_EDGE_NONE) {
@@ -6399,35 +6363,25 @@
                             PROVIDER_BACKGROUND));
                     break;
                 case R.styleable.View_foreground:
-                    if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
-                        setForeground(a.getDrawable(attr));
-                    }
+                    setForeground(a.getDrawable(attr));
                     break;
                 case R.styleable.View_foregroundGravity:
-                    if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
-                        setForegroundGravity(a.getInt(attr, Gravity.NO_GRAVITY));
-                    }
+                    setForegroundGravity(a.getInt(attr, Gravity.NO_GRAVITY));
                     break;
                 case R.styleable.View_foregroundTintMode:
-                    if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
-                        setForegroundTintBlendMode(
-                                Drawable.parseBlendMode(a.getInt(attr, -1),
-                                        null));
-                    }
+                    setForegroundTintBlendMode(
+                            Drawable.parseBlendMode(a.getInt(attr, -1),
+                                    null));
                     break;
                 case R.styleable.View_foregroundTint:
-                    if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
-                        setForegroundTintList(a.getColorStateList(attr));
-                    }
+                    setForegroundTintList(a.getColorStateList(attr));
                     break;
                 case R.styleable.View_foregroundInsidePadding:
-                    if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
-                        if (mForegroundInfo == null) {
-                            mForegroundInfo = new ForegroundInfo();
-                        }
-                        mForegroundInfo.mInsidePadding = a.getBoolean(attr,
-                                mForegroundInfo.mInsidePadding);
+                    if (mForegroundInfo == null) {
+                        mForegroundInfo = new ForegroundInfo();
                     }
+                    mForegroundInfo.mInsidePadding = a.getBoolean(attr,
+                            mForegroundInfo.mInsidePadding);
                     break;
                 case R.styleable.View_scrollIndicators:
                     final int scrollIndicators =
@@ -13905,11 +13859,6 @@
     })
     @ResolvedLayoutDir
     public int getLayoutDirection() {
-        final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
-        if (targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED;
-            return LAYOUT_DIRECTION_RESOLVED_DEFAULT;
-        }
         return ((mPrivateFlags2 & PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ==
                 PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ? LAYOUT_DIRECTION_RTL : LAYOUT_DIRECTION_LTR;
     }
@@ -22480,8 +22429,7 @@
      * RTL not supported)
      */
     private boolean isRtlCompatibilityMode() {
-        final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
-        return targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1 || !hasRtlSupport();
+        return !hasRtlSupport();
     }
 
     /**
@@ -28149,7 +28097,7 @@
                 cacheIndex = forceLayout ? -1 : mMeasureCache.indexOfKey(key);
             }
 
-            if (cacheIndex < 0 || sIgnoreMeasureCache) {
+            if (cacheIndex < 0) {
                 if (isTraversalTracingEnabled()) {
                     Trace.beginSection(mTracingStrings.onMeasure);
                 }
@@ -31135,11 +31083,7 @@
          */
         public static int makeMeasureSpec(@IntRange(from = 0, to = (1 << MeasureSpec.MODE_SHIFT) - 1) int size,
                                           @MeasureSpecMode int mode) {
-            if (sUseBrokenMakeMeasureSpec) {
-                return size + mode;
-            } else {
-                return (size & ~MODE_MASK) | (mode & MODE_MASK);
-            }
+            return (size & ~MODE_MASK) | (mode & MODE_MASK);
         }
 
         /**
@@ -31150,9 +31094,6 @@
          */
         @UnsupportedAppUsage
         public static int makeSafeMeasureSpec(int size, int mode) {
-            if (sUseZeroUnspecifiedMeasureSpec && mode == UNSPECIFIED) {
-                return 0;
-            }
             return makeMeasureSpec(size, mode);
         }
 
@@ -33958,8 +33899,7 @@
         int category;
         switch (getViewRootImpl().intermittentUpdateState()) {
             case ViewRootImpl.INTERMITTENT_STATE_INTERMITTENT -> category =
-                    (sToolkitFrameRateBySizeReadOnlyFlagValue ? FRAME_RATE_CATEGORY_LOW
-                            : FRAME_RATE_CATEGORY_NORMAL) | FRAME_RATE_CATEGORY_REASON_INTERMITTENT;
+                    FRAME_RATE_CATEGORY_NORMAL | FRAME_RATE_CATEGORY_REASON_INTERMITTENT;
             case ViewRootImpl.INTERMITTENT_STATE_NOT_INTERMITTENT ->
                     category = mSizeBasedFrameRateCategoryAndReason;
             default -> category = mLastFrameRateCategory;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index ab529e6..b2c39b1 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -16,7 +16,6 @@
 
 package android.view;
 
-import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
 import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE;
 import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP;
 
@@ -55,7 +54,6 @@
 import android.util.Pools;
 import android.util.Pools.SynchronizedPool;
 import android.util.SparseArray;
-import android.util.SparseBooleanArray;
 import android.view.WindowInsetsAnimation.Bounds;
 import android.view.WindowInsetsAnimation.Callback.DispatchMode;
 import android.view.accessibility.AccessibilityEvent;
@@ -718,10 +716,7 @@
         mGroupFlags |= FLAG_ANIMATION_DONE;
         mGroupFlags |= FLAG_ANIMATION_CACHE;
         mGroupFlags |= FLAG_ALWAYS_DRAWN_WITH_CACHE;
-
-        if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB) {
-            mGroupFlags |= FLAG_SPLIT_MOTION_EVENTS;
-        }
+        mGroupFlags |= FLAG_SPLIT_MOTION_EVENTS;
 
         setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS);
 
@@ -3599,48 +3594,7 @@
                 childIndex = getAndVerifyPreorderedIndex(childrenCount, i, customOrder);
             } catch (IndexOutOfBoundsException e) {
                 childIndex = i;
-                if (mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.M) {
-                    Log.w(TAG, "Bad getChildDrawingOrder while collecting assist @ "
-                            + i + " of " + childrenCount, e);
-                    // At least one app is failing when we call getChildDrawingOrder
-                    // at this point, so deal semi-gracefully with it by falling back
-                    // on the basic order.
-                    customOrder = false;
-                    if (i > 0) {
-                        // If we failed at the first index, there really isn't
-                        // anything to do -- we will just proceed with the simple
-                        // sequence order.
-                        // Otherwise, we failed in the middle, so need to come up
-                        // with an order for the remaining indices and use that.
-                        // Failed at the first one, easy peasy.
-                        int[] permutation = new int[childrenCount];
-                        SparseBooleanArray usedIndices = new SparseBooleanArray();
-                        // Go back and collected the indices we have done so far.
-                        for (int j = 0; j < i; j++) {
-                            permutation[j] = getChildDrawingOrder(childrenCount, j);
-                            usedIndices.put(permutation[j], true);
-                        }
-                        // Fill in the remaining indices with indices that have not
-                        // yet been used.
-                        int nextIndex = 0;
-                        for (int j = i; j < childrenCount; j++) {
-                            while (usedIndices.get(nextIndex, false)) {
-                                nextIndex++;
-                            }
-                            permutation[j] = nextIndex;
-                            nextIndex++;
-                        }
-                        // Build the final view list.
-                        preorderedList = new ArrayList<>(childrenCount);
-                        for (int j = 0; j < childrenCount; j++) {
-                            final int index = permutation[j];
-                            final View child = mChildren[index];
-                            preorderedList.add(child);
-                        }
-                    }
-                } else {
-                    throw e;
-                }
+                throw e;
             }
             final View child = getAndVerifyPreorderedView(preorderedList, mChildren,
                     childIndex);
@@ -7109,12 +7063,12 @@
             } else if (childDimension == LayoutParams.MATCH_PARENT) {
                 // Child wants to be our size... find out how big it should
                 // be
-                resultSize = View.sUseZeroUnspecifiedMeasureSpec ? 0 : size;
+                resultSize = size;
                 resultMode = MeasureSpec.UNSPECIFIED;
             } else if (childDimension == LayoutParams.WRAP_CONTENT) {
                 // Child wants to determine its own size.... find out how
                 // big it should be
-                resultSize = View.sUseZeroUnspecifiedMeasureSpec ? 0 : size;
+                resultSize = size;
                 resultMode = MeasureSpec.UNSPECIFIED;
             }
             break;
@@ -8662,8 +8616,7 @@
             }
 
             final boolean hasRtlSupport = c.getApplicationInfo().hasRtlSupport();
-            final int targetSdkVersion = c.getApplicationInfo().targetSdkVersion;
-            if (targetSdkVersion < JELLY_BEAN_MR1 || !hasRtlSupport) {
+            if (!hasRtlSupport) {
                 mMarginFlags |= RTL_COMPATIBILITY_MODE_MASK;
             }
 
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index fd407d6..54ee375 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -127,6 +127,7 @@
 import static com.android.window.flags.Flags.enableBufferTransformHintFromDisplay;
 import static com.android.window.flags.Flags.setScPropertiesInClient;
 import static com.android.window.flags.Flags.windowSessionRelayoutInfo;
+import static com.android.text.flags.Flags.disableHandwritingInitiatorForIme;
 
 import android.Manifest;
 import android.accessibilityservice.AccessibilityService;
@@ -176,6 +177,7 @@
 import android.graphics.RenderNode;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
+import android.hardware.SyncFence;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManager.DisplayListener;
 import android.hardware.display.DisplayManagerGlobal;
@@ -217,6 +219,7 @@
 import android.view.InputDevice.InputSourceClass;
 import android.view.Surface.OutOfResourcesException;
 import android.view.SurfaceControl.Transaction;
+import android.view.SurfaceControl.TransactionStats;
 import android.view.View.AttachInfo;
 import android.view.View.FocusDirection;
 import android.view.View.MeasureSpec;
@@ -291,6 +294,7 @@
 import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
+import java.util.function.Consumer;
 import java.util.function.Predicate;
 /**
  * The top of a view hierarchy, implementing the needed protocol between View
@@ -1110,6 +1114,8 @@
             FRAME_RATE_COMPATIBILITY_FIXED_SOURCE;
     // time for touch boost period.
     private static final int FRAME_RATE_TOUCH_BOOST_TIME = 3000;
+    // Timeout for the other frame rate boosts other than touch boost.
+    private static final int FRAME_RATE_BOOST_TIME = 3000;
     // time for evaluating the interval between current time and
     // the time when frame rate was set previously.
     private static final int FRAME_RATE_SETTING_REEVALUATE_TIME = 100;
@@ -1185,6 +1191,13 @@
     private String mFpsTraceName;
     private String mLargestViewTraceName;
 
+    private final boolean mAppStartInfoTimestampsFlagValue;
+    @GuardedBy("this")
+    private boolean mAppStartTimestampsSent = false;
+    private boolean mAppStartTrackingStarted = false;
+    private long mRenderThreadDrawStartTimeNs = -1;
+    private long mFirstFramePresentedTimeNs = -1;
+
     private static boolean sToolkitSetFrameRateReadOnlyFlagValue;
     private static boolean sToolkitFrameRateFunctionEnablingReadOnlyFlagValue;
     private static boolean sToolkitMetricsForFrameRateDecisionFlagValue;
@@ -1301,6 +1314,8 @@
         } else {
             mSensitiveContentProtectionService = null;
         }
+
+        mAppStartInfoTimestampsFlagValue = android.app.Flags.appStartInfoTimestamps();
     }
 
     public static void addFirstDrawHandler(Runnable callback) {
@@ -2573,6 +2588,12 @@
                     notifySurfaceDestroyed();
                 }
                 destroySurface();
+
+                // Reset so they can be sent again for warm starts.
+                mAppStartTimestampsSent = false;
+                mAppStartTrackingStarted = false;
+                mRenderThreadDrawStartTimeNs = -1;
+                mFirstFramePresentedTimeNs = -1;
             }
         }
     }
@@ -3288,7 +3309,6 @@
                         == LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
     }
 
-    @VisibleForTesting(visibility = PACKAGE)
     public InsetsController getInsetsController() {
         return mInsetsController;
     }
@@ -3454,7 +3474,7 @@
             if (shouldEnableDvrr() && viewVisibility == View.VISIBLE) {
                 // Boost frame rate when the viewVisibility becomes true.
                 // This is mainly for lanuchers that lanuch new windows.
-                boostFrameRate(FRAME_RATE_TOUCH_BOOST_TIME);
+                boostFrameRate(FRAME_RATE_BOOST_TIME);
             }
         }
 
@@ -4186,7 +4206,7 @@
 
             if (shouldEnableDvrr()) {
                 // Boost the frame rate when the ViewRootImpl first becomes available.
-                boostFrameRate(FRAME_RATE_TOUCH_BOOST_TIME);
+                boostFrameRate(FRAME_RATE_BOOST_TIME);
             }
         }
 
@@ -4372,6 +4392,30 @@
                 reportDrawFinished(t, seqId);
             }
         });
+
+        // Only trigger once per {@link ViewRootImpl} instance, so don't add listener if
+        // {link mTransactionCompletedTimeNs} has already been set.
+        if (mAppStartInfoTimestampsFlagValue && !mAppStartTrackingStarted) {
+            mAppStartTrackingStarted = true;
+            Transaction transaction = new Transaction();
+            transaction.addTransactionCompletedListener(mExecutor,
+                    new Consumer<TransactionStats>() {
+                        @Override
+                        public void accept(TransactionStats transactionStats) {
+                            SyncFence presentFence = transactionStats.getPresentFence();
+                            if (presentFence.awaitForever()) {
+                                if (mFirstFramePresentedTimeNs == -1) {
+                                    // Only trigger once per {@link ViewRootImpl} instance.
+                                    mFirstFramePresentedTimeNs = presentFence.getSignalTime();
+                                    maybeSendAppStartTimes();
+                                }
+                            }
+                            presentFence.close();
+                        }
+                    });
+            applyTransactionOnDraw(transaction);
+        }
+
         if (DEBUG_BLAST) {
             Log.d(mTag, "Setup new sync=" + mWmsRequestSyncGroup.getName());
         }
@@ -4379,6 +4423,45 @@
         mWmsRequestSyncGroup.add(this, null /* runnable */);
     }
 
+    private void maybeSendAppStartTimes() {
+        synchronized (this) {
+            if (mAppStartTimestampsSent) {
+                // Don't send timestamps more than once.
+                return;
+            }
+
+            // If we already have {@link mRenderThreadDrawStartTimeNs} then pass it through, if not
+            // post to main thread and check if we have it there.
+            if (mRenderThreadDrawStartTimeNs != -1) {
+                sendAppStartTimesLocked();
+            } else {
+                mHandler.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        synchronized (ViewRootImpl.this) {
+                            if (mRenderThreadDrawStartTimeNs == -1) {
+                                return;
+                            }
+                            sendAppStartTimesLocked();
+                        }
+                    }
+                });
+            }
+        }
+    }
+
+    @GuardedBy("this")
+    private void sendAppStartTimesLocked() {
+        try {
+            ActivityManager.getService().reportStartInfoViewTimestamps(
+                    mRenderThreadDrawStartTimeNs, mFirstFramePresentedTimeNs);
+            mAppStartTimestampsSent = true;
+        } catch (RemoteException e) {
+            // Ignore, timestamps may be lost.
+            if (DBG) Log.d(TAG, "Exception attempting to report start timestamps.", e);
+        }
+    }
+
     /**
      * Helper used to notify the service to block projection when a sensitive
      * view (the view displays sensitive content) is attached to the window.
@@ -5565,7 +5648,13 @@
                     registerCallbackForPendingTransactions();
                 }
 
+                long timeNs = SystemClock.uptimeNanos();
                 mAttachInfo.mThreadedRenderer.draw(mView, mAttachInfo, this);
+
+                // Only trigger once per {@link ViewRootImpl} instance.
+                if (mAppStartInfoTimestampsFlagValue && mRenderThreadDrawStartTimeNs == -1) {
+                    mRenderThreadDrawStartTimeNs = timeNs;
+                }
             } else {
                 // If we get here with a disabled & requested hardware renderer, something went
                 // wrong (an invalidate posted right before we destroyed the hardware surface
@@ -7834,7 +7923,11 @@
         private int processPointerEvent(QueuedInputEvent q) {
             final MotionEvent event = (MotionEvent)q.mEvent;
             final int action = event.getAction();
-            boolean handled = mHandwritingInitiator.onTouchEvent(event);
+            boolean handled = false;
+            if (!disableHandwritingInitiatorForIme()
+                    || mWindowAttributes.type != TYPE_INPUT_METHOD) {
+                handled = mHandwritingInitiator.onTouchEvent(event);
+            }
             if (handled) {
                 // If handwriting is started, toolkit doesn't receive ACTION_UP.
                 mLastClickToolType = event.getToolType(event.getActionIndex());
@@ -7986,7 +8079,9 @@
         }
 
         PointerIcon pointerIcon = null;
-        if (event.isStylusPointer() && mIsStylusPointerIconEnabled) {
+        if (event.isStylusPointer() && mIsStylusPointerIconEnabled
+                && (!disableHandwritingInitiatorForIme()
+                        || mWindowAttributes.type != TYPE_INPUT_METHOD)) {
             pointerIcon = mHandwritingInitiator.onResolvePointerIcon(mContext, event);
         }
         if (pointerIcon == null) {
@@ -12808,8 +12903,13 @@
                                 + mFrameRateCompatibility);
                 }
                 if (sToolkitFrameRateFunctionEnablingReadOnlyFlagValue) {
-                    mFrameRateTransaction.setFrameRate(mSurfaceControl, preferredFrameRate,
-                            mFrameRateCompatibility).applyAsyncUnsafe();
+                    if (preferredFrameRate > 0) {
+                        mFrameRateTransaction.setFrameRate(mSurfaceControl, preferredFrameRate,
+                                mFrameRateCompatibility);
+                    } else {
+                        mFrameRateTransaction.clearFrameRate(mSurfaceControl);
+                    }
+                    mFrameRateTransaction.applyAsyncUnsafe();
                 }
                 mLastPreferredFrameRate = preferredFrameRate;
             }
@@ -12948,6 +13048,7 @@
         }
         if (frameRateCompatibility == FRAME_RATE_COMPATIBILITY_GTE) {
             mIsTouchBoosting = false;
+            mIsFrameRateBoosting = false;
             if (!sToolkitFrameRateVelocityMappingReadOnlyFlagValue) {
                 mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_HIGH;
                 mFrameRateCategoryHighCount = FRAME_RATE_CATEGORY_COUNT;
diff --git a/core/java/android/view/accessibility/AccessibilityDisplayProxy.java b/core/java/android/view/accessibility/AccessibilityDisplayProxy.java
index 1fe8180..12e0814 100644
--- a/core/java/android/view/accessibility/AccessibilityDisplayProxy.java
+++ b/core/java/android/view/accessibility/AccessibilityDisplayProxy.java
@@ -302,10 +302,6 @@
                 }
 
                 @Override
-                public void onMagnificationSystemUIConnectionChanged(boolean connected) {
-                }
-
-                @Override
                 public void onMagnificationChanged(int displayId, @NonNull Region region,
                         MagnificationConfig config) {
                 }
diff --git a/core/java/android/view/accessibility/OWNERS b/core/java/android/view/accessibility/OWNERS
index b0943e9..f62b33f 100644
--- a/core/java/android/view/accessibility/OWNERS
+++ b/core/java/android/view/accessibility/OWNERS
@@ -5,7 +5,6 @@
 
 # Android members outside of Accessibility
 adamp@google.com #{LAST_RESORT_SUGGESTION}
-alanv@google.com #{LAST_RESORT_SUGGESTION}
 aurimas@google.com #{LAST_RESORT_SUGGESTION}
 jjaggi@google.com #{LAST_RESORT_SUGGESTION}
 ogunwale@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
index edf3387..ab7b226 100644
--- a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
+++ b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
@@ -169,13 +169,3 @@
     description: "Feature flag for declaring system pinch zoom opt-out apis"
     bug: "315089687"
 }
-
-flag {
-    name: "wait_magnification_system_ui_connection_to_notify_service_connected"
-    namespace: "accessibility"
-    description: "Decide whether AccessibilityService needs to wait until magnification system ui connection is ready to trigger onServiceConnected"
-    bug: "337800504"
-    metadata {
-        purpose: PURPOSE_BUGFIX
-    }
-}
diff --git a/core/java/android/view/animation/OWNERS b/core/java/android/view/animation/OWNERS
index 9b8f4d9..2fa01c3 100644
--- a/core/java/android/view/animation/OWNERS
+++ b/core/java/android/view/animation/OWNERS
@@ -2,5 +2,4 @@
 
 romainguy@google.com
 tianliu@google.com
-alanv@google.com
 adamp@google.com
diff --git a/core/java/android/view/flags/view_flags.aconfig b/core/java/android/view/flags/view_flags.aconfig
index c0d31fa..4d4e4af 100644
--- a/core/java/android/view/flags/view_flags.aconfig
+++ b/core/java/android/view/flags/view_flags.aconfig
@@ -28,6 +28,14 @@
 }
 
 flag {
+    name: "enable_vector_cursor_a11y_settings"
+    namespace: "systemui"
+    description: "Feature flag to enable accessibility settings for vector cursors."
+    bug: "302275042"
+    is_fixed_read_only: true
+}
+
+flag {
   name: "sensitive_content_app_protection_api"
   is_exported: true
   namespace: "permissions"
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index cf128fb..2d4bb90 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -707,6 +707,7 @@
     private static final int MSG_BIND_ACCESSIBILITY_SERVICE = 11;
     private static final int MSG_UNBIND_ACCESSIBILITY_SERVICE = 12;
     private static final int MSG_SET_INTERACTIVE = 13;
+    private static final int MSG_SET_VISIBILITY = 14;
     private static final int MSG_ON_SHOW_REQUESTED = 31;
     private static final int MSG_START_INPUT_RESULT = 40;
 
@@ -904,6 +905,21 @@
                 if (mCurRootView == viewRootImpl) {
                     mCurRootViewWindowFocused = false;
 
+                    if (Flags.refactorInsetsController() && mCurRootView != null) {
+                        final int softInputMode = mCurRootView.mWindowAttributes.softInputMode;
+                        final int state =
+                                softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
+                        if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
+                            // when losing focus (e.g., by going to another window), we reset the
+                            // requestedVisibleTypes of WindowInsetsController by hiding the IME
+                            if (DEBUG) {
+                                Log.d(TAG, "onWindowLostFocus, hiding IME because "
+                                        + "of STATE_ALWAYS_HIDDEN");
+                            }
+                            mCurRootView.getInsetsController().hide(WindowInsets.Type.ime());
+                        }
+                    }
+
                     clearCurRootViewIfNeeded();
                 }
             }
@@ -1332,6 +1348,19 @@
                     }
                     return;
                 }
+                case MSG_SET_VISIBILITY:
+                    final boolean visible = msg.arg1 != 0;
+                    synchronized (mH) {
+                        if (visible) {
+                            showSoftInput(mServedView, /* flags */ 0);
+                        } else {
+                            if (mCurRootView != null
+                                    && mCurRootView.getInsetsController() != null) {
+                                mCurRootView.getInsetsController().hide(WindowInsets.Type.ime());
+                            }
+                        }
+                    }
+                    break;
                 case MSG_SEND_INPUT_EVENT: {
                     sendInputEventAndReportResultOnMainLooper((PendingEvent)msg.obj);
                     return;
@@ -1429,6 +1458,11 @@
         }
 
         @Override
+        public void setImeVisibility(boolean visible) {
+            mH.obtainMessage(MSG_SET_VISIBILITY, visible ? 1 : 0, 0).sendToTarget();
+        }
+
+        @Override
         public void scheduleStartInputIfNecessary(boolean fullscreen) {
             // TODO(b/149859205): See if we can optimize this by having a fused dedicated operation.
             mH.obtainMessage(MSG_SET_ACTIVE, 0 /* active */, fullscreen ? 1 : 0).sendToTarget();
@@ -2298,19 +2332,32 @@
 
             ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED);
 
-            // Makes sure to call ImeInsetsSourceConsumer#onShowRequested on the UI thread.
-            // TODO(b/229426865): call WindowInsetsController#show instead.
-            mH.executeOrSendMessage(Message.obtain(mH, MSG_ON_SHOW_REQUESTED));
-            Log.d(TAG, "showSoftInput() view=" + view + " flags=" + flags + " reason="
-                    + InputMethodDebug.softInputDisplayReasonToString(reason));
-            return IInputMethodManagerGlobalInvoker.showSoftInput(
-                    mClient,
-                    view.getWindowToken(),
-                    statsToken,
-                    flags,
-                    mCurRootView.getLastClickToolType(),
-                    resultReceiver,
-                    reason);
+            if (Flags.refactorInsetsController()) {
+                // In case of a running show IME animation, it should not be requested visible,
+                // otherwise the animation would jump and not be controlled by the user anymore
+                if ((mCurRootView.getInsetsController().computeUserAnimatingTypes()
+                        & WindowInsets.Type.ime()) == 0) {
+                    // TODO(b/322992891) handle case of SHOW_IMPLICIT
+                    view.getWindowInsetsController().show(WindowInsets.Type.ime());
+                    return true;
+                } else {
+                    return false;
+                }
+            } else {
+                // Makes sure to call ImeInsetsSourceConsumer#onShowRequested on the UI thread.
+                // TODO(b/229426865): call WindowInsetsController#show instead.
+                mH.executeOrSendMessage(Message.obtain(mH, MSG_ON_SHOW_REQUESTED));
+                Log.d(TAG, "showSoftInput() view=" + view + " flags=" + flags + " reason="
+                        + InputMethodDebug.softInputDisplayReasonToString(reason));
+                return IInputMethodManagerGlobalInvoker.showSoftInput(
+                        mClient,
+                        view.getWindowToken(),
+                        statsToken,
+                        flags,
+                        mCurRootView.getLastClickToolType(),
+                        resultReceiver,
+                        reason);
+            }
         }
     }
 
@@ -2447,8 +2494,14 @@
 
             ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED);
 
-            return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, windowToken, statsToken,
-                    flags, resultReceiver, reason);
+            if (Flags.refactorInsetsController()) {
+                // TODO(b/322992891) handle case of HIDE_IMPLICIT_ONLY
+                servedView.getWindowInsetsController().hide(WindowInsets.Type.ime());
+                return true;
+            } else {
+                return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, windowToken,
+                        statsToken, flags, resultReceiver, reason);
+            }
         }
     }
 
diff --git a/core/java/android/view/textclassifier/intent/OWNERS b/core/java/android/view/textclassifier/intent/OWNERS
index ac80d9f..3465fe6 100644
--- a/core/java/android/view/textclassifier/intent/OWNERS
+++ b/core/java/android/view/textclassifier/intent/OWNERS
@@ -4,5 +4,4 @@
 toki@google.com
 svetoslavganov@android.com
 svetoslavganov@google.com
-augale@google.com
 joannechung@google.com
diff --git a/core/java/android/widget/OWNERS b/core/java/android/widget/OWNERS
index 1dc90ed..8b8090b 100644
--- a/core/java/android/widget/OWNERS
+++ b/core/java/android/widget/OWNERS
@@ -1,7 +1,6 @@
 # Bug component: 25700
 
 romainguy@google.com
-alanv@google.com
 adamp@google.com
 aurimas@google.com
 siyamed@google.com
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 5430f8f..15f9cff8 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -1424,6 +1424,10 @@
                                 context.unbindService(this);
                             }
 
+                            if (items == null) {
+                                items = new RemoteCollectionItems.Builder().build();
+                            }
+
                             result.complete(items);
                         }
 
@@ -6661,7 +6665,8 @@
     public static final class ColorResources {
         // Set of valid colors resources.
         private static final int FIRST_RESOURCE_COLOR_ID = android.R.color.system_neutral1_0;
-        private static final int LAST_RESOURCE_COLOR_ID = android.R.color.system_accent3_1000;
+        private static final int LAST_RESOURCE_COLOR_ID =
+            android.R.color.system_error_1000;
         // Size, in bytes, of an entry in the array of colors in an ARSC file.
         private static final int ARSC_ENTRY_SIZE = 16;
 
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 78dd3b1..fd3837f 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -4817,7 +4817,11 @@
         if (mFontWeightAdjustment != 0
                 && mFontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED) {
             if (tf == null) {
-                tf = Typeface.DEFAULT;
+                if (Flags.fixNullTypefaceBolding()) {
+                    tf = Typeface.DEFAULT_BOLD;
+                } else {
+                    tf = Typeface.DEFAULT;
+                }
             } else {
                 int newWeight = Math.min(
                         Math.max(tf.getWeight() + mFontWeightAdjustment, FontStyle.FONT_WEIGHT_MIN),
diff --git a/core/java/android/window/BackEvent.java b/core/java/android/window/BackEvent.java
index 5562360..d3733b7 100644
--- a/core/java/android/window/BackEvent.java
+++ b/core/java/android/window/BackEvent.java
@@ -48,6 +48,12 @@
     @SwipeEdge
     private final int mSwipeEdge;
 
+    /** @hide */
+    public static BackEvent fromBackMotionEvent(BackMotionEvent backMotionEvent) {
+        return new BackEvent(backMotionEvent.getTouchX(), backMotionEvent.getTouchY(),
+                backMotionEvent.getProgress(), backMotionEvent.getSwipeEdge());
+    }
+
     /**
      * Creates a new {@link BackEvent} instance.
      *
diff --git a/core/java/android/window/BackProgressAnimator.java b/core/java/android/window/BackProgressAnimator.java
index 94d7811..d28500c 100644
--- a/core/java/android/window/BackProgressAnimator.java
+++ b/core/java/android/window/BackProgressAnimator.java
@@ -19,8 +19,12 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.util.FloatProperty;
+import android.util.TimeUtils;
+import android.view.Choreographer;
 
 import com.android.internal.dynamicanimation.animation.DynamicAnimation;
+import com.android.internal.dynamicanimation.animation.FlingAnimation;
+import com.android.internal.dynamicanimation.animation.FloatValueHolder;
 import com.android.internal.dynamicanimation.animation.SpringAnimation;
 import com.android.internal.dynamicanimation.animation.SpringForce;
 
@@ -40,6 +44,7 @@
      *  always receive progress values in [0, 1].
      */
     private static final float SCALE_FACTOR = 100f;
+    private static final float FLING_FRICTION = 8f;
     private final SpringAnimation mSpring;
     private ProgressCallback mCallback;
     private float mProgress = 0;
@@ -48,11 +53,17 @@
     private boolean mBackAnimationInProgress = false;
     @Nullable
     private Runnable mBackCancelledFinishRunnable;
+    @Nullable
+    private Runnable mBackInvokedFinishRunnable;
+    private FlingAnimation mBackInvokedFlingAnim;
     private final DynamicAnimation.OnAnimationEndListener mOnAnimationEndListener =
             (animation, canceled, value, velocity) -> {
-                invokeBackCancelledRunnable();
+                if (mBackCancelledFinishRunnable != null) invokeBackCancelledRunnable();
+                if (mBackInvokedFinishRunnable != null) invokeBackInvokedRunnable();
                 reset();
             };
+    private final DynamicAnimation.OnAnimationUpdateListener mOnBackInvokedFlingUpdateListener =
+            (animation, progress, velocity) -> updateProgressValue(progress, velocity);
 
 
     private void setProgress(float progress) {
@@ -78,7 +89,7 @@
 
     @Override
     public void onAnimationUpdate(DynamicAnimation animation, float value, float velocity) {
-        updateProgressValue(value, velocity);
+        if (mBackInvokedFinishRunnable == null) updateProgressValue(value, velocity);
     }
 
 
@@ -134,6 +145,12 @@
             // Ensure that last progress value that apps see is 0
             updateProgressValue(0, 0);
             invokeBackCancelledRunnable();
+        } else if (mBackInvokedFinishRunnable != null) {
+            invokeBackInvokedRunnable();
+        }
+        if (mBackInvokedFlingAnim != null) {
+            mBackInvokedFlingAnim.cancel();
+            mBackInvokedFlingAnim = null;
         }
         mSpring.animateToFinalPosition(0);
         if (mSpring.canSkipToEnd()) {
@@ -149,6 +166,30 @@
     }
 
     /**
+     * Animate the back progress animation a bit further with a high friction considering the
+     * current progress and velocity.
+     *
+     * @param finishCallback the callback to be invoked when the final destination is reached
+     */
+    public void onBackInvoked(@NonNull Runnable finishCallback) {
+        mBackInvokedFinishRunnable = finishCallback;
+        mSpring.animateToFinalPosition(0);
+
+        mBackInvokedFlingAnim = new FlingAnimation(new FloatValueHolder())
+                .setStartValue(mProgress)
+                .setFriction(FLING_FRICTION)
+                .setStartVelocity(mVelocity)
+                .setMinValue(0)
+                .setMaxValue(SCALE_FACTOR);
+        mBackInvokedFlingAnim.addUpdateListener(mOnBackInvokedFlingUpdateListener);
+        mBackInvokedFlingAnim.addEndListener(mOnAnimationEndListener);
+        mBackInvokedFlingAnim.start();
+        // do an animation-frame immediately to prevent idle frame
+        mBackInvokedFlingAnim.doAnimationFrame(
+                Choreographer.getInstance().getLastFrameTimeNanos() / TimeUtils.NANOS_PER_MS);
+    }
+
+    /**
      * Animate the back progress animation from current progress to start position.
      * This should be called when back is cancelled.
      *
@@ -196,4 +237,11 @@
         mBackCancelledFinishRunnable = null;
     }
 
+    private void invokeBackInvokedRunnable() {
+        mBackInvokedFlingAnim.removeUpdateListener(mOnBackInvokedFlingUpdateListener);
+        mBackInvokedFlingAnim.removeEndListener(mOnAnimationEndListener);
+        mBackInvokedFinishRunnable.run();
+        mBackInvokedFinishRunnable = null;
+    }
+
 }
\ No newline at end of file
diff --git a/core/java/android/window/ImeOnBackInvokedDispatcher.java b/core/java/android/window/ImeOnBackInvokedDispatcher.java
index 3b9b162..ce1f986 100644
--- a/core/java/android/window/ImeOnBackInvokedDispatcher.java
+++ b/core/java/android/window/ImeOnBackInvokedDispatcher.java
@@ -32,6 +32,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
+import java.util.function.Consumer;
 
 /**
  * A {@link OnBackInvokedDispatcher} for IME that forwards {@link OnBackInvokedCallback}
@@ -52,14 +53,8 @@
     static final String RESULT_KEY_PRIORITY = "priority";
     static final int RESULT_CODE_REGISTER = 0;
     static final int RESULT_CODE_UNREGISTER = 1;
-    static final int RESULT_CODE_START_DISPATCHING = 2;
-    static final int RESULT_CODE_STOP_DISPATCHING = 3;
     @NonNull
     private final ResultReceiver mResultReceiver;
-    @NonNull
-    private final BackProgressAnimator mProgressAnimator = new BackProgressAnimator();
-    @NonNull
-    private final BackTouchTracker mTouchTracker = new BackTouchTracker();
     // The handler to run callbacks on. This should be on the same thread
     // the ViewRootImpl holding IME's WindowOnBackInvokedDispatcher is created on.
     private Handler mHandler;
@@ -76,6 +71,10 @@
         };
     }
 
+    void setHandler(@NonNull Handler handler) {
+        mHandler = handler;
+    }
+
     /**
      * Override this method to return the {@link WindowOnBackInvokedDispatcher} of the window
      * that should receive the forwarded callback.
@@ -89,10 +88,6 @@
         mResultReceiver = in.readTypedObject(ResultReceiver.CREATOR);
     }
 
-    void setHandler(@NonNull Handler handler) {
-        mHandler = handler;
-    }
-
     @Override
     public void registerOnBackInvokedCallback(
             @OnBackInvokedDispatcher.Priority int priority,
@@ -103,14 +98,7 @@
         // This is necessary because the callback is sent to and registered from
         // the app process, which may treat the IME callback as weakly referenced. This will not
         // cause a memory leak because the app side already clears the reference correctly.
-        final IOnBackInvokedCallback iCallback =
-                new ImeOnBackInvokedCallbackWrapper(
-                        callback,
-                        mTouchTracker,
-                        mProgressAnimator,
-                        this,
-                        mHandler != null ? mHandler : Handler.getMain(),
-                        false /* useWeakRef */);
+        final IOnBackInvokedCallback iCallback = new ImeOnBackInvokedCallbackWrapper(callback);
         bundle.putBinder(RESULT_KEY_CALLBACK, iCallback.asBinder());
         bundle.putInt(RESULT_KEY_PRIORITY, priority);
         bundle.putInt(RESULT_KEY_ID, callback.hashCode());
@@ -135,12 +123,6 @@
         dest.writeTypedObject(mResultReceiver, flags);
     }
 
-    /** Sets the progress thresholds for touch tracking */
-    public void setProgressThresholds(float linearDistance, float maxDistance,
-            float nonLinearFactor) {
-        mTouchTracker.setProgressThresholds(linearDistance, maxDistance, nonLinearFactor);
-    }
-
     @NonNull
     public static final Parcelable.Creator<ImeOnBackInvokedDispatcher> CREATOR =
             new Parcelable.Creator<ImeOnBackInvokedDispatcher>() {
@@ -162,15 +144,10 @@
             int priority = resultData.getInt(RESULT_KEY_PRIORITY);
             final IOnBackInvokedCallback callback = IOnBackInvokedCallback.Stub.asInterface(
                     resultData.getBinder(RESULT_KEY_CALLBACK));
-            registerReceivedCallback(
-                    callback, priority, callbackId, receivingDispatcher);
+            registerReceivedCallback(callback, priority, callbackId, receivingDispatcher);
         } else if (resultCode == RESULT_CODE_UNREGISTER) {
             final int callbackId = resultData.getInt(RESULT_KEY_ID);
             unregisterReceivedCallback(callbackId, receivingDispatcher);
-        } else if (resultCode == RESULT_CODE_START_DISPATCHING) {
-            receiveStartDispatching(receivingDispatcher);
-        } else if (resultCode == RESULT_CODE_STOP_DISPATCHING) {
-            receiveStopDispatching(receivingDispatcher);
         }
     }
 
@@ -212,63 +189,6 @@
         mImeCallbacks.remove(callback);
     }
 
-    static class ImeOnBackInvokedCallbackWrapper extends
-            WindowOnBackInvokedDispatcher.OnBackInvokedCallbackWrapper {
-        @NonNull
-        private final ImeOnBackInvokedDispatcher mDispatcher;
-
-        ImeOnBackInvokedCallbackWrapper(
-                @NonNull OnBackInvokedCallback callback,
-                @NonNull BackTouchTracker touchTracker,
-                @NonNull BackProgressAnimator progressAnimator,
-                @NonNull ImeOnBackInvokedDispatcher dispatcher,
-                @NonNull Handler handler,
-                boolean useWeakRef) {
-            super(callback, touchTracker, progressAnimator, handler, useWeakRef);
-            mDispatcher = dispatcher;
-        }
-
-        @Override
-        public void onBackStarted(BackMotionEvent backEvent) {
-            super.onBackStarted(backEvent);
-            mDispatcher.sendStartDispatching();
-        }
-
-        @Override
-        public void onBackCancelled() {
-            super.onBackCancelled();
-            mDispatcher.sendStopDispatching();
-        }
-
-        @Override
-        public void onBackInvoked() throws RemoteException {
-            super.onBackInvoked();
-            mDispatcher.sendStopDispatching();
-        }
-    }
-
-    /** Notifies the app process that we've stopped dispatching to an IME callback */
-    private void sendStopDispatching() {
-        mResultReceiver.send(RESULT_CODE_STOP_DISPATCHING, null /* unused bundle */);
-    }
-
-    /** Notifies the app process that we've started dispatching to an IME callback */
-    private void sendStartDispatching() {
-        mResultReceiver.send(RESULT_CODE_START_DISPATCHING, null /* unused bundle */);
-    }
-
-    /** Receives IME's message that dispatching has started. */
-    private void receiveStopDispatching(
-            @NonNull WindowOnBackInvokedDispatcher receivingDispatcher) {
-        receivingDispatcher.onStopImeDispatching();
-    }
-
-    /** Receives IME's message that dispatching has stopped. */
-    private void receiveStartDispatching(
-            @NonNull WindowOnBackInvokedDispatcher receivingDispatcher) {
-        receivingDispatcher.onStartImeDispatching();
-    }
-
     /** Clears all registered callbacks on the instance. */
     public void clear() {
         // Unregister previously registered callbacks if there's any.
@@ -278,14 +198,10 @@
             }
         }
         mImeCallbacks.clear();
-        // We should also stop running animations since all callbacks have been removed.
-        // note: mSpring.skipToEnd(), in ProgressAnimator.reset(), requires the main handler.
-        Handler.getMain().post(mProgressAnimator::reset);
-        sendStopDispatching();
     }
 
     @VisibleForTesting(visibility = PACKAGE)
-    public static class ImeOnBackInvokedCallback implements OnBackInvokedCallback {
+    public static class ImeOnBackInvokedCallback implements OnBackAnimationCallback {
         @NonNull
         private final IOnBackInvokedCallback mIOnBackInvokedCallback;
         /**
@@ -303,11 +219,42 @@
         }
 
         @Override
+        public void onBackStarted(@NonNull BackEvent backEvent) {
+            try {
+                mIOnBackInvokedCallback.onBackStarted(
+                        new BackMotionEvent(backEvent.getTouchX(), backEvent.getTouchY(),
+                                backEvent.getProgress(), 0f, 0f, false, backEvent.getSwipeEdge(),
+                                null));
+            } catch (RemoteException e) {
+                Log.e(TAG, "Exception when invoking forwarded callback. e: ", e);
+            }
+        }
+
+        @Override
+        public void onBackProgressed(@NonNull BackEvent backEvent) {
+            try {
+                mIOnBackInvokedCallback.onBackProgressed(
+                        new BackMotionEvent(backEvent.getTouchX(), backEvent.getTouchY(),
+                                backEvent.getProgress(), 0f, 0f, false, backEvent.getSwipeEdge(),
+                                null));
+            } catch (RemoteException e) {
+                Log.e(TAG, "Exception when invoking forwarded callback. e: ", e);
+            }
+        }
+
+        @Override
         public void onBackInvoked() {
             try {
-                if (mIOnBackInvokedCallback != null) {
-                    mIOnBackInvokedCallback.onBackInvoked();
-                }
+                mIOnBackInvokedCallback.onBackInvoked();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Exception when invoking forwarded callback. e: ", e);
+            }
+        }
+
+        @Override
+        public void onBackCancelled() {
+            try {
+                mIOnBackInvokedCallback.onBackCancelled();
             } catch (RemoteException e) {
                 Log.e(TAG, "Exception when invoking forwarded callback. e: ", e);
             }
@@ -317,10 +264,6 @@
             return mId;
         }
 
-        IOnBackInvokedCallback getIOnBackInvokedCallback() {
-            return mIOnBackInvokedCallback;
-        }
-
         @Override
         public String toString() {
             return "ImeCallback=ImeOnBackInvokedCallback@" + mId
@@ -358,4 +301,50 @@
             }
         }
     }
+
+    /**
+     * Wrapper class that wraps an OnBackInvokedCallback. This is used when a callback is sent from
+     * the IME process to the app process.
+     */
+    private class ImeOnBackInvokedCallbackWrapper extends IOnBackInvokedCallback.Stub {
+
+        private final OnBackInvokedCallback mCallback;
+
+        ImeOnBackInvokedCallbackWrapper(@NonNull OnBackInvokedCallback callback) {
+            mCallback = callback;
+        }
+
+        @Override
+        public void onBackStarted(BackMotionEvent backMotionEvent) {
+            maybeRunOnAnimationCallback((animationCallback) -> animationCallback.onBackStarted(
+                    BackEvent.fromBackMotionEvent(backMotionEvent)));
+        }
+
+        @Override
+        public void onBackProgressed(BackMotionEvent backMotionEvent) {
+            maybeRunOnAnimationCallback((animationCallback) -> animationCallback.onBackProgressed(
+                    BackEvent.fromBackMotionEvent(backMotionEvent)));
+        }
+
+        @Override
+        public void onBackCancelled() {
+            maybeRunOnAnimationCallback(OnBackAnimationCallback::onBackCancelled);
+        }
+
+        @Override
+        public void onBackInvoked() {
+            mHandler.post(mCallback::onBackInvoked);
+        }
+
+        @Override
+        public void setTriggerBack(boolean triggerBack) {
+            // no-op
+        }
+
+        private void maybeRunOnAnimationCallback(Consumer<OnBackAnimationCallback> block) {
+            if (mCallback instanceof OnBackAnimationCallback) {
+                mHandler.post(() -> block.accept((OnBackAnimationCallback) mCallback));
+            }
+        }
+    }
 }
diff --git a/core/java/android/window/TaskFragmentAnimationParams.java b/core/java/android/window/TaskFragmentAnimationParams.java
index c8f6327..85e96c9 100644
--- a/core/java/android/window/TaskFragmentAnimationParams.java
+++ b/core/java/android/window/TaskFragmentAnimationParams.java
@@ -16,17 +16,21 @@
 
 package android.window;
 
+import static android.window.TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID;
+
+import android.annotation.AnimRes;
 import android.annotation.ColorInt;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.util.Objects;
+
 /**
  * Data object for animation related override of TaskFragment.
  * @hide
  */
-// TODO(b/206557124): Add more animation customization options.
 public final class TaskFragmentAnimationParams implements Parcelable {
 
     /** The default {@link TaskFragmentAnimationParams} to use when there is no app override. */
@@ -43,8 +47,22 @@
     @ColorInt
     private final int mAnimationBackgroundColor;
 
-    private TaskFragmentAnimationParams(@ColorInt int animationBackgroundColor) {
+    @AnimRes
+    private final int mOpenAnimationResId;
+
+    @AnimRes
+    private final int mChangeAnimationResId;
+
+    @AnimRes
+    private final int mCloseAnimationResId;
+
+    private TaskFragmentAnimationParams(@ColorInt int animationBackgroundColor,
+            @AnimRes int openAnimationResId, @AnimRes int changeAnimationResId,
+            @AnimRes int closeAnimationResId) {
         mAnimationBackgroundColor = animationBackgroundColor;
+        mOpenAnimationResId = openAnimationResId;
+        mChangeAnimationResId = changeAnimationResId;
+        mCloseAnimationResId = closeAnimationResId;
     }
 
     /**
@@ -58,13 +76,52 @@
         return mAnimationBackgroundColor;
     }
 
+    /**
+     * Returns the resources ID of open animation that applies to this TaskFragment.
+     * <p>
+     * The default value is {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system
+     * default animation.
+     */
+    @AnimRes
+    public int getOpenAnimationResId() {
+        return mOpenAnimationResId;
+    }
+
+    /**
+     * Returns the resources ID of change animation that applies to this TaskFragment.
+     * <p>
+     * The default value is {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system
+     * default animation.
+     */
+    @AnimRes
+    public int getChangeAnimationResId() {
+        return mChangeAnimationResId;
+    }
+
+    /**
+     * Returns the resources ID of close animation that applies to this TaskFragment.
+     * <p>
+     * The default value is {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system
+     * default animation.
+     */
+    @AnimRes
+    public int getCloseAnimationResId() {
+        return mCloseAnimationResId;
+    }
+
     private TaskFragmentAnimationParams(Parcel in) {
         mAnimationBackgroundColor = in.readInt();
+        mOpenAnimationResId = in.readInt();
+        mChangeAnimationResId = in.readInt();
+        mCloseAnimationResId = in.readInt();
     }
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeInt(mAnimationBackgroundColor);
+        dest.writeInt(mOpenAnimationResId);
+        dest.writeInt(mChangeAnimationResId);
+        dest.writeInt(mCloseAnimationResId);
     }
 
     @NonNull
@@ -85,21 +142,37 @@
     public String toString() {
         return "TaskFragmentAnimationParams{"
                 + " animationBgColor=" + Integer.toHexString(mAnimationBackgroundColor)
+                + " openAnimResId=" + mOpenAnimationResId
+                + " changeAnimResId=" + mChangeAnimationResId
+                + " closeAnimResId=" + mCloseAnimationResId
                 + "}";
     }
 
     @Override
     public int hashCode() {
-        return mAnimationBackgroundColor;
+        return Objects.hash(mAnimationBackgroundColor, mOpenAnimationResId, mChangeAnimationResId,
+                mCloseAnimationResId);
     }
 
     @Override
     public boolean equals(@Nullable Object obj) {
-        if (!(obj instanceof TaskFragmentAnimationParams)) {
+        if (!(obj instanceof TaskFragmentAnimationParams other)) {
             return false;
         }
-        final TaskFragmentAnimationParams other = (TaskFragmentAnimationParams) obj;
-        return mAnimationBackgroundColor == other.mAnimationBackgroundColor;
+        return mAnimationBackgroundColor == other.mAnimationBackgroundColor
+                && mOpenAnimationResId == other.mOpenAnimationResId
+                && mChangeAnimationResId == other.mChangeAnimationResId
+                && mCloseAnimationResId == other.mCloseAnimationResId;
+    }
+
+    /**
+     * Returns {@code true} if one of {@link #getOpenAnimationResId()},
+     * {@link #getChangeAnimationResId()} or {@link #getCloseAnimationResId()} is specified.
+     */
+    public boolean hasOverrideAnimation() {
+        return mOpenAnimationResId != DEFAULT_ANIMATION_RESOURCES_ID
+                || mChangeAnimationResId != DEFAULT_ANIMATION_BACKGROUND_COLOR
+                || mCloseAnimationResId != DEFAULT_ANIMATION_RESOURCES_ID;
     }
 
     @Override
@@ -113,6 +186,15 @@
         @ColorInt
         private int mAnimationBackgroundColor = DEFAULT_ANIMATION_BACKGROUND_COLOR;
 
+        @AnimRes
+        private int mOpenAnimationResId = DEFAULT_ANIMATION_RESOURCES_ID;
+
+        @AnimRes
+        private int mChangeAnimationResId = DEFAULT_ANIMATION_RESOURCES_ID;
+
+        @AnimRes
+        private int mCloseAnimationResId = DEFAULT_ANIMATION_RESOURCES_ID;
+
         /**
          * Sets the {@link ColorInt} to use for the background during the animation with this
          * TaskFragment if the animation requires a background. The default value is
@@ -128,10 +210,50 @@
             return this;
         }
 
+        /**
+         * Sets the open animation resources ID this TaskFragment. The default value is
+         * {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system default animation.
+         *
+         * @param resId the open animation resources ID.
+         * @return this {@link Builder}.
+         */
+        @NonNull
+        public Builder setOpenAnimationResId(@AnimRes int resId) {
+            mOpenAnimationResId = resId;
+            return this;
+        }
+
+        /**
+         * Sets the change animation resources ID this TaskFragment. The default value is
+         * {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system default animation.
+         *
+         * @param resId the change animation resources ID.
+         * @return this {@link Builder}.
+         */
+        @NonNull
+        public Builder setChangeAnimationResId(@AnimRes int resId) {
+            mChangeAnimationResId = resId;
+            return this;
+        }
+
+        /**
+         * Sets the close animation resources ID this TaskFragment. The default value is
+         * {@link DEFAULT_ANIMATION_RESOURCES_ID}, which is to use the system default animation.
+         *
+         * @param resId the close animation resources ID.
+         * @return this {@link Builder}.
+         */
+        @NonNull
+        public Builder setCloseAnimationResId(@AnimRes int resId) {
+            mCloseAnimationResId = resId;
+            return this;
+        }
+
         /** Constructs the {@link TaskFragmentAnimationParams}. */
         @NonNull
         public TaskFragmentAnimationParams build() {
-            return new TaskFragmentAnimationParams(mAnimationBackgroundColor);
+            return new TaskFragmentAnimationParams(mAnimationBackgroundColor,
+                    mOpenAnimationResId, mChangeAnimationResId, mCloseAnimationResId);
         }
     }
 }
diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java
index 4ffd880..8bd39fb 100644
--- a/core/java/android/window/TransitionInfo.java
+++ b/core/java/android/window/TransitionInfo.java
@@ -39,6 +39,7 @@
 import static android.view.WindowManager.TransitionType;
 import static android.view.WindowManager.transitTypeToString;
 
+import android.annotation.AnimRes;
 import android.annotation.ColorInt;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -54,6 +55,8 @@
 import android.view.SurfaceControl;
 import android.view.WindowManager;
 
+import com.android.window.flags.Flags;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -211,6 +214,8 @@
     private final ArrayList<Change> mChanges = new ArrayList<>();
     private final ArrayList<Root> mRoots = new ArrayList<>();
 
+    // TODO(b/327332488): Clean-up usages after the flag is fully enabled.
+    @Deprecated
     private AnimationOptions mOptions;
 
     /** This is only a BEST-EFFORT id used for log correlation. DO NOT USE for any real work! */
@@ -275,7 +280,15 @@
         mRoots.add(other);
     }
 
+    /**
+     * @deprecated Set {@link AnimationOptions} to change. This method is only used if
+     * {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
+     */
+    @Deprecated
     public void setAnimationOptions(@Nullable AnimationOptions options) {
+        if (Flags.moveAnimationOptionsToChange()) {
+            return;
+        }
         mOptions = options;
     }
 
@@ -340,6 +353,11 @@
         return mRoots.get(0).mLeash;
     }
 
+    /**
+     * @deprecated Use {@link Change#getAnimationOptions()} instead. This method is called only
+     * if {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
+     */
+    @Deprecated
     @Nullable
     public AnimationOptions getAnimationOptions() {
         return mOptions;
@@ -661,6 +679,7 @@
         private SurfaceControl mSnapshot = null;
         private float mSnapshotLuma;
         private ComponentName mActivityComponent = null;
+        private AnimationOptions mAnimationOptions = null;
 
         public Change(@Nullable WindowContainerToken container, @NonNull SurfaceControl leash) {
             mContainer = container;
@@ -690,6 +709,7 @@
             mSnapshot = in.readTypedObject(SurfaceControl.CREATOR);
             mSnapshotLuma = in.readFloat();
             mActivityComponent = in.readTypedObject(ComponentName.CREATOR);
+            mAnimationOptions = in.readTypedObject(AnimationOptions.CREATOR);
         }
 
         private Change localRemoteCopy() {
@@ -713,6 +733,7 @@
             out.mSnapshot = mSnapshot != null ? new SurfaceControl(mSnapshot, "localRemote") : null;
             out.mSnapshotLuma = mSnapshotLuma;
             out.mActivityComponent = mActivityComponent;
+            out.mAnimationOptions = mAnimationOptions;
             return out;
         }
 
@@ -813,6 +834,16 @@
             mActivityComponent = component;
         }
 
+        /**
+         * Sets {@link AnimationOptions} to override animation.
+         */
+        public void setAnimationOptions(@Nullable AnimationOptions options) {
+            if (!Flags.moveAnimationOptionsToChange()) {
+                return;
+            }
+            mAnimationOptions = options;
+        }
+
         /** @return the container that is changing. May be null if non-remotable (eg. activity) */
         @Nullable
         public WindowContainerToken getContainer() {
@@ -952,6 +983,14 @@
             return mActivityComponent;
         }
 
+        /**
+         * Returns the {@link AnimationOptions}.
+         */
+        @Nullable
+        public AnimationOptions getAnimationOptions() {
+            return mAnimationOptions;
+        }
+
         /** @hide */
         @Override
         public void writeToParcel(@NonNull Parcel dest, int flags) {
@@ -976,6 +1015,7 @@
             dest.writeTypedObject(mSnapshot, flags);
             dest.writeFloat(mSnapshotLuma);
             dest.writeTypedObject(mActivityComponent, flags);
+            dest.writeTypedObject(mAnimationOptions, flags);
         }
 
         @NonNull
@@ -1028,6 +1068,9 @@
             if (mEndFixedRotation != ROTATION_UNDEFINED) {
                 sb.append(" endFixedRotation="); sb.append(mEndFixedRotation);
             }
+            if (mBackgroundColor != 0) {
+                sb.append(" bc=").append(Integer.toHexString(mBackgroundColor));
+            }
             if (mSnapshot != null) {
                 sb.append(" snapshot="); sb.append(mSnapshot);
             }
@@ -1042,6 +1085,9 @@
                 sb.append(" taskParent=");
                 sb.append(mTaskInfo.parentTaskId);
             }
+            if (mAnimationOptions != null) {
+                sb.append(" opt=").append(mAnimationOptions);
+            }
             sb.append('}');
             return sb.toString();
         }
@@ -1051,14 +1097,24 @@
     @SuppressWarnings("UserHandleName")
     public static final class AnimationOptions implements Parcelable {
 
+        /**
+         * The default value for animation resources ID, which means to use the system default
+         * animation.
+         */
+        @SuppressWarnings("ResourceType") // Use as a hint to use the system default animation.
+        @AnimRes
+        public static final int DEFAULT_ANIMATION_RESOURCES_ID = 0xFFFFFFFF;
+
         private int mType;
-        private int mEnterResId;
-        private int mExitResId;
+        private @AnimRes int mEnterResId = DEFAULT_ANIMATION_RESOURCES_ID;
+        private @AnimRes int mChangeResId = DEFAULT_ANIMATION_RESOURCES_ID;
+        private @AnimRes int mExitResId = DEFAULT_ANIMATION_RESOURCES_ID;
         private boolean mOverrideTaskTransition;
         private String mPackageName;
         private final Rect mTransitionBounds = new Rect();
         private HardwareBuffer mThumbnail;
         private int mAnimations;
+        // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions
         private @ColorInt int mBackgroundColor;
         // Customize activity transition animation
         private CustomActivityTransition mCustomActivityOpenTransition;
@@ -1071,6 +1127,7 @@
         private AnimationOptions(Parcel in) {
             mType = in.readInt();
             mEnterResId = in.readInt();
+            mChangeResId = in.readInt();
             mExitResId = in.readInt();
             mBackgroundColor = in.readInt();
             mOverrideTaskTransition = in.readBoolean();
@@ -1121,14 +1178,40 @@
             customTransition.addCustomActivityTransition(enterResId, exitResId, backgroundColor);
         }
 
-        /** Make options for a custom animation based on anim resources */
+        /**
+         * Make options for a custom animation based on anim resources.
+         *
+         * @param packageName the package name to find the animation resources
+         * @param enterResId the open animation resources ID
+         * @param exitResId the close animation resources ID
+         * @param backgroundColor the background color
+         * @param overrideTaskTransition whether to override the task transition
+         */
         @NonNull
         public static AnimationOptions makeCustomAnimOptions(@NonNull String packageName,
-                int enterResId, int exitResId, @ColorInt int backgroundColor,
+                @AnimRes int enterResId, @AnimRes int exitResId, @ColorInt int backgroundColor,
                 boolean overrideTaskTransition) {
+            return makeCustomAnimOptions(packageName, enterResId, DEFAULT_ANIMATION_RESOURCES_ID,
+                    exitResId, backgroundColor, overrideTaskTransition);
+        }
+
+        /**
+         * Creates a {@link android.app.ActivityOptions#ANIM_CUSTOM} {@link AnimationOptions}.
+         *
+         * @param packageName the package name that includes the animation resources.
+         * @param enterResId the resources ID of open animation.
+         * @param changeResId the resources ID of change animation.
+         * @param exitResId the resources ID of close animation.
+         * @param overrideTaskTransition indicates whether to override task transition.
+         */
+        @NonNull
+        public static AnimationOptions makeCustomAnimOptions(@NonNull String packageName,
+                @AnimRes int enterResId, @AnimRes int changeResId, @AnimRes int exitResId,
+                @ColorInt int backgroundColor, boolean overrideTaskTransition) {
             AnimationOptions options = new AnimationOptions(ANIM_CUSTOM);
             options.mPackageName = packageName;
             options.mEnterResId = enterResId;
+            options.mChangeResId = changeResId;
             options.mExitResId = exitResId;
             options.mBackgroundColor = backgroundColor;
             options.mOverrideTaskTransition = overrideTaskTransition;
@@ -1182,10 +1265,17 @@
             return mType;
         }
 
+        @AnimRes
         public int getEnterResId() {
             return mEnterResId;
         }
 
+        @AnimRes
+        public int getChangeResId() {
+            return mChangeResId;
+        }
+
+        @AnimRes
         public int getExitResId() {
             return mExitResId;
         }
@@ -1227,6 +1317,7 @@
         public void writeToParcel(@NonNull Parcel dest, int flags) {
             dest.writeInt(mType);
             dest.writeInt(mEnterResId);
+            dest.writeInt(mChangeResId);
             dest.writeInt(mExitResId);
             dest.writeInt(mBackgroundColor);
             dest.writeBoolean(mOverrideTaskTransition);
@@ -1284,6 +1375,15 @@
             if (!mTransitionBounds.isEmpty()) {
                 sb.append(" bounds=").append(mTransitionBounds);
             }
+            if (mEnterResId != DEFAULT_ANIMATION_RESOURCES_ID) {
+                sb.append(" enterResId=").append(mEnterResId);
+            }
+            if (mChangeResId != DEFAULT_ANIMATION_RESOURCES_ID) {
+                sb.append(" changeResId=").append(mChangeResId);
+            }
+            if (mExitResId != DEFAULT_ANIMATION_RESOURCES_ID) {
+                sb.append(" exitResId=").append(mExitResId);
+            }
             sb.append('}');
             return sb.toString();
         }
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index 5e88d97c..f4f6c8a 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -375,7 +375,23 @@
      */
     @NonNull
     public WindowContainerTransaction reorder(@NonNull WindowContainerToken child, boolean onTop) {
-        mHierarchyOps.add(HierarchyOp.createForReorder(child.asBinder(), onTop));
+        return reorder(child, onTop, false /* includingParents */);
+    }
+
+    /**
+     * Reorders a container within its parent with an option to reorder all the parents in the
+     * hierarchy above among their respective siblings.
+     *
+     * @param onTop When {@code true}, the child goes to the top of parent; otherwise it goes to
+     *              the bottom.
+     * @param includingParents When {@code true}, all the parents in the hierarchy above are also
+     *                         reordered among their respective siblings.
+     * @hide
+     */
+    @NonNull
+    public WindowContainerTransaction reorder(@NonNull WindowContainerToken child, boolean onTop,
+            boolean includingParents) {
+        mHierarchyOps.add(HierarchyOp.createForReorder(child.asBinder(), onTop, includingParents));
         return this;
     }
 
@@ -1451,6 +1467,8 @@
         @Nullable
         private Rect mBounds;
 
+        private boolean mIncludingParents;
+
         private boolean mAlwaysOnTop;
 
         private boolean mReparentLeafTaskIfRelaunch;
@@ -1464,11 +1482,22 @@
                     .build();
         }
 
-        public static HierarchyOp createForReorder(@NonNull IBinder container, boolean toTop) {
+        /**
+         * Creates the {@link HierarchyOp} for the reorder operation.
+         *
+         * @param container which needs to be reordered
+         * @param toTop if true, the container reorders
+         * @param includingParents if true, all the parents in the hierarchy above are also
+         *                         reoredered among their respective siblings
+         * @return
+         */
+        public static HierarchyOp createForReorder(@NonNull IBinder container, boolean toTop,
+                boolean includingParents) {
             return new HierarchyOp.Builder(HIERARCHY_OP_TYPE_REORDER)
                     .setContainer(container)
                     .setReparentContainer(container)
                     .setToTop(toTop)
+                    .setIncludingParents(includingParents)
                     .build();
         }
 
@@ -1555,6 +1584,7 @@
             mType = copy.mType;
             mContainer = copy.mContainer;
             mBounds = copy.mBounds;
+            mIncludingParents = copy.mIncludingParents;
             mReparent = copy.mReparent;
             mInsetsFrameProvider = copy.mInsetsFrameProvider;
             mInsetsFrameOwner = copy.mInsetsFrameOwner;
@@ -1575,6 +1605,7 @@
             mType = in.readInt();
             mContainer = in.readStrongBinder();
             mBounds = in.readTypedObject(Rect.CREATOR);
+            mIncludingParents = in.readBoolean();
             mReparent = in.readStrongBinder();
             mInsetsFrameProvider = in.readTypedObject(InsetsFrameProvider.CREATOR);
             mInsetsFrameOwner = in.readStrongBinder();
@@ -1678,6 +1709,12 @@
             return mBounds;
         }
 
+        /** Denotes whether the parents should also be included in the op. */
+        @NonNull
+        public boolean includingParents() {
+            return mIncludingParents;
+        }
+
         /** Gets a string representation of a hierarchy-op type. */
         public static String hopToString(int type) {
             switch (type) {
@@ -1789,6 +1826,7 @@
             dest.writeInt(mType);
             dest.writeStrongBinder(mContainer);
             dest.writeTypedObject(mBounds, flags);
+            dest.writeBoolean(mIncludingParents);
             dest.writeStrongBinder(mReparent);
             dest.writeTypedObject(mInsetsFrameProvider, flags);
             dest.writeStrongBinder(mInsetsFrameOwner);
@@ -1866,6 +1904,8 @@
             @Nullable
             private Rect mBounds;
 
+            private boolean mIncludingParents;
+
             private boolean mAlwaysOnTop;
 
             private boolean mReparentLeafTaskIfRelaunch;
@@ -1955,6 +1995,11 @@
                 return this;
             }
 
+            Builder setIncludingParents(boolean value) {
+                mIncludingParents = value;
+                return this;
+            }
+
             HierarchyOp build() {
                 final HierarchyOp hierarchyOp = new HierarchyOp(mType);
                 hierarchyOp.mContainer = mContainer;
@@ -1976,6 +2021,7 @@
                 hierarchyOp.mTaskFragmentOperation = mTaskFragmentOperation;
                 hierarchyOp.mShortcutInfo = mShortcutInfo;
                 hierarchyOp.mBounds = mBounds;
+                hierarchyOp.mIncludingParents = mIncludingParents;
                 hierarchyOp.mReparentLeafTaskIfRelaunch = mReparentLeafTaskIfRelaunch;
 
                 return hierarchyOp;
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index b9c8839..b7f6f36 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -105,7 +105,6 @@
     // The threshold for back swipe full progress.
     private float mBackSwipeLinearThreshold;
     private float mNonLinearProgressFactor;
-    private boolean mImeDispatchingActive;
 
     public WindowOnBackInvokedDispatcher(@NonNull Context context, Looper looper) {
         mChecker = new Checker(context);
@@ -176,18 +175,19 @@
                 mImeDispatcher.registerOnBackInvokedCallback(priority, callback);
                 return;
             }
-            if ((callback instanceof ImeOnBackInvokedDispatcher.DefaultImeOnBackAnimationCallback
-                    || callback instanceof ImeOnBackInvokedDispatcher.ImeOnBackInvokedCallback)
-                    && !isOnBackInvokedCallbackEnabled()) {
+            if (callback instanceof ImeOnBackInvokedDispatcher.ImeOnBackInvokedCallback) {
                 // Fall back to compat back key injection if legacy back behaviour should be used.
-                return;
+                if (!isOnBackInvokedCallbackEnabled()) return;
+                if (callback instanceof ImeOnBackInvokedDispatcher.DefaultImeOnBackAnimationCallback
+                        && mImeBackAnimationController != null) {
+                    // register ImeBackAnimationController instead to play predictive back animation
+                    callback = mImeBackAnimationController;
+                }
             }
+
             if (!mOnBackInvokedCallbacks.containsKey(priority)) {
                 mOnBackInvokedCallbacks.put(priority, new ArrayList<>());
             }
-            if (callback instanceof ImeOnBackInvokedDispatcher.DefaultImeOnBackAnimationCallback) {
-                callback = mImeBackAnimationController;
-            }
             ArrayList<OnBackInvokedCallback> callbacks = mOnBackInvokedCallbacks.get(priority);
 
             // If callback has already been added, remove it and re-add it.
@@ -250,7 +250,7 @@
      */
     public boolean isBackGestureInProgress() {
         synchronized (mLock) {
-            return mTouchTracker.isActive() || mImeDispatchingActive;
+            return mTouchTracker.isActive();
         }
     }
 
@@ -308,16 +308,8 @@
             OnBackInvokedCallbackInfo callbackInfo = null;
             if (callback != null) {
                 int priority = mAllCallbacks.get(callback);
-                final IOnBackInvokedCallback iCallback =
-                        callback instanceof ImeOnBackInvokedDispatcher
-                                .ImeOnBackInvokedCallback
-                                ? ((ImeOnBackInvokedDispatcher.ImeOnBackInvokedCallback)
-                                callback).getIOnBackInvokedCallback()
-                                : new OnBackInvokedCallbackWrapper(
-                                        callback,
-                                        mTouchTracker,
-                                        mProgressAnimator,
-                                        mHandler);
+                final IOnBackInvokedCallback iCallback = new OnBackInvokedCallbackWrapper(
+                        callback, mTouchTracker, mProgressAnimator, mHandler);
                 callbackInfo = new OnBackInvokedCallbackInfo(
                         iCallback,
                         priority,
@@ -367,10 +359,6 @@
         float linearDistance = Math.min(maxDistance, mBackSwipeLinearThreshold);
         mTouchTracker.setProgressThresholds(
                 linearDistance, maxDistance, mNonLinearProgressFactor);
-        if (mImeDispatcher != null) {
-            mImeDispatcher.setProgressThresholds(
-                    linearDistance, maxDistance, mNonLinearProgressFactor);
-        }
     }
 
     /**
@@ -402,46 +390,9 @@
         }
     }
 
-    /**
-     * Called when we start dispatching to a callback registered from IME.
-     */
-    public void onStartImeDispatching() {
-        synchronized (mLock) {
-            mImeDispatchingActive = true;
-        }
-    }
-
-    /**
-     * Called when we stop dispatching to a callback registered from IME.
-     */
-    public void onStopImeDispatching() {
-        synchronized (mLock) {
-            mImeDispatchingActive = false;
-        }
-    }
-
-    static class OnBackInvokedCallbackWrapper extends IOnBackInvokedCallback.Stub {
-        static class CallbackRef {
-            final WeakReference<OnBackInvokedCallback> mWeakRef;
-            final OnBackInvokedCallback mStrongRef;
-            CallbackRef(@NonNull OnBackInvokedCallback callback, boolean useWeakRef) {
-                if (useWeakRef) {
-                    mWeakRef = new WeakReference<>(callback);
-                    mStrongRef = null;
-                } else {
-                    mStrongRef = callback;
-                    mWeakRef = null;
-                }
-            }
-
-            OnBackInvokedCallback get() {
-                if (mStrongRef != null) {
-                    return mStrongRef;
-                }
-                return mWeakRef.get();
-            }
-        }
-        final CallbackRef mCallbackRef;
+    private static class OnBackInvokedCallbackWrapper extends IOnBackInvokedCallback.Stub {
+        @NonNull
+        private final WeakReference<OnBackInvokedCallback> mCallback;
         @NonNull
         private final BackProgressAnimator mProgressAnimator;
         @NonNull
@@ -454,19 +405,7 @@
                 @NonNull BackTouchTracker touchTracker,
                 @NonNull BackProgressAnimator progressAnimator,
                 @NonNull Handler handler) {
-            mCallbackRef = new CallbackRef(callback, true /* useWeakRef */);
-            mTouchTracker = touchTracker;
-            mProgressAnimator = progressAnimator;
-            mHandler = handler;
-        }
-
-        OnBackInvokedCallbackWrapper(
-                @NonNull OnBackInvokedCallback callback,
-                @NonNull BackTouchTracker touchTracker,
-                @NonNull BackProgressAnimator progressAnimator,
-                @NonNull Handler handler,
-                boolean useWeakRef) {
-            mCallbackRef = new CallbackRef(callback, useWeakRef);
+            mCallback = new WeakReference<>(callback);
             mTouchTracker = touchTracker;
             mProgressAnimator = progressAnimator;
             mHandler = handler;
@@ -489,11 +428,7 @@
                         backEvent.getTouchX(), backEvent.getTouchY(), backEvent.getSwipeEdge());
 
                 if (callback != null) {
-                    callback.onBackStarted(new BackEvent(
-                            backEvent.getTouchX(),
-                            backEvent.getTouchY(),
-                            backEvent.getProgress(),
-                            backEvent.getSwipeEdge()));
+                    callback.onBackStarted(BackEvent.fromBackMotionEvent(backEvent));
                     mProgressAnimator.onBackStarted(backEvent, callback::onBackProgressed);
                 }
             });
@@ -517,10 +452,9 @@
             mHandler.post(() -> {
                 mTouchTracker.reset();
                 boolean isInProgress = mProgressAnimator.isBackAnimationInProgress();
-                mProgressAnimator.reset();
-                // TODO(b/333957271): Re-introduce auto fling progress generation.
-                final OnBackInvokedCallback callback = mCallbackRef.get();
+                final OnBackInvokedCallback callback = mCallback.get();
                 if (callback == null) {
+                    mProgressAnimator.reset();
                     Log.d(TAG, "Trying to call onBackInvoked() on a null callback reference.");
                     return;
                 }
@@ -528,7 +462,13 @@
                     Log.w(TAG, "ProgressAnimator was not in progress, skip onBackInvoked().");
                     return;
                 }
-                callback.onBackInvoked();
+                OnBackAnimationCallback animationCallback = getBackAnimationCallback();
+                if (animationCallback != null) {
+                    mProgressAnimator.onBackInvoked(callback::onBackInvoked);
+                } else {
+                    mProgressAnimator.reset();
+                    callback.onBackInvoked();
+                }
             });
         }
 
@@ -539,7 +479,7 @@
 
         @Nullable
         private OnBackAnimationCallback getBackAnimationCallback() {
-            OnBackInvokedCallback callback = mCallbackRef.get();
+            OnBackInvokedCallback callback = mCallback.get();
             return callback instanceof OnBackAnimationCallback ? (OnBackAnimationCallback) callback
                     : null;
         }
@@ -570,10 +510,6 @@
             @NonNull ImeOnBackInvokedDispatcher imeDispatcher) {
         mImeDispatcher = imeDispatcher;
         mImeDispatcher.setHandler(mHandler);
-        mImeDispatcher.setProgressThresholds(
-                mTouchTracker.getLinearDistance(),
-                mTouchTracker.getMaxDistance(),
-                mTouchTracker.getNonLinearFactor());
     }
 
     /** Returns true if a non-null {@link ImeOnBackInvokedDispatcher} has been set. **/
diff --git a/core/java/android/window/flags/lse_desktop_experience.aconfig b/core/java/android/window/flags/lse_desktop_experience.aconfig
index 0590c40..b91f2d6 100644
--- a/core/java/android/window/flags/lse_desktop_experience.aconfig
+++ b/core/java/android/window/flags/lse_desktop_experience.aconfig
@@ -52,6 +52,13 @@
 }
 
 flag {
+    name: "enable_desktop_windowing_scvh_cache"
+    namespace: "lse_desktop_experience"
+    description: "Enables a SurfaceControlViewHost cache for window decorations"
+    bug: "345146928"
+}
+
+flag {
     name: "enable_desktop_windowing_wallpaper_activity"
     namespace: "lse_desktop_experience"
     description: "Enables desktop wallpaper activity to show wallpaper in the desktop mode"
@@ -92,3 +99,17 @@
     description: "Makes the App Header style adapt to the system's and app's light/dark theme"
     bug: "328668781"
 }
+
+flag {
+    name: "enable_camera_compat_for_desktop_windowing"
+    namespace: "lse_desktop_experience"
+    description: "Whether to apply Camera Compat treatment to fixed-orientation apps in desktop windowing mode"
+    bug: "314952133"
+}
+
+flag {
+    name: "enable_task_stack_observer_in_shell"
+    namespace: "lse_desktop_experience"
+    description: "Introduces a new observer in shell to track the task stack."
+    bug: "341932484"
+}
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig
index d6f65f8..b714682 100644
--- a/core/java/android/window/flags/windowing_frontend.aconfig
+++ b/core/java/android/window/flags/windowing_frontend.aconfig
@@ -19,6 +19,16 @@
 }
 
 flag {
+    name: "blast_sync_notification_shade_on_display_switch"
+    namespace: "windowing_frontend"
+    description: "Make the buffer content of notification shade synchronize with display switch"
+    bug: "337154331"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
   name: "edge_to_edge_by_default"
   namespace: "windowing_frontend"
   description: "Make app go edge-to-edge by default when targeting SDK 35 or greater"
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index 9e69f89..87ede4a 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -169,3 +169,14 @@
          purpose: PURPOSE_BUGFIX
      }
 }
+
+flag {
+    namespace: "windowing_sdk"
+    name: "disable_object_pool"
+    description: "Whether to disable object pool and let the GC handle lifecycle items"
+    bug: "311089192"
+    is_fixed_read_only: true
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index 99b3f9a..ebcae27 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -21,6 +21,7 @@
 import android.os.BatteryUsageStatsQuery;
 import android.os.BluetoothBatteryStats;
 import android.os.ParcelFileDescriptor;
+import android.os.ResultReceiver;
 import android.os.WakeLockStats;
 import android.os.WorkSource;
 import android.os.connectivity.CellularBatteryStats;
@@ -33,6 +34,9 @@
 import android.telephony.SignalStrength;
 
 interface IBatteryStats {
+    /** @hide */
+    const String KEY_UID_SNAPSHOTS = "uid_snapshots";
+
     // These first methods are also called by native code, so must
     // be kept in sync with frameworks/native/libs/binder/include_batterystats/batterystats/IBatteryStats.h
     @EnforcePermission("UPDATE_DEVICE_STATS")
@@ -256,6 +260,9 @@
     @PermissionManuallyEnforced
     HealthStatsParceler[] takeUidSnapshots(in int[] uid);
 
+    @PermissionManuallyEnforced
+    oneway void takeUidSnapshotsAsync(in int[] uid, in ResultReceiver result);
+
     @EnforcePermission("UPDATE_DEVICE_STATS")
     oneway void noteBluetoothControllerActivity(in BluetoothActivityEnergyInfo info);
     @EnforcePermission("UPDATE_DEVICE_STATS")
diff --git a/core/java/com/android/internal/app/NoOpResolverComparator.java b/core/java/com/android/internal/app/NoOpResolverComparator.java
new file mode 100644
index 0000000..51eaa81
--- /dev/null
+++ b/core/java/com/android/internal/app/NoOpResolverComparator.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.internal.app;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.os.Message;
+import android.os.UserHandle;
+
+import androidx.annotation.Nullable;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
+import com.android.internal.app.chooser.TargetInfo;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+
+/**
+ * A basic {@link AbstractResolverComparator} implementation that sorts items into the same order as
+ * they appeared in the list provided to {@link #doCompute(List)}. "Unknown" items that didn't
+ * appear in the original list are ordered arbitrarily at the end.
+ */
+public class NoOpResolverComparator extends AbstractResolverComparator {
+    @Nullable
+    private List<ResolveInfo> mOriginalTargetOrder = null;
+
+    public NoOpResolverComparator(
+            Context launchedFromContext,
+            Intent intent,
+            List<UserHandle> targetUserSpaceList) {
+        super(launchedFromContext, intent, targetUserSpaceList);
+    }
+
+    @Override
+    public void doCompute(List<ResolvedComponentInfo> targets) {
+        mOriginalTargetOrder = new ArrayList<>();
+        for (ResolvedComponentInfo target : targets) {
+            mOriginalTargetOrder.add(target.getResolveInfoAt(0));
+        }
+        afterCompute();
+    }
+
+    @Override
+    public int compare(ResolveInfo lhs, ResolveInfo rhs) {
+        Comparator<ResolveInfo> c = Comparator.comparingDouble(r -> getScore((ResolveInfo) r));
+        c = c.reversed();
+        return c.compare(lhs, rhs);
+    }
+
+    @Override
+    public float getScore(TargetInfo targetInfo) {
+        return getScore(targetInfo.getResolveInfo());
+    }
+
+    @Override
+    public void handleResultMessage(Message message) {}
+
+    @VisibleForTesting
+    public float getScore(ResolveInfo resolveInfo) {
+        if (!mOriginalTargetOrder.contains(resolveInfo)) {
+            return 0;
+        }
+
+        // Assign a score from 1 (for the first item in the original list) down
+        // to 1/(n+1) for the last item (which is still greater than 0, the
+        // score we assign to any unknown items).
+        float rank = mOriginalTargetOrder.indexOf(resolveInfo);
+        return 1.0f - (rank / (1 + mOriginalTargetOrder.size()));
+    }
+}
diff --git a/core/java/com/android/internal/app/PlatLogoActivity.java b/core/java/com/android/internal/app/PlatLogoActivity.java
index 71bbccb..b8f7a3d 100644
--- a/core/java/com/android/internal/app/PlatLogoActivity.java
+++ b/core/java/com/android/internal/app/PlatLogoActivity.java
@@ -69,7 +69,7 @@
 
     private static final long LAUNCH_TIME = 5000L;
 
-    private static final String U_EGG_UNLOCK_SETTING = "egg_mode_u";
+    private static final String EGG_UNLOCK_SETTING = "egg_mode_v";
 
     private static final float MIN_WARP = 1f;
     private static final float MAX_WARP = 10f; // after all these years
@@ -309,13 +309,12 @@
 
     private void launchNextStage(boolean locked) {
         final ContentResolver cr = getContentResolver();
-
         try {
             if (shouldWriteSettings()) {
                 Log.v(TAG, "Saving egg locked=" + locked);
                 syncTouchPressure();
                 Settings.System.putLong(cr,
-                        U_EGG_UNLOCK_SETTING,
+                        EGG_UNLOCK_SETTING,
                         locked ? 0 : System.currentTimeMillis());
             }
         } catch (RuntimeException e) {
@@ -499,4 +498,4 @@
             mDt = dt;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 17adee4..920981e 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -170,6 +170,10 @@
     // Expected to be true if this object is ResolverActivity or is ResolverWrapperActivity.
     private final boolean mIsIntentPicker;
 
+    // Whether this activity was instantiated with a specialized constructor that predefines a list
+    // of resolutions to be displayed for the target intent (as in, e.g., the NFC use case).
+    private boolean mHasSubclassSpecifiedResolutions;
+
     // Whether or not this activity supports choosing a default handler for the intent.
     @VisibleForTesting
     protected boolean mSupportsAlwaysUseOption;
@@ -421,6 +425,8 @@
         setTheme(appliedThemeResId());
         super.onCreate(savedInstanceState);
 
+        mHasSubclassSpecifiedResolutions = (rList != null);
+
         mQuietModeManager = createQuietModeManager();
 
         // Determine whether we should show that intent is forwarded
@@ -917,7 +923,7 @@
         mSystemWindowInsets = insets.getSystemWindowInsets();
 
         mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
-                mSystemWindowInsets.right, mSystemWindowInsets.bottom);
+                mSystemWindowInsets.right, 0);
 
         resetButtonBar();
 
@@ -946,7 +952,7 @@
 
         if (mSystemWindowInsets != null) {
             mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
-                    mSystemWindowInsets.right, mSystemWindowInsets.bottom);
+                    mSystemWindowInsets.right, 0);
         }
     }
 
@@ -1698,17 +1704,25 @@
                 isAudioCaptureDevice, initialIntentsUserSpace);
     }
 
+    private AbstractResolverComparator makeResolverComparator(UserHandle userHandle) {
+        if (mHasSubclassSpecifiedResolutions) {
+            return new NoOpResolverComparator(
+                    this, getTargetIntent(), getResolverRankerServiceUserHandleList(userHandle));
+        } else {
+            return new ResolverRankerServiceResolverComparator(
+                   this,
+                   getTargetIntent(),
+                   getReferrerPackageName(),
+                   null,
+                   null,
+                   getResolverRankerServiceUserHandleList(userHandle));
+        }
+    }
+
     @VisibleForTesting
     protected ResolverListController createListController(UserHandle userHandle) {
         UserHandle queryIntentsUser = getQueryIntentsUser(userHandle);
-        ResolverRankerServiceResolverComparator resolverComparator =
-                new ResolverRankerServiceResolverComparator(
-                        this,
-                        getTargetIntent(),
-                        getReferrerPackageName(),
-                        null,
-                        null,
-                        getResolverRankerServiceUserHandleList(userHandle));
+        AbstractResolverComparator resolverComparator = makeResolverComparator(userHandle);
         return new ResolverListController(
                 this,
                 mPm,
diff --git a/core/java/com/android/internal/dynamicanimation/animation/FlingAnimation.java b/core/java/com/android/internal/dynamicanimation/animation/FlingAnimation.java
new file mode 100644
index 0000000..2bd0568
--- /dev/null
+++ b/core/java/com/android/internal/dynamicanimation/animation/FlingAnimation.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.android.internal.dynamicanimation.animation;
+
+import android.annotation.FloatRange;
+/**
+ * <p>Fling animation is an animation that continues an initial momentum (most often from gesture
+ * velocity) and gradually slows down. The fling animation will come to a stop when the velocity of
+ * the animation is below the threshold derived from {@link #setMinimumVisibleChange(float)},
+ * or when the value of the animation has gone beyond the min or max value defined via
+ * {@link DynamicAnimation#setMinValue(float)} or {@link DynamicAnimation#setMaxValue(float)}.
+ * It is recommended to restrict the fling animation with min and/or max value, such that the
+ * animation can end when it goes beyond screen bounds, thus preserving CPU cycles and resources.
+ *
+ * <p>For example, you can create a fling animation that animates the translationX of a view:
+ * <pre class="prettyprint">
+ * FlingAnimation flingAnim = new FlingAnimation(view, DynamicAnimation.TRANSLATION_X)
+ *         // Sets the start velocity to -2000 (pixel/s)
+ *         .setStartVelocity(-2000)
+ *         // Optional but recommended to set a reasonable min and max range for the animation.
+ *         // In this particular case, we set the min and max to -200 and 2000 respectively.
+ *         .setMinValue(-200).setMaxValue(2000);
+ * flingAnim.start();
+ * </pre>
+ */
+public final class FlingAnimation extends DynamicAnimation<FlingAnimation> {
+    private final DragForce mFlingForce = new DragForce();
+    /**
+     * <p>This creates a FlingAnimation that animates a {@link FloatValueHolder} instance. During
+     * the animation, the {@link FloatValueHolder} instance will be updated via
+     * {@link FloatValueHolder#setValue(float)} each frame. The caller can obtain the up-to-date
+     * animation value via {@link FloatValueHolder#getValue()}.
+     *
+     * <p><strong>Note:</strong> changing the value in the {@link FloatValueHolder} via
+     * {@link FloatValueHolder#setValue(float)} outside of the animation during an
+     * animation run will not have any effect on the on-going animation.
+     *
+     * @param floatValueHolder the property to be animated
+     */
+    public FlingAnimation(FloatValueHolder floatValueHolder) {
+        super(floatValueHolder);
+        mFlingForce.setValueThreshold(getValueThreshold());
+    }
+    /**
+     * Sets the friction for the fling animation. The greater the friction is, the sooner the
+     * animation will slow down. When not set, the friction defaults to 1.
+     *
+     * @param friction the friction used in the animation
+     * @return the animation whose friction will be scaled
+     * @throws IllegalArgumentException if the input friction is not positive
+     */
+    public FlingAnimation setFriction(
+            @FloatRange(from = 0.0, fromInclusive = false) float friction) {
+        if (friction <= 0) {
+            throw new IllegalArgumentException("Friction must be positive");
+        }
+        mFlingForce.setFrictionScalar(friction);
+        return this;
+    }
+    /**
+     * Returns the friction being set on the animation via {@link #setFriction(float)}. If the
+     * friction has not been set, the default friction of 1 will be returned.
+     *
+     * @return friction being used in the animation
+     */
+    public float getFriction() {
+        return mFlingForce.getFrictionScalar();
+    }
+    /**
+     * Sets the min value of the animation. When a fling animation reaches the min value, the
+     * animation will end immediately. Animations will not animate beyond the min value.
+     *
+     * @param minValue minimum value of the property to be animated
+     * @return the Animation whose min value is being set
+     */
+    @Override
+    public FlingAnimation setMinValue(float minValue) {
+        super.setMinValue(minValue);
+        return this;
+    }
+    /**
+     * Sets the max value of the animation. When a fling animation reaches the max value, the
+     * animation will end immediately. Animations will not animate beyond the max value.
+     *
+     * @param maxValue maximum value of the property to be animated
+     * @return the Animation whose max value is being set
+     */
+    @Override
+    public FlingAnimation setMaxValue(float maxValue) {
+        super.setMaxValue(maxValue);
+        return this;
+    }
+    /**
+     * Start velocity of the animation. Default velocity is 0. Unit: pixel/second
+     *
+     * <p>A <b>non-zero</b> start velocity is required for a FlingAnimation. If no start velocity is
+     * set through {@link #setStartVelocity(float)}, the start velocity defaults to 0. In that
+     * case, the fling animation will consider itself done in the next frame.
+     *
+     * <p>Note when using a fixed value as the start velocity (as opposed to getting the velocity
+     * through touch events), it is recommended to define such a value in dp/second and convert it
+     * to pixel/second based on the density of the screen to achieve a consistent look across
+     * different screens.
+     *
+     * <p>To convert from dp/second to pixel/second:
+     * <pre class="prettyprint">
+     * float pixelPerSecond = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpPerSecond,
+     *         getResources().getDisplayMetrics());
+     * </pre>
+     *
+     * @param startVelocity start velocity of the animation in pixel/second
+     * @return the Animation whose start velocity is being set
+     */
+    @Override
+    public FlingAnimation setStartVelocity(float startVelocity) {
+        super.setStartVelocity(startVelocity);
+        return this;
+    }
+    @Override
+    boolean updateValueAndVelocity(long deltaT) {
+        MassState state = mFlingForce.updateValueAndVelocity(mValue, mVelocity, deltaT);
+        mValue = state.mValue;
+        mVelocity = state.mVelocity;
+        // When the animation hits the max/min value, consider animation done.
+        if (mValue < mMinValue) {
+            mValue = mMinValue;
+            return true;
+        }
+        if (mValue > mMaxValue) {
+            mValue = mMaxValue;
+            return true;
+        }
+        if (isAtEquilibrium(mValue, mVelocity)) {
+            return true;
+        }
+        return false;
+    }
+    @Override
+    float getAcceleration(float value, float velocity) {
+        return mFlingForce.getAcceleration(value, velocity);
+    }
+    @Override
+    boolean isAtEquilibrium(float value, float velocity) {
+        return value >= mMaxValue
+                || value <= mMinValue
+                || mFlingForce.isAtEquilibrium(value, velocity);
+    }
+    @Override
+    void setValueThreshold(float threshold) {
+        mFlingForce.setValueThreshold(threshold);
+    }
+    private static final class DragForce implements Force {
+        private static final float DEFAULT_FRICTION = -4.2f;
+        // This multiplier is used to calculate the velocity threshold given a certain value
+        // threshold. The idea is that if it takes >= 1 frame to move the value threshold amount,
+        // then the velocity is a reasonable threshold.
+        private static final float VELOCITY_THRESHOLD_MULTIPLIER = 1000f / 16f;
+        private float mFriction = DEFAULT_FRICTION;
+        private float mVelocityThreshold;
+        // Internal state to hold a value/velocity pair.
+        private final DynamicAnimation.MassState mMassState = new DynamicAnimation.MassState();
+        void setFrictionScalar(float frictionScalar) {
+            mFriction = frictionScalar * DEFAULT_FRICTION;
+        }
+        float getFrictionScalar() {
+            return mFriction / DEFAULT_FRICTION;
+        }
+        MassState updateValueAndVelocity(float value, float velocity, long deltaT) {
+            mMassState.mVelocity = (float) (velocity * Math.exp((deltaT / 1000f) * mFriction));
+            mMassState.mValue = (float) (value - velocity / mFriction
+                    + velocity / mFriction * Math.exp(mFriction * deltaT / 1000f));
+            if (isAtEquilibrium(mMassState.mValue, mMassState.mVelocity)) {
+                mMassState.mVelocity = 0f;
+            }
+            return mMassState;
+        }
+        @Override
+        public float getAcceleration(float position, float velocity) {
+            return velocity * mFriction;
+        }
+        @Override
+        public boolean isAtEquilibrium(float value, float velocity) {
+            return Math.abs(velocity) < mVelocityThreshold;
+        }
+        void setValueThreshold(float threshold) {
+            mVelocityThreshold = threshold * VELOCITY_THRESHOLD_MULTIPLIER;
+        }
+    }
+}
+
diff --git a/core/java/com/android/internal/graphics/ColorUtils.java b/core/java/com/android/internal/graphics/ColorUtils.java
index dff9551..f72a5ca 100644
--- a/core/java/com/android/internal/graphics/ColorUtils.java
+++ b/core/java/com/android/internal/graphics/ColorUtils.java
@@ -392,7 +392,7 @@
      * Convert RGB components to its CIE Lab representative components.
      *
      * <ul>
-     * <li>outLab[0] is L [0 ...1)</li>
+     * <li>outLab[0] is L [0 ...100)</li>
      * <li>outLab[1] is a [-128...127)</li>
      * <li>outLab[2] is b [-128...127)</li>
      * </ul>
@@ -474,7 +474,7 @@
      * 2° Standard Observer (1931).</p>
      *
      * <ul>
-     * <li>outLab[0] is L [0 ...1)</li>
+     * <li>outLab[0] is L [0 ...100)</li>
      * <li>outLab[1] is a [-128...127)</li>
      * <li>outLab[2] is b [-128...127)</li>
      * </ul>
diff --git a/core/java/com/android/internal/inputmethod/IInputMethodClient.aidl b/core/java/com/android/internal/inputmethod/IInputMethodClient.aidl
index babd9a0..6a7fa99 100644
--- a/core/java/com/android/internal/inputmethod/IInputMethodClient.aidl
+++ b/core/java/com/android/internal/inputmethod/IInputMethodClient.aidl
@@ -30,6 +30,7 @@
     void onUnbindAccessibilityService(int sequence, int id);
     void setActive(boolean active, boolean fullscreen);
     void setInteractive(boolean active, boolean fullscreen);
+    void setImeVisibility(boolean visible);
     void scheduleStartInputIfNecessary(boolean fullscreen);
     void reportFullscreenMode(boolean fullscreen);
     void setImeTraceEnabled(boolean enabled);
diff --git a/core/java/com/android/internal/os/BatteryStatsHistory.java b/core/java/com/android/internal/os/BatteryStatsHistory.java
index 244165f..5c270e0 100644
--- a/core/java/com/android/internal/os/BatteryStatsHistory.java
+++ b/core/java/com/android/internal/os/BatteryStatsHistory.java
@@ -1514,6 +1514,36 @@
     }
 
     /**
+     * Records an event when some state2 flag changes to true.
+     */
+    public void recordState2StartEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags,
+            int uid, String name) {
+        synchronized (this) {
+            mHistoryCur.states2 |= stateFlags;
+            mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_START;
+            mHistoryCur.eventTag = mHistoryCur.localEventTag;
+            mHistoryCur.eventTag.uid = uid;
+            mHistoryCur.eventTag.string = name;
+            writeHistoryItem(elapsedRealtimeMs, uptimeMs);
+        }
+    }
+
+    /**
+     * Records an event when some state2 flag changes to false.
+     */
+    public void recordState2StopEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags,
+            int uid, String name) {
+        synchronized (this) {
+            mHistoryCur.states2 &= ~stateFlags;
+            mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_FINISH;
+            mHistoryCur.eventTag = mHistoryCur.localEventTag;
+            mHistoryCur.eventTag.uid = uid;
+            mHistoryCur.eventTag.string = name;
+            writeHistoryItem(elapsedRealtimeMs, uptimeMs);
+        }
+    }
+
+    /**
      * Records an event when some state2 flag changes to false.
      */
     public void recordState2StopEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags) {
diff --git a/core/java/com/android/internal/os/TimeoutRecord.java b/core/java/com/android/internal/os/TimeoutRecord.java
index 1f4abc1..e9a8d4b 100644
--- a/core/java/com/android/internal/os/TimeoutRecord.java
+++ b/core/java/com/android/internal/os/TimeoutRecord.java
@@ -45,7 +45,6 @@
             TimeoutKind.APP_REGISTERED,
             TimeoutKind.SHORT_FGS_TIMEOUT,
             TimeoutKind.JOB_SERVICE,
-            TimeoutKind.FGS_TIMEOUT,
     })
 
     @Retention(RetentionPolicy.SOURCE)
@@ -60,7 +59,6 @@
         int SHORT_FGS_TIMEOUT = 8;
         int JOB_SERVICE = 9;
         int APP_START = 10;
-        int FGS_TIMEOUT = 11;
     }
 
     /** Kind of timeout, e.g. BROADCAST_RECEIVER, etc. */
@@ -188,12 +186,6 @@
         return TimeoutRecord.endingNow(TimeoutKind.SHORT_FGS_TIMEOUT, reason);
     }
 
-    /** Record for a "foreground service" timeout. */
-    @NonNull
-    public static TimeoutRecord forFgsTimeout(String reason) {
-        return TimeoutRecord.endingNow(TimeoutKind.FGS_TIMEOUT, reason);
-    }
-
     /** Record for a job related timeout. */
     @NonNull
     public static TimeoutRecord forJobService(String reason) {
diff --git a/core/java/com/android/internal/os/anr/AnrLatencyTracker.java b/core/java/com/android/internal/os/anr/AnrLatencyTracker.java
index e11067d..f62ff38 100644
--- a/core/java/com/android/internal/os/anr/AnrLatencyTracker.java
+++ b/core/java/com/android/internal/os/anr/AnrLatencyTracker.java
@@ -22,7 +22,6 @@
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__BROADCAST_OF_INTENT;
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__CONTENT_PROVIDER_NOT_RESPONDING;
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__EXECUTING_SERVICE;
-import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__FGS_TIMEOUT;
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__INPUT_DISPATCHING_TIMEOUT;
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__INPUT_DISPATCHING_TIMEOUT_NO_FOCUSED_WINDOW;
 import static com.android.internal.util.FrameworkStatsLog.ANRLATENCY_REPORTED__ANR_TYPE__JOB_SERVICE;
@@ -549,8 +548,6 @@
                 return ANRLATENCY_REPORTED__ANR_TYPE__SHORT_FGS_TIMEOUT;
             case TimeoutKind.JOB_SERVICE:
                 return ANRLATENCY_REPORTED__ANR_TYPE__JOB_SERVICE;
-            case TimeoutKind.FGS_TIMEOUT:
-                return ANRLATENCY_REPORTED__ANR_TYPE__FGS_TIMEOUT;
             default:
                 return ANRLATENCY_REPORTED__ANR_TYPE__UNKNOWN_ANR_TYPE;
         }
diff --git a/core/java/com/android/internal/protolog/ProtoLogGroup.java b/core/java/com/android/internal/protolog/ProtoLogGroup.java
index f2783c4..bb3507c 100644
--- a/core/java/com/android/internal/protolog/ProtoLogGroup.java
+++ b/core/java/com/android/internal/protolog/ProtoLogGroup.java
@@ -18,6 +18,8 @@
 
 import com.android.internal.protolog.common.IProtoLogGroup;
 
+import java.util.UUID;
+
 /**
  * Defines logging groups for ProtoLog.
  *
@@ -153,10 +155,18 @@
         this.mLogToLogcat = logToLogcat;
     }
 
+    @Override
+    public int getId() {
+        return Consts.START_ID + this.ordinal();
+    }
+
     private static class Consts {
         private static final String TAG_WM = "WindowManager";
 
         private static final boolean ENABLE_DEBUG = true;
         private static final boolean ENABLE_LOG_TO_PROTO_DEBUG = true;
+        private static final int START_ID = (int) (
+                UUID.nameUUIDFromBytes(ProtoLogGroup.class.getName().getBytes())
+                        .getMostSignificantBits() % Integer.MAX_VALUE);
     }
 }
diff --git a/core/java/com/android/internal/protolog/common/IProtoLogGroup.java b/core/java/com/android/internal/protolog/common/IProtoLogGroup.java
index 149aa7a..91b24fd 100644
--- a/core/java/com/android/internal/protolog/common/IProtoLogGroup.java
+++ b/core/java/com/android/internal/protolog/common/IProtoLogGroup.java
@@ -64,4 +64,9 @@
      * returns name of the logging group.
      */
     String name();
+
+    /**
+     * returns the id of the logging group (unique for each group).
+     */
+    int getId();
 }
diff --git a/core/java/com/android/internal/statusbar/StatusBarIcon.java b/core/java/com/android/internal/statusbar/StatusBarIcon.java
index 4f80afa..76ce452 100644
--- a/core/java/com/android/internal/statusbar/StatusBarIcon.java
+++ b/core/java/com/android/internal/statusbar/StatusBarIcon.java
@@ -22,7 +22,21 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 
+import androidx.annotation.NonNull;
+
 public class StatusBarIcon implements Parcelable {
+    public enum Type {
+        // Notification: the sender avatar for important conversations
+        PeopleAvatar,
+        // Notification: the monochrome version of the app icon if available; otherwise fall back to
+        // the small icon
+        MaybeMonochromeAppIcon,
+        // Notification: the small icon from the notification
+        NotifSmallIcon,
+        // The wi-fi, cellular or battery icon.
+        SystemIcon
+    }
+
     public UserHandle user;
     public String pkg;
     public Icon icon;
@@ -30,9 +44,10 @@
     public boolean visible = true;
     public int number;
     public CharSequence contentDescription;
+    public Type type;
 
     public StatusBarIcon(UserHandle user, String resPackage, Icon icon, int iconLevel, int number,
-            CharSequence contentDescription) {
+            CharSequence contentDescription, Type type) {
         if (icon.getType() == Icon.TYPE_RESOURCE
                 && TextUtils.isEmpty(icon.getResPackage())) {
             // This is an odd situation where someone's managed to hand us an icon without a
@@ -46,15 +61,17 @@
         this.iconLevel = iconLevel;
         this.number = number;
         this.contentDescription = contentDescription;
+        this.type = type;
     }
 
     public StatusBarIcon(String iconPackage, UserHandle user,
             int iconId, int iconLevel, int number,
-            CharSequence contentDescription) {
+            CharSequence contentDescription, Type type) {
         this(user, iconPackage, Icon.createWithResource(iconPackage, iconId),
-                iconLevel, number, contentDescription);
+                iconLevel, number, contentDescription, type);
     }
 
+    @NonNull
     @Override
     public String toString() {
         return "StatusBarIcon(icon=" + icon
@@ -65,10 +82,11 @@
                 + " )";
     }
 
+    @NonNull
     @Override
     public StatusBarIcon clone() {
         StatusBarIcon that = new StatusBarIcon(this.user, this.pkg, this.icon,
-                this.iconLevel, this.number, this.contentDescription);
+                this.iconLevel, this.number, this.contentDescription, this.type);
         that.visible = this.visible;
         return that;
     }
@@ -88,6 +106,7 @@
         this.visible = in.readInt() != 0;
         this.number = in.readInt();
         this.contentDescription = in.readCharSequence();
+        this.type = Type.valueOf(in.readString());
     }
 
     public void writeToParcel(Parcel out, int flags) {
@@ -98,6 +117,7 @@
         out.writeInt(this.visible ? 1 : 0);
         out.writeInt(this.number);
         out.writeCharSequence(this.contentDescription);
+        out.writeString(this.type.name());
     }
 
     public int describeContents() {
diff --git a/core/java/com/android/internal/widget/ActionBarContainer.java b/core/java/com/android/internal/widget/ActionBarContainer.java
index eef3368..606e038 100644
--- a/core/java/com/android/internal/widget/ActionBarContainer.java
+++ b/core/java/com/android/internal/widget/ActionBarContainer.java
@@ -93,8 +93,7 @@
         if (bg != null) {
             bg.setCallback(this);
             if (mActionBarView != null) {
-                mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
-                        mActionBarView.getRight(), mActionBarView.getBottom());
+                bg.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
             }
         }
         setWillNotDraw(mIsSplit ? mSplitBackground == null :
@@ -293,6 +292,7 @@
         if (mActionBarView == null) return;
 
         if (mTabContainer != null && mTabContainer.getVisibility() != GONE) {
+            final int verticalPadding = getPaddingTop() + getPaddingBottom();
             int nonTabMaxHeight = 0;
             final int childCount = getChildCount();
             for (int i = 0; i < childCount; i++) {
@@ -307,7 +307,9 @@
             final int maxHeight = mode == MeasureSpec.AT_MOST ?
                     MeasureSpec.getSize(heightMeasureSpec) : Integer.MAX_VALUE;
             setMeasuredDimension(getMeasuredWidth(),
-                    Math.min(nonTabMaxHeight + getMeasuredHeightWithMargins(mTabContainer),
+                    Math.min(
+                            verticalPadding + nonTabMaxHeight
+                                    + getMeasuredHeightWithMargins(mTabContainer),
                             maxHeight));
         }
     }
@@ -335,13 +337,9 @@
             }
         } else {
             if (mBackground != null) {
-                if (mActionBarView.getVisibility() == View.VISIBLE) {
-                    mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
-                            mActionBarView.getRight(), mActionBarView.getBottom());
-                } else if (mActionContextView != null &&
-                        mActionContextView.getVisibility() == View.VISIBLE) {
-                    mBackground.setBounds(mActionContextView.getLeft(), mActionContextView.getTop(),
-                            mActionContextView.getRight(), mActionContextView.getBottom());
+                if ((mActionBarView.getVisibility() == View.VISIBLE) || (mActionContextView != null
+                        && mActionContextView.getVisibility() == View.VISIBLE)) {
+                    mBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
                 } else {
                     mBackground.setBounds(0, 0, 0, 0);
                 }
diff --git a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
index 0992db9..6832825 100644
--- a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
+++ b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
@@ -24,6 +24,7 @@
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
+import android.graphics.Insets;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
@@ -51,6 +52,7 @@
  */
 public class ActionBarOverlayLayout extends ViewGroup implements DecorContentParent {
     private static final String TAG = "ActionBarOverlayLayout";
+    private static final Rect EMPTY_RECT = new Rect();
 
     private int mActionBarHeight;
     //private WindowDecorActionBar mActionBar;
@@ -77,10 +79,13 @@
     private final Rect mBaseContentInsets = new Rect();
     private final Rect mLastBaseContentInsets = new Rect();
     private final Rect mContentInsets = new Rect();
+    private final Rect mSystemInsets = new Rect();
     private WindowInsets mBaseInnerInsets = WindowInsets.CONSUMED;
     private WindowInsets mLastBaseInnerInsets = WindowInsets.CONSUMED;
     private WindowInsets mInnerInsets = WindowInsets.CONSUMED;
     private WindowInsets mLastInnerInsets = WindowInsets.CONSUMED;
+    private boolean mDecorFitsSystemWindows = true;
+    private boolean mActionBarExtendsIntoSystemInsets = false;
 
     private ActionBarVisibilityCallback mActionBarVisibilityCallback;
 
@@ -268,7 +273,8 @@
             // We want the bar to be visible if it is not being hidden,
             // or the app has not turned on a stable UI mode (meaning they
             // are performing explicit layout around the action bar).
-            mActionBarVisibilityCallback.enableContentAnimations(!stable);
+            mActionBarVisibilityCallback.enableContentAnimations(
+                    !stable && !mActionBarExtendsIntoSystemInsets);
             if (barVisible || !stable) mActionBarVisibilityCallback.showForSystem();
             else mActionBarVisibilityCallback.hideForSystem();
         }
@@ -288,10 +294,39 @@
         }
     }
 
-    private boolean applyInsets(View view, Rect insets, boolean left, boolean top,
-            boolean bottom, boolean right) {
+    private boolean applyInsets(View view, Rect insets, boolean toPadding,
+            boolean left, boolean top, boolean right, boolean bottom) {
+        boolean changed;
+        if (toPadding) {
+            changed = setMargin(view, EMPTY_RECT, left, top, right, bottom);
+            changed |= setPadding(view, insets, left, top, right, bottom);
+        } else {
+            changed = setPadding(view, EMPTY_RECT, left, top, right, bottom);
+            changed |= setMargin(view, insets, left, top, right, bottom);
+        }
+        return changed;
+    }
+
+    private boolean setPadding(View view, Rect insets,
+            boolean left, boolean top, boolean right, boolean bottom) {
+        if ((left && view.getPaddingLeft() != insets.left)
+                || (top && view.getPaddingTop() != insets.top)
+                || (right && view.getPaddingRight() != insets.right)
+                || (bottom && view.getPaddingBottom() != insets.bottom)) {
+            view.setPadding(
+                    left ? insets.left : view.getPaddingLeft(),
+                    top ? insets.top : view.getPaddingTop(),
+                    right ? insets.right : view.getPaddingRight(),
+                    bottom ? insets.bottom : view.getPaddingBottom());
+            return true;
+        }
+        return false;
+    }
+
+    private boolean setMargin(View view,  Rect insets,
+            boolean left, boolean top, boolean right, boolean bottom) {
+        final LayoutParams lp = (LayoutParams) view.getLayoutParams();
         boolean changed = false;
-        LayoutParams lp = (LayoutParams)view.getLayoutParams();
         if (left && lp.leftMargin != insets.left) {
             changed = true;
             lp.leftMargin = insets.left;
@@ -316,12 +351,28 @@
         pullChildren();
 
         final int vis = getWindowSystemUiVisibility();
-        final Rect systemInsets = insets.getSystemWindowInsetsAsRect();
+        final boolean stable = (vis & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0;
+        final boolean layoutIntoSystemInsets = (vis & SYSTEM_UI_LAYOUT_FLAGS) != 0;
+        mDecorFitsSystemWindows = hasContentOnApplyWindowInsetsListener();
+
+        // Only extend action bar into system insets area if the app doesn't fit system insets.
+        mActionBarExtendsIntoSystemInsets =
+                !mDecorFitsSystemWindows || (stable && layoutIntoSystemInsets);
+
+        if (mActionBarVisibilityCallback != null) {
+            mActionBarVisibilityCallback.enableContentAnimations(
+                    !stable && !mActionBarExtendsIntoSystemInsets);
+        }
+
+        final Insets sysInsets = insets.getSystemWindowInsets();
+        mSystemInsets.set(sysInsets.left, sysInsets.top, sysInsets.right, sysInsets.bottom);
 
         // The top and bottom action bars are always within the content area.
-        boolean changed = applyInsets(mActionBarTop, systemInsets, true, true, false, true);
+        boolean changed = applyInsets(mActionBarTop, mSystemInsets,
+                mActionBarExtendsIntoSystemInsets, true, true, true, false);
         if (mActionBarBottom != null) {
-            changed |= applyInsets(mActionBarBottom, systemInsets, true, false, true, true);
+            changed |= applyInsets(mActionBarBottom, mSystemInsets,
+                    mActionBarExtendsIntoSystemInsets, true, false, true, true);
         }
 
         // Cannot use the result of computeSystemWindowInsets, because that consumes the
@@ -406,6 +457,9 @@
             // This is the standard space needed for the action bar.  For stable measurement,
             // we can't depend on the size currently reported by it -- this must remain constant.
             topInset = mActionBarHeight;
+            if (mActionBarExtendsIntoSystemInsets) {
+                topInset += mSystemInsets.top;
+            }
             if (mHasNonEmbeddedTabs) {
                 final View tabs = mActionBarTop.getTabContainer();
                 if (tabs != null) {
@@ -424,6 +478,9 @@
             if (mActionBarBottom != null) {
                 if (stable) {
                     bottomInset = mActionBarHeight;
+                    if (mActionBarExtendsIntoSystemInsets) {
+                        bottomInset += mSystemInsets.bottom;
+                    }
                 } else {
                     bottomInset = mActionBarBottom.getMeasuredHeight();
                 }
@@ -436,21 +493,35 @@
         // overlay.
         mContentInsets.set(mBaseContentInsets);
         mInnerInsets = mBaseInnerInsets;
-        if (!mOverlayMode && !stable && hasContentOnApplyWindowInsetsListener()) {
-            mContentInsets.top += topInset;
-            mContentInsets.bottom += bottomInset;
+        if (!mOverlayMode && !stable && mDecorFitsSystemWindows) {
+            if (mActionBarExtendsIntoSystemInsets) {
+                mContentInsets.top = Math.max(mContentInsets.top, topInset);
+                mContentInsets.bottom = Math.max(mContentInsets.bottom, bottomInset);
+            } else {
+                mContentInsets.top += topInset;
+                mContentInsets.bottom += bottomInset;
+            }
             // Content view has been shrunk, shrink all insets to match.
             mInnerInsets = mInnerInsets.inset(0 /* left */, topInset, 0 /* right */, bottomInset);
         } else {
             // Add ActionBar to system window inset, but leave other insets untouched.
-            mInnerInsets = mInnerInsets.replaceSystemWindowInsets(
-                    mInnerInsets.getSystemWindowInsetLeft(),
-                    mInnerInsets.getSystemWindowInsetTop() + topInset,
-                    mInnerInsets.getSystemWindowInsetRight(),
-                    mInnerInsets.getSystemWindowInsetBottom() + bottomInset
-            );
+            if (mActionBarExtendsIntoSystemInsets) {
+                mInnerInsets = mInnerInsets.replaceSystemWindowInsets(
+                        mInnerInsets.getSystemWindowInsetLeft(),
+                        Math.max(mInnerInsets.getSystemWindowInsetTop(), topInset),
+                        mInnerInsets.getSystemWindowInsetRight(),
+                        Math.max(mInnerInsets.getSystemWindowInsetBottom(), bottomInset)
+                );
+            } else {
+                mInnerInsets = mInnerInsets.replaceSystemWindowInsets(
+                        mInnerInsets.getSystemWindowInsetLeft(),
+                        mInnerInsets.getSystemWindowInsetTop() + topInset,
+                        mInnerInsets.getSystemWindowInsetRight(),
+                        mInnerInsets.getSystemWindowInsetBottom() + bottomInset
+                );
+            }
         }
-        applyInsets(mContent, mContentInsets, true, true, true, true);
+        setMargin(mContent, mContentInsets, true, true, true, true);
 
         if (!mLastInnerInsets.equals(mInnerInsets)) {
             // If the inner insets have changed, we need to dispatch this down to
diff --git a/core/jni/android_database_SQLiteRawStatement.cpp b/core/jni/android_database_SQLiteRawStatement.cpp
index 8fc13a8..9614864 100644
--- a/core/jni/android_database_SQLiteRawStatement.cpp
+++ b/core/jni/android_database_SQLiteRawStatement.cpp
@@ -83,6 +83,16 @@
     }
 }
 
+// If the last operation failed, throw an exception and return true.  Otherwise return false.
+static bool throwIfError(JNIEnv *env, jlong stmtPtr) {
+    switch (sqlite3_errcode(db(stmtPtr))) {
+        case SQLITE_OK:
+        case SQLITE_DONE:
+        case SQLITE_ROW: return false;
+    }
+    throw_sqlite3_exception(env, db(stmtPtr), nullptr);
+    return true;
+}
 
 static jint bindParameterCount(JNIEnv* env, jclass, jlong stmtPtr) {
     return sqlite3_bind_parameter_count(stmt(stmtPtr));
@@ -223,17 +233,24 @@
 
 static jint columnBytes(JNIEnv* env, jclass, jlong stmtPtr, jint col) {
     throwIfInvalidColumn(env, stmtPtr, col);
-    return sqlite3_column_bytes16(stmt(stmtPtr), col);
+    int r = sqlite3_column_bytes16(stmt(stmtPtr), col);
+    throwIfError(env, stmtPtr);
+    return r;
 }
 
-
 static jbyteArray columnBlob(JNIEnv* env, jclass, jlong stmtPtr, jint col) {
     throwIfInvalidColumn(env, stmtPtr, col);
     const void* blob = sqlite3_column_blob(stmt(stmtPtr), col);
     if (blob == nullptr) {
+        if (throwIfError(env, stmtPtr)) {
+            return NULL;
+        }
         return (sqlite3_column_type(stmt(stmtPtr), col) == SQLITE_NULL) ? NULL : emptyArray;
     }
     size_t size = sqlite3_column_bytes(stmt(stmtPtr), col);
+    if (throwIfError(env, stmtPtr)) {
+        return NULL;
+    }
     jbyteArray result = env->NewByteArray(size);
     if (result == nullptr) {
         // An OutOfMemory exception will have been thrown.
@@ -248,9 +265,13 @@
     throwIfInvalidColumn(env, stmtPtr, col);
     const void* blob = sqlite3_column_blob(stmt(stmtPtr), col);
     if (blob == nullptr) {
+        throwIfError(env, stmtPtr);
         return 0;
     }
     jsize bsize = sqlite3_column_bytes(stmt(stmtPtr), col);
+    if (throwIfError(env, stmtPtr)) {
+        return 0;
+    }
     if (bsize == 0 || bsize <= srcOffset) {
         return 0;
     }
@@ -278,9 +299,13 @@
     throwIfInvalidColumn(env, stmtPtr, col);
     const jchar* text = static_cast<const jchar*>(sqlite3_column_text16(stmt(stmtPtr), col));
     if (text == nullptr) {
+        throwIfError(env, stmtPtr);
         return NULL;
     }
     size_t length = sqlite3_column_bytes16(stmt(stmtPtr), col) / sizeof(jchar);
+    if (throwIfError(env, stmtPtr)) {
+        return NULL;
+    }
     return env->NewString(text, length);
 }
 
diff --git a/core/jni/android_tracing_PerfettoDataSource.cpp b/core/jni/android_tracing_PerfettoDataSource.cpp
index 17129d8..fec2898 100644
--- a/core/jni/android_tracing_PerfettoDataSource.cpp
+++ b/core/jni/android_tracing_PerfettoDataSource.cpp
@@ -245,7 +245,6 @@
 }
 
 void nativeWritePackets(JNIEnv* env, jclass clazz, jlong ds_ptr, jobjectArray packets) {
-    ALOG(LOG_DEBUG, LOG_TAG, "nativeWritePackets(%p)", (void*)ds_ptr);
     sp<PerfettoDataSource> datasource = reinterpret_cast<PerfettoDataSource*>(ds_ptr);
     datasource->WritePackets(env, packets);
 }
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
index 9b8dab7..fba0d81 100644
--- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -115,7 +115,8 @@
     size_t* total = (size_t*) arg;
     uint32_t uncompLen;
 
-    if (!zipFile->getEntryInfo(zipEntry, nullptr, &uncompLen, nullptr, nullptr, nullptr, nullptr)) {
+    if (!zipFile->getEntryInfo(zipEntry, nullptr, &uncompLen, nullptr, nullptr, nullptr, nullptr,
+                               nullptr)) {
         return INSTALL_FAILED_INVALID_APK;
     }
 
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 8e4addd..0eb7c4a 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -49,6 +49,9 @@
         "/dev/dri/renderD129", // Fixes b/31172436
         "/dev/stune/foreground/tasks",
         "/dev/blkio/tasks",
+        "/metadata/aconfig/maps/system.package.map",
+        "/metadata/aconfig/maps/system.flag.map",
+        "/metadata/aconfig/boot/system.val"
 };
 
 static const char kFdPath[] = "/proc/self/fd";
diff --git a/core/proto/android/nfc/apdu_service_info.proto b/core/proto/android/nfc/apdu_service_info.proto
index fd110c4..9efdfcb 100644
--- a/core/proto/android/nfc/apdu_service_info.proto
+++ b/core/proto/android/nfc/apdu_service_info.proto
@@ -27,6 +27,20 @@
 message ApduServiceInfoProto {
     option (.android.msg_privacy).dest = DEST_EXPLICIT;
 
+    message AutoTransactMapping {
+        option (.android.msg_privacy).dest = DEST_EXPLICIT;
+
+        optional string aid = 1;
+        optional bool should_auto_transact = 2;
+    }
+
+    message AutoTransactPattern {
+        option (.android.msg_privacy).dest = DEST_EXPLICIT;
+
+        optional string regexp_pattern = 1;
+        optional bool should_auto_transact = 2;
+    }
+
     optional .android.content.ComponentNameProto component_name = 1;
     optional string description = 2;
     optional bool on_host = 3;
@@ -35,4 +49,7 @@
     repeated AidGroupProto static_aid_groups = 6;
     repeated AidGroupProto dynamic_aid_groups = 7;
     optional string settings_activity_name = 8;
+    optional bool should_default_to_observe_mode = 9;
+    repeated AutoTransactMapping auto_transact_mapping = 10;
+    repeated AutoTransactPattern auto_transact_patterns = 11;
 }
diff --git a/core/proto/android/nfc/card_emulation.proto b/core/proto/android/nfc/card_emulation.proto
index 9c3c6d7..81da30d 100644
--- a/core/proto/android/nfc/card_emulation.proto
+++ b/core/proto/android/nfc/card_emulation.proto
@@ -59,6 +59,7 @@
     optional .android.content.ComponentNameProto foreground_requested = 5;
     optional .android.content.ComponentNameProto settings_default = 6;
     optional bool prefer_foreground = 7;
+    optional .android.content.ComponentNameProto wallet_role_holder_payment_service = 8;
 }
 
 // Debugging information for com.android.nfc.cardemulation.EnabledNfcFServices
diff --git a/core/proto/android/providers/settings/system.proto b/core/proto/android/providers/settings/system.proto
index 5fc2a59..1233069 100644
--- a/core/proto/android/providers/settings/system.proto
+++ b/core/proto/android/providers/settings/system.proto
@@ -122,6 +122,12 @@
     }
     optional Notification notification = 17;
 
+    message Pointer {
+        option (android.msg_privacy).dest = DEST_EXPLICIT;
+
+        optional SettingProto pointer_fill_style = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
+    }
+    optional Pointer pointer = 37;
     optional SettingProto pointer_speed = 18 [ (android.privacy).dest = DEST_AUTOMATIC ];
 
     message Ringtone {
@@ -268,5 +274,5 @@
 
     // Please insert fields in alphabetical order and group them into messages
     // if possible (to avoid reaching the method limit).
-    // Next tag = 37;
+    // Next tag = 38;
 }
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 6dbe44b..09ffdf3 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -8351,7 +8351,7 @@
         <activity android:name="android.accounts.GrantCredentialsPermissionActivity"
                 android:excludeFromRecents="true"
                 android:exported="true"
-                android:theme="@style/Theme.DeviceDefault.Light.DialogWhenLarge"
+                android:theme="@style/GrantCredentialsPermissionActivity"
                 android:process=":ui"
                 android:visibleToInstantApps="true">
         </activity>
diff --git a/core/res/OWNERS b/core/res/OWNERS
index a7d1a86..b2b58d5 100644
--- a/core/res/OWNERS
+++ b/core/res/OWNERS
@@ -69,6 +69,11 @@
 per-file res/xml/power_profile.xml = file:/BATTERY_STATS_OWNERS
 per-file res/xml/power_profile_test.xml = file:/BATTERY_STATS_OWNERS
 
+# RemoteView color resources
+per-file remote_color_resources_res/symbols.xml = pbdr@google.com
+per-file remote_color_resources_res/values/public.xml = pbdr@google.com
+per-file remote_color_resources_res/values/colors.xml = pbdr@google.com
+
 # Telephony
 per-file res/values/config_telephony.xml = file:/platform/frameworks/opt/telephony:/OWNERS
 per-file res/xml/sms_short_codes.xml = file:/platform/frameworks/opt/telephony:/OWNERS
@@ -82,4 +87,4 @@
 per-file res/values/styles.xml = arteiro@google.com
 per-file res/values/symbols.xml = arteiro@google.com
 per-file res/values/themes_device_defaults.xml = arteiro@google.com
-per-file res/values/styles_material.xml = arteiro@google.com
\ No newline at end of file
+per-file res/values/styles_material.xml = arteiro@google.com
diff --git a/core/res/remote_color_resources_res/values/colors.xml b/core/res/remote_color_resources_res/values/colors.xml
index aff3a95..dcafb83 100644
--- a/core/res/remote_color_resources_res/values/colors.xml
+++ b/core/res/remote_color_resources_res/values/colors.xml
@@ -66,4 +66,120 @@
   <color name="system_neutral2_800">#303030</color>
   <color name="system_neutral2_900">#1b1b1b</color>
   <color name="system_neutral2_1000">#000000</color>
+  <color name="system_primary_container_light">#DAE2FF</color>
+  <color name="system_on_primary_container_light">#001849</color>
+  <color name="system_primary_light">#495D92</color>
+  <color name="system_on_primary_light">#FFFFFF</color>
+  <color name="system_secondary_container_light">#DDE2F9</color>
+  <color name="system_on_secondary_container_light">#151B2C</color>
+  <color name="system_secondary_light">#585E71</color>
+  <color name="system_on_secondary_light">#FFFFFF</color>
+  <color name="system_tertiary_container_light">#FED6F9</color>
+  <color name="system_on_tertiary_container_light">#2B122B</color>
+  <color name="system_tertiary_light">#735471</color>
+  <color name="system_on_tertiary_light">#FFFFFF</color>
+  <color name="system_background_light">#FAF8FF</color>
+  <color name="system_on_background_light">#1A1B21</color>
+  <color name="system_surface_light">#FAF8FF</color>
+  <color name="system_on_surface_light">#1A1B21</color>
+  <color name="system_surface_container_low_light">#F4F3FA</color>
+  <color name="system_surface_container_lowest_light">#FFFFFF</color>
+  <color name="system_surface_container_light">#EEEDF4</color>
+  <color name="system_surface_container_high_light">#E8E7EF</color>
+  <color name="system_surface_container_highest_light">#E3E2E9</color>
+  <color name="system_surface_bright_light">#FAF8FF</color>
+  <color name="system_surface_dim_light">#DAD9E0</color>
+  <color name="system_surface_variant_light">#E1E2EC</color>
+  <color name="system_on_surface_variant_light">#45464F</color>
+  <color name="system_outline_light">#757780</color>
+  <color name="system_outline_variant_light">#C5C6D0</color>
+  <color name="system_error_light">#BA1A1A</color>
+  <color name="system_on_error_light">#FFFFFF</color>
+  <color name="system_error_container_light">#FFDAD6</color>
+  <color name="system_on_error_container_light">#410002</color>
+  <color name="system_control_activated_light">#DAE2FF</color>
+  <color name="system_control_normal_light">#45464F</color>
+  <color name="system_control_highlight_light">#000000</color>
+  <color name="system_text_primary_inverse_light">#E2E2E9</color>
+  <color name="system_text_secondary_and_tertiary_inverse_light">#C5C6D0</color>
+  <color name="system_text_primary_inverse_disable_only_light">#E3E2E9</color>
+  <color name="system_text_secondary_and_tertiary_inverse_disabled_light">#E3E2E9</color>
+  <color name="system_text_hint_inverse_light">#E3E2E9</color>
+  <color name="system_palette_key_color_primary_light">#6275AC</color>
+  <color name="system_palette_key_color_secondary_light">#71768B</color>
+  <color name="system_palette_key_color_tertiary_light">#8E6D8B</color>
+  <color name="system_palette_key_color_neutral_light">#76777D</color>
+  <color name="system_palette_key_color_neutral_variant_light">#767780</color>
+  <color name="system_primary_container_dark">#314578</color>
+  <color name="system_on_primary_container_dark">#DAE2FF</color>
+  <color name="system_primary_dark">#B2C5FF</color>
+  <color name="system_on_primary_dark">#182E60</color>
+  <color name="system_secondary_container_dark">#414659</color>
+  <color name="system_on_secondary_container_dark">#DDE2F9</color>
+  <color name="system_secondary_dark">#C0C6DD</color>
+  <color name="system_on_secondary_dark">#2A3042</color>
+  <color name="system_tertiary_container_dark">#5A3D59</color>
+  <color name="system_on_tertiary_container_dark">#FED6F9</color>
+  <color name="system_tertiary_dark">#E1BBDC</color>
+  <color name="system_on_tertiary_dark">#422741</color>
+  <color name="system_background_dark">#121318</color>
+  <color name="system_on_background_dark">#E3E2E9</color>
+  <color name="system_surface_dark">#121318</color>
+  <color name="system_on_surface_dark">#E3E2E9</color>
+  <color name="system_surface_container_low_dark">#1A1B21</color>
+  <color name="system_surface_container_lowest_dark">#0D0E13</color>
+  <color name="system_surface_container_dark">#1E1F25</color>
+  <color name="system_surface_container_high_dark">#292A2F</color>
+  <color name="system_surface_container_highest_dark">#33343A</color>
+  <color name="system_surface_bright_dark">#38393F</color>
+  <color name="system_surface_dim_dark">#121318</color>
+  <color name="system_surface_variant_dark">#45464F</color>
+  <color name="system_on_surface_variant_dark">#C5C6D0</color>
+  <color name="system_outline_dark">#8F909A</color>
+  <color name="system_outline_variant_dark">#45464F</color>
+  <color name="system_error_dark">#FFB4AB</color>
+  <color name="system_on_error_dark">#690005</color>
+  <color name="system_error_container_dark">#93000a</color>
+  <color name="system_on_error_container_dark">#FFDAD6</color>
+  <color name="system_control_activated_dark">#314578</color>
+  <color name="system_control_normal_dark">#C5C6D0</color>
+  <color name="system_control_highlight_dark">#FFFFFF</color>
+  <color name="system_text_primary_inverse_dark">#1A1B21</color>
+  <color name="system_text_secondary_and_tertiary_inverse_dark">#45464F</color>
+  <color name="system_text_primary_inverse_disable_only_dark">#1A1B21</color>
+  <color name="system_text_secondary_and_tertiary_inverse_disabled_dark">#1A1B21</color>
+  <color name="system_text_hint_inverse_dark">#1A1B21</color>
+  <color name="system_palette_key_color_primary_dark">#6275AC</color>
+  <color name="system_palette_key_color_secondary_dark">#71768B</color>
+  <color name="system_palette_key_color_tertiary_dark">#8E6D8B</color>
+  <color name="system_palette_key_color_neutral_dark">#76777D</color>
+  <color name="system_palette_key_color_neutral_variant_dark">#767780</color>
+  <color name="system_primary_fixed">#DAE2FF</color>
+  <color name="system_primary_fixed_dim">#B2C5FF</color>
+  <color name="system_on_primary_fixed">#001849</color>
+  <color name="system_on_primary_fixed_variant">#314578</color>
+  <color name="system_secondary_fixed">#DDE2F9</color>
+  <color name="system_secondary_fixed_dim">#C0C6DD</color>
+  <color name="system_on_secondary_fixed">#151B2C</color>
+  <color name="system_on_secondary_fixed_variant">#414659</color>
+  <color name="system_tertiary_fixed">#FED6F9</color>
+  <color name="system_tertiary_fixed_dim">#E1BBDC</color>
+  <color name="system_on_tertiary_fixed">#2B122B</color>
+  <color name="system_on_tertiary_fixed_variant">#5A3D59</color>
+  <color name="system_surface_disabled">#faf8ff</color>
+  <color name="system_on_surface_disabled">#1a1b21</color>
+  <color name="system_outline_disabled">#757780</color>
+  <color name="system_error_0">#ffffff</color>
+  <color name="system_error_10">#fffbf9</color>
+  <color name="system_error_50">#fceeee</color>
+  <color name="system_error_100">#f9dedc</color>
+  <color name="system_error_200">#f2b8b5</color>
+  <color name="system_error_300">#ec928e</color>
+  <color name="system_error_400">#e46962</color>
+  <color name="system_error_500">#dc362e</color>
+  <color name="system_error_600">#b3261e</color>
+  <color name="system_error_700">#8c1d18</color>
+  <color name="system_error_800">#601410</color>
+  <color name="system_error_900">#410e0b</color>
+  <color name="system_error_1000">#000000</color>
 </resources>
diff --git a/core/res/remote_color_resources_res/values/public.xml b/core/res/remote_color_resources_res/values/public.xml
index 4b0a892..d639ed6 100644
--- a/core/res/remote_color_resources_res/values/public.xml
+++ b/core/res/remote_color_resources_res/values/public.xml
@@ -66,5 +66,121 @@
     <public name="system_neutral2_800" />
     <public name="system_neutral2_900" />
     <public name="system_neutral2_1000" />
+    <public name="system_primary_container_light" />
+    <public name="system_on_primary_container_light" />
+    <public name="system_primary_light" />
+    <public name="system_on_primary_light" />
+    <public name="system_secondary_container_light" />
+    <public name="system_on_secondary_container_light" />
+    <public name="system_secondary_light" />
+    <public name="system_on_secondary_light" />
+    <public name="system_tertiary_container_light" />
+    <public name="system_on_tertiary_container_light" />
+    <public name="system_tertiary_light" />
+    <public name="system_on_tertiary_light" />
+    <public name="system_background_light" />
+    <public name="system_on_background_light" />
+    <public name="system_surface_light" />
+    <public name="system_on_surface_light" />
+    <public name="system_surface_container_low_light" />
+    <public name="system_surface_container_lowest_light" />
+    <public name="system_surface_container_light" />
+    <public name="system_surface_container_high_light" />
+    <public name="system_surface_container_highest_light" />
+    <public name="system_surface_bright_light" />
+    <public name="system_surface_dim_light" />
+    <public name="system_surface_variant_light" />
+    <public name="system_on_surface_variant_light" />
+    <public name="system_outline_light" />
+    <public name="system_error_light" />
+    <public name="system_on_error_light" />
+    <public name="system_error_container_light" />
+    <public name="system_on_error_container_light" />
+    <public name="system_control_activated_light" />
+    <public name="system_control_normal_light" />
+    <public name="system_control_highlight_light" />
+    <public name="system_text_primary_inverse_light" />
+    <public name="system_text_secondary_and_tertiary_inverse_light" />
+    <public name="system_text_primary_inverse_disable_only_light" />
+    <public name="system_text_secondary_and_tertiary_inverse_disabled_light" />
+    <public name="system_text_hint_inverse_light" />
+    <public name="system_palette_key_color_primary_light" />
+    <public name="system_palette_key_color_secondary_light" />
+    <public name="system_palette_key_color_tertiary_light" />
+    <public name="system_palette_key_color_neutral_light" />
+    <public name="system_palette_key_color_neutral_variant_light" />
+    <public name="system_primary_container_dark" />
+    <public name="system_on_primary_container_dark" />
+    <public name="system_primary_dark" />
+    <public name="system_on_primary_dark" />
+    <public name="system_secondary_container_dark" />
+    <public name="system_on_secondary_container_dark" />
+    <public name="system_secondary_dark" />
+    <public name="system_on_secondary_dark" />
+    <public name="system_tertiary_container_dark" />
+    <public name="system_on_tertiary_container_dark" />
+    <public name="system_tertiary_dark" />
+    <public name="system_on_tertiary_dark" />
+    <public name="system_background_dark" />
+    <public name="system_on_background_dark" />
+    <public name="system_surface_dark" />
+    <public name="system_on_surface_dark" />
+    <public name="system_surface_container_low_dark" />
+    <public name="system_surface_container_lowest_dark" />
+    <public name="system_surface_container_dark" />
+    <public name="system_surface_container_high_dark" />
+    <public name="system_surface_container_highest_dark" />
+    <public name="system_surface_bright_dark" />
+    <public name="system_surface_dim_dark" />
+    <public name="system_surface_variant_dark" />
+    <public name="system_on_surface_variant_dark" />
+    <public name="system_outline_dark" />
+    <public name="system_error_dark" />
+    <public name="system_on_error_dark" />
+    <public name="system_error_container_dark" />
+    <public name="system_on_error_container_dark" />
+    <public name="system_control_activated_dark" />
+    <public name="system_control_normal_dark" />
+    <public name="system_control_highlight_dark" />
+    <public name="system_text_primary_inverse_dark" />
+    <public name="system_text_secondary_and_tertiary_inverse_dark" />
+    <public name="system_text_primary_inverse_disable_only_dark" />
+    <public name="system_text_secondary_and_tertiary_inverse_disabled_dark" />
+    <public name="system_text_hint_inverse_dark" />
+    <public name="system_palette_key_color_primary_dark" />
+    <public name="system_palette_key_color_secondary_dark" />
+    <public name="system_palette_key_color_tertiary_dark" />
+    <public name="system_palette_key_color_neutral_dark" />
+    <public name="system_palette_key_color_neutral_variant_dark" />
+    <public name="system_primary_fixed" />
+    <public name="system_primary_fixed_dim" />
+    <public name="system_on_primary_fixed" />
+    <public name="system_on_primary_fixed_variant" />
+    <public name="system_secondary_fixed" />
+    <public name="system_secondary_fixed_dim" />
+    <public name="system_on_secondary_fixed" />
+    <public name="system_on_secondary_fixed_variant" />
+    <public name="system_tertiary_fixed" />
+    <public name="system_tertiary_fixed_dim" />
+    <public name="system_on_tertiary_fixed" />
+    <public name="system_on_tertiary_fixed_variant" />
+    <public name="system_outline_variant_light" />
+    <public name="system_outline_variant_dark" />
+    <public name="system_surface_disabled" />
+    <public name="system_on_surface_disabled" />
+    <public name="system_outline_disabled" />
+    <public name="system_error_0" />
+    <public name="system_error_10" />
+    <public name="system_error_50" />
+    <public name="system_error_100" />
+    <public name="system_error_200" />
+    <public name="system_error_300" />
+    <public name="system_error_400" />
+    <public name="system_error_500" />
+    <public name="system_error_600" />
+    <public name="system_error_700" />
+    <public name="system_error_800" />
+    <public name="system_error_900" />
+    <public name="system_error_1000" />
   </public-group>
 </resources>
diff --git a/core/res/res/drawable-car/car_activity_resolver_list_background.xml b/core/res/res/drawable-car/car_activity_resolver_list_background.xml
new file mode 100644
index 0000000..dbbadd8
--- /dev/null
+++ b/core/res/res/drawable-car/car_activity_resolver_list_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2024 The Android Open Source Project
+
+     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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?attr/colorBackgroundFloating" />
+    <corners android:radius="@dimen/car_activity_resolver_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/core/res/res/drawable/floating_popup_background_light.xml b/core/res/res/drawable/floating_popup_background.xml
similarity index 84%
rename from core/res/res/drawable/floating_popup_background_light.xml
rename to core/res/res/drawable/floating_popup_background.xml
index 767140d..99acedf 100644
--- a/core/res/res/drawable/floating_popup_background_light.xml
+++ b/core/res/res/drawable/floating_popup_background.xml
@@ -16,8 +16,9 @@
 */
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:shape="rectangle">
-    <solid android:color="@color/background_floating_material_light" />
+    <solid android:color="?androidprv:attr/materialColorSurfaceContainerHighest"/>
     <corners android:radius="?android:attr/dialogCornerRadius" />
 </shape>
 
diff --git a/core/res/res/drawable/floating_popup_background_dark.xml b/core/res/res/drawable/floating_popup_background_dark.xml
deleted file mode 100644
index c4b4448..0000000
--- a/core/res/res/drawable/floating_popup_background_dark.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* Copyright 2015, The Android Open Source Project
-**
-** 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.
-*/
--->
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="@color/background_floating_material_dark" />
-    <corners android:radius="?android:attr/dialogCornerRadius" />
-</shape>
-
diff --git a/core/res/res/drawable/pointer_alias_vector.xml b/core/res/res/drawable/pointer_alias_vector.xml
index 74dd6a0..035a099 100644
--- a/core/res/res/drawable/pointer_alias_vector.xml
+++ b/core/res/res/drawable/pointer_alias_vector.xml
@@ -28,6 +28,6 @@
         android:fillColor="#FFFFFF"
         android:pathData="M15.313 12.177a3 3 0 0 0-.416-.633l-.459-.534-.353.609a4.2 4.2 0 0 1-1.801 1.675 4.2 4.2 0 0 1-1.977.429l-.704-.02.213.671q.066.208.164.409l.975 1.995a2.967 2.967 0 1 0 5.332-2.606zm-.827 5.066a1.97 1.97 0 0 1-2.632-.904l-.81-1.658a5.2 5.2 0 0 0 1.68-.489 5.2 5.2 0 0 0 1.771-1.414l.896 1.833a1.97 1.97 0 0 1-.905 2.632m-3.697-7.565a4.2 4.2 0 0 1 1.977-.429l.704.02-.213-.671a3 3 0 0 0-.164-.409l-.975-1.995A2.967 2.967 0 1 0 6.785 8.8l.975 1.995q.172.35.416.633l.459.534.353-.609a4.2 4.2 0 0 1 1.801-1.675m-2.21.516-.895-1.833a1.968 1.968 0 1 1 3.536-1.728l.81 1.658a5.2 5.2 0 0 0-1.68.489 5.2 5.2 0 0 0-1.771 1.414m3.151 1.965a3 3 0 0 0 1.02-.818l.755-.95-1.205.142a2.97 2.97 0 0 0-1.975 1.1l-.755.95 1.205-.142c.324-.039.646-.132.955-.282" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M16.449 11.622a4.2 4.2 0 0 0-1.555-1.728l-.234-.146-.001-.276a4.2 4.2 0 0 0-.431-1.838l-.975-1.995a4.232 4.232 0 1 0-7.604 3.716l.975 1.995a4.2 4.2 0 0 0 1.555 1.729l.234.146.001.276c.002.617.141 1.244.431 1.838l.975 1.995a4.232 4.232 0 1 0 7.604-3.716zm-7.814.34-.459-.534a3 3 0 0 1-.416-.633L6.785 8.8a2.967 2.967 0 1 1 5.332-2.606l.975 1.995q.098.202.164.409l.214.672-.704-.02a4.2 4.2 0 0 0-1.977.429 4.2 4.2 0 0 0-1.801 1.675zm1.689-.33a2.97 2.97 0 0 1 1.975-1.1l1.205-.142-.755.95a2.95 2.95 0 0 1-1.02.818 3 3 0 0 1-.955.281l-1.204.143zm4.601 6.51a2.967 2.967 0 0 1-3.969-1.363l-.975-1.995a3 3 0 0 1-.164-.409l-.213-.671.704.02a4.2 4.2 0 0 0 1.977-.429 4.2 4.2 0 0 0 1.801-1.675l.353-.609.459.534q.245.284.416.633l.975 1.995a2.97 2.97 0 0 1-1.364 3.969" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_all_scroll_vector.xml b/core/res/res/drawable/pointer_all_scroll_vector.xml
index 1692e5e..45ad98c 100644
--- a/core/res/res/drawable/pointer_all_scroll_vector.xml
+++ b/core/res/res/drawable/pointer_all_scroll_vector.xml
@@ -21,7 +21,7 @@
         android:viewportHeight="24">
     <path
         android:pathData="M12.93 4.54a1.06 1.06 0 0 0-1.85 0L9.32 7.6c-.4.71.1 1.6.92 1.6h.82v1.86H9.2v-.84c0-.82-.88-1.33-1.6-.93l-3.06 1.76c-.7.41-.7 1.44 0 1.85l3.07 1.76c.7.4 1.6-.1 1.6-.93v-.79h1.86v1.87h-.82c-.81 0-1.33.88-.92 1.6l1.76 3.06c.4.71 1.44.71 1.85 0l1.75-3.07c.41-.7-.1-1.6-.92-1.6h-.82v-1.86h1.86v.8c0 .81.89 1.32 1.6.92l3.07-1.76c.7-.41.7-1.44 0-1.85L16.4 9.3c-.71-.4-1.6.1-1.6.93v.84h-1.86V9.2h.82c.82 0 1.33-.89.92-1.6l-1.75-3.06z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/pointerIconVectorFill"/>
     <path
         android:pathData="M12 4c.36 0 .72.18.93.54l1.75 3.06c.41.71-.1 1.6-.92 1.6h-.82v1.86h1.86v-.84a1.07 1.07 0 0 1 1.6-.92l3.06 1.75c.72.41.72 1.44 0 1.85l-3.06 1.76a1.07 1.07 0 0 1-1.6-.92v-.8h-1.86v1.87h.82c.82 0 1.33.88.92 1.6l-1.75 3.06a1.07 1.07 0 0 1-1.85 0L9.32 16.4c-.4-.7.1-1.6.93-1.6h.81v-1.86H9.2v.8a1.07 1.07 0 0 1-1.6.92L4.54 12.9a1.06 1.06 0 0 1 0-1.85L7.6 9.3a1.07 1.07 0 0 1 1.6.92v.85h1.86V9.2h-.82c-.81 0-1.33-.89-.92-1.6l1.76-3.06c.2-.36.56-.54.92-.54m0-1c-.74 0-1.41.39-1.79 1.04L8.45 7.1c-.18.33-.28.7-.27 1.05h-.05c-.36 0-.71.1-1.03.28l-3.06 1.76a2.05 2.05 0 0 0 0 3.58l3.06 1.75c.32.18.67.28 1.03.28h.05c-.01.38.08.76.28 1.1l1.75 3.07c.38.65 1.05 1.03 1.8 1.03s1.41-.38 1.78-1.03l1.76-3.07c.2-.34.3-.72.28-1.1h.04c.36 0 .71-.1 1.03-.28l3.06-1.75a2.07 2.07 0 0 0 0-3.58L16.9 8.43a2.07 2.07 0 0 0-1.03-.28h-.04c0-.36-.09-.72-.28-1.05L13.8 4.04A2.04 2.04 0 0 0 12 3z"
         android:fillColor="#FFFFFF"/>
diff --git a/core/res/res/drawable/pointer_arrow_vector.xml b/core/res/res/drawable/pointer_arrow_vector.xml
index 562f0c0..2614170 100644
--- a/core/res/res/drawable/pointer_arrow_vector.xml
+++ b/core/res/res/drawable/pointer_arrow_vector.xml
@@ -21,7 +21,7 @@
         android:viewportHeight="24">
     <path
         android:pathData="M16.34 11.18 6.77 4.02a1.78 1.78 0 0 0-1.88-.17c-.63.31-1 .91-1 1.6l.01 11.96c0 .9.6 1.46 1.15 1.67a1.74 1.74 0 0 0 1.98-.45l2.96-3.19c.3-.32.7-.52 1.13-.56l4.33-.47a1.8 1.8 0 0 0 .89-3.23z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/pointerIconVectorFill"/>
     <path
         android:pathData="M16.94 10.38 7.37 3.22a2.77 2.77 0 0 0-2.93-.27 2.75 2.75 0 0 0-1.55 2.51l.01 11.95a2.78 2.78 0 0 0 2.82 2.8c.77 0 1.5-.32 2.03-.9l2.97-3.19a.8.8 0 0 1 .5-.25l4.34-.46a2.76 2.76 0 0 0 2.4-2.05 2.8 2.8 0 0 0-1.02-2.98zM17 13.1a1.77 1.77 0 0 1-1.55 1.31l-4.33.47a1.8 1.8 0 0 0-1.13.56l-2.97 3.2c-.4.42-.86.57-1.3.57-.24 0-.48-.05-.68-.13a1.77 1.77 0 0 1-1.14-1.67V5.46a1.81 1.81 0 0 1 1.8-1.8c.38 0 .75.11 1.07.36l9.57 7.16c.72.54.81 1.35.66 1.92z"
         android:fillColor="#FFFFFF"/>
diff --git a/core/res/res/drawable/pointer_cell_vector.xml b/core/res/res/drawable/pointer_cell_vector.xml
index 044a4f4..cead1c4 100644
--- a/core/res/res/drawable/pointer_cell_vector.xml
+++ b/core/res/res/drawable/pointer_cell_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#FFFFFF"
         android:pathData="M19 9.667h-4.668V5a2 2 0 0 0-2-2h-.667a2 2 0 0 0-2 2v4.667H5a2 2 0 0 0-2 2v.667a2 2 0 0 0 2 2h4.665V19a2 2 0 0 0 2 2h.667a2 2 0 0 0 2-2v-4.666H19a2 2 0 0 0 2-2v-.667a2 2 0 0 0-2-2m1 2.667a1 1 0 0 1-1 1h-5.668V19a1 1 0 0 1-1 1h-.667a1 1 0 0 1-1-1v-5.666H5a1 1 0 0 1-1-1v-.667a1 1 0 0 1 1-1h5.665V5a1 1 0 0 1 1-1h.667a1 1 0 0 1 1 1v5.667H19a1 1 0 0 1 1 1z" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M19 10.667h-5.668V5a1 1 0 0 0-1-1h-.667a1 1 0 0 0-1 1v5.667H5a1 1 0 0 0-1 1v.667a1 1 0 0 0 1 1h5.665V19a1 1 0 0 0 1 1h.667a1 1 0 0 0 1-1v-5.666H19a1 1 0 0 0 1-1v-.667a1 1 0 0 0-1-1" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_context_menu_vector.xml b/core/res/res/drawable/pointer_context_menu_vector.xml
index 8e954d2..fb2af43 100644
--- a/core/res/res/drawable/pointer_context_menu_vector.xml
+++ b/core/res/res/drawable/pointer_context_menu_vector.xml
@@ -26,9 +26,9 @@
         android:fillColor="#FFFFFF"
         android:pathData="M16.938 10.38 7.372 3.216a2.77 2.77 0 0 0-2.931-.262A2.75 2.75 0 0 0 2.894 5.46l.009 11.951a2.785 2.785 0 0 0 1.776 2.604c.33.129.691.197 1.044.197a2.75 2.75 0 0 0 2.031-.897l2.969-3.193a.8.8 0 0 1 .5-.25l4.336-.467c1.397-.15 2.157-1.153 2.401-2.041a2.785 2.785 0 0 0-1.022-2.984m.058 2.718c-.157.571-.645 1.216-1.544 1.312l-4.335.467a1.8 1.8 0 0 0-1.126.563l-2.97 3.193a1.74 1.74 0 0 1-1.298.578 1.9 1.9 0 0 1-.678-.128c-.551-.217-1.141-.771-1.142-1.674l-.009-11.95c0-.697.371-1.299.994-1.611.262-.131.538-.196.813-.196.377 0 .75.123 1.072.365l9.566 7.163c.723.542.814 1.346.657 1.918" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M16.339 11.18 6.773 4.017a1.78 1.78 0 0 0-1.072-.365c-.274 0-.551.065-.813.196a1.77 1.77 0 0 0-.994 1.611l.009 11.951c0 .903.59 1.457 1.142 1.674.2.078.433.128.678.128.434 0 .906-.155 1.298-.578l2.97-3.193a1.8 1.8 0 0 1 1.126-.563l4.335-.467c.899-.097 1.387-.741 1.544-1.312.157-.573.066-1.377-.657-1.919" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M19.475 3.461h-2.66c-.37 0-.67.3-.67.67v2.66c0 .37.3.67.67.67h2.66c.37 0 .67-.3.67-.67v-2.66a.67.67 0 0 0-.67-.67m-.3 3.062h-2.067a.3.3 0 1 1 0-.6h2.067a.3.3 0 1 1 0 .6m0-.868h-2.067a.3.3 0 1 1 0-.6h2.067a.3.3 0 1 1 0 .6m0-.885h-2.067a.3.3 0 1 1 0-.6h2.067a.3.3 0 1 1 0 .6" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_copy_vector.xml b/core/res/res/drawable/pointer_copy_vector.xml
index b1e8995..3f13868 100644
--- a/core/res/res/drawable/pointer_copy_vector.xml
+++ b/core/res/res/drawable/pointer_copy_vector.xml
@@ -19,8 +19,8 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     <group>
-        <path android:fillColor="#FFFFFF" android:pathData="M17.5 2c-2.104 0-3.861 1.457-4.351 3.41A4.5 4.5 0 0 0 13 6.5c0 .344.047.675.12.997-.062-.002-.122-.009-.185-.009q-.225 0-.446.018V6.484a1 1 0 0 0-2 0v1.57a5.7 5.7 0 0 0-.997.625V7.583a1 1 0 0 0-2 0v4.205l-.697-.713c-.482-.494-1.265-.494-1.747 0s-.482 1.294 0 1.787l3.847 3.936q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.045 0 5.563-2.469 5.563-5.514q0-.192-.013-.38v-1.739a4.4 4.4 0 0 0 1-.37C20.969 9.778 22 8.265 22 6.5 22 4.019 19.981 2 17.5 2m1.985 7.364a3.6 3.6 0 0 1-1 .478A3.5 3.5 0 0 1 17.5 10a3.5 3.5 0 0 1-3.486-3.358C14.012 6.594 14 6.549 14 6.5c0-.328.06-.639.145-.941C14.559 4.088 15.898 3 17.5 3 19.43 3 21 4.57 21 6.5a3.47 3.47 0 0 1-1.515 2.864" />
-        <path android:fillColor="#FFFFFF" android:pathData="M19.299 6H18V4.7a.5.5 0 0 0-1 0V6h-1.301a.5.5 0 0 0 0 1H17v1.3a.5.5 0 0 0 1 0V7h1.299a.5.5 0 0 0 0-1" />
+        <path android:fillColor="?attr/pointerIconVectorFillInverse" android:pathData="M17.5 2c-2.104 0-3.861 1.457-4.351 3.41A4.5 4.5 0 0 0 13 6.5c0 .344.047.675.12.997-.062-.002-.122-.009-.185-.009q-.225 0-.446.018V6.484a1 1 0 0 0-2 0v1.57a5.7 5.7 0 0 0-.997.625V7.583a1 1 0 0 0-2 0v4.205l-.697-.713c-.482-.494-1.265-.494-1.747 0s-.482 1.294 0 1.787l3.847 3.936q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.045 0 5.563-2.469 5.563-5.514q0-.192-.013-.38v-1.739a4.4 4.4 0 0 0 1-.37C20.969 9.778 22 8.265 22 6.5 22 4.019 19.981 2 17.5 2m1.985 7.364a3.6 3.6 0 0 1-1 .478A3.5 3.5 0 0 1 17.5 10a3.5 3.5 0 0 1-3.486-3.358C14.012 6.594 14 6.549 14 6.5c0-.328.06-.639.145-.941C14.559 4.088 15.898 3 17.5 3 19.43 3 21 4.57 21 6.5a3.47 3.47 0 0 1-1.515 2.864" />
+        <path android:fillColor="?attr/pointerIconVectorFillInverse" android:pathData="M19.299 6H18V4.7a.5.5 0 0 0-1 0V6h-1.301a.5.5 0 0 0 0 1H17v1.3a.5.5 0 0 0 1 0V7h1.299a.5.5 0 0 0 0-1" />
     </group>
     <path
         android:fillColor="#000000"
diff --git a/core/res/res/drawable/pointer_crosshair_vector.xml b/core/res/res/drawable/pointer_crosshair_vector.xml
index b2e7e8a..8a50d1b 100644
--- a/core/res/res/drawable/pointer_crosshair_vector.xml
+++ b/core/res/res/drawable/pointer_crosshair_vector.xml
@@ -23,6 +23,6 @@
         android:pathData="M19.25 10.25h-5.5v-5.5a1.75 1.75 0 0 0-3.5 0v5.5h-5.5a1.75 1.75 0 0 0 0 3.5h5.5v5.5a1.75 1.75 0 0 0 3.5 0v-5.5h5.5a1.75 1.75 0 0 0 0-3.5m0 2.5h-6.5v6.5a.75.75 0 0 1-1.5 0v-6.5h-6.5a.75.75 0 0 1 0-1.5h6.5v-6.5a.75.75 0 0 1 1.5 0v6.5h6.5a.75.75 0 0 1 0 1.5" />
     <path
         android:fillType="evenOdd"
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M19.25 11.25h-6.5v-6.5a.75.75 0 0 0-1.5 0v6.5h-6.5a.75.75 0 0 0 0 1.5h6.5v6.5a.75.75 0 0 0 1.5 0v-6.5h6.5a.75.75 0 0 0 0-1.5" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_grab_vector.xml b/core/res/res/drawable/pointer_grab_vector.xml
index 7d9f048..48c01ce 100644
--- a/core/res/res/drawable/pointer_grab_vector.xml
+++ b/core/res/res/drawable/pointer_grab_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#000000"
         android:pathData="M20.442 7.562a2 2 0 0 0-2-2c-.366 0-.705.106-1 .277V4.686a2 2 0 0 0-2-2 2 2 0 0 0-1.004.279 1.995 1.995 0 0 0-3.986-.06 2 2 0 0 0-1.006-.28 2 2 0 0 0-2 2v6.501l-.247-.253a2.216 2.216 0 0 0-3.178 0 2.286 2.286 0 0 0 0 3.186l5.106 5.224q.063.061.131.118l-.001.001a6.58 6.58 0 0 0 4.624 1.901c3.587 0 6.565-2.906 6.565-6.516q0-.105-.004-.21m-6.561 5.727a5.58 5.58 0 0 1-3.922-1.613 1 1 0 0 1-.117-.106l-5.106-5.224a1.286 1.286 0 0 1 0-1.788 1.215 1.215 0 0 1 1.747 0l1.962 2.008V4.625a1 1 0 0 1 2 0v5.833q.463-.362.996-.623V3a1 1 0 0 1 2 0v6.29a6 6 0 0 1 1 .011V4.686a1 1 0 0 1 2 0v5.21c.357.185.693.408 1 .663V7.562a1 1 0 0 1 2 0v7.019h.001-.001q.004.104.004.207c.001 3.046-2.518 5.516-5.564 5.516" />
     <path
-        android:fillColor="#FFFFFF"
+        android:fillColor="?attr/pointerIconVectorFillInverse"
         android:pathData="M19.442 14.581V7.562a1 1 0 0 0-2 0v2.997a5.7 5.7 0 0 0-1-.663v-5.21a1 1 0 0 0-2 0v4.615a5.5 5.5 0 0 0-1-.011V3a1 1 0 0 0-2 0v6.835a5.6 5.6 0 0 0-.996.623V4.625a1 1 0 0 0-2 0v8.955l-1.962-2.008a1.215 1.215 0 0 0-1.747 0 1.286 1.286 0 0 0 0 1.788l5.106 5.224q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.046 0 5.565-2.469 5.565-5.516z" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_grabbing_vector.xml b/core/res/res/drawable/pointer_grabbing_vector.xml
index 9c96103..ad9f86c 100644
--- a/core/res/res/drawable/pointer_grabbing_vector.xml
+++ b/core/res/res/drawable/pointer_grabbing_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#000000"
         android:pathData="M19.485 12.622V8.508a2 2 0 0 0-3.12-1.657 1.993 1.993 0 0 0-2.99-1.006 1.99 1.99 0 0 0-1.886-1.361c-.903 0-1.658.603-1.906 1.425a2 2 0 0 0-3.09 1.674v2.206a2.2 2.2 0 0 0-2.159.586 2.285 2.285 0 0 0 0 3.185l3.847 3.936q.063.061.13.118l-.001.001a6.58 6.58 0 0 0 4.624 1.902c3.586 0 6.563-2.905 6.563-6.514a5 5 0 0 0-.012-.381m-6.55 5.895a5.58 5.58 0 0 1-3.922-1.613 1 1 0 0 1-.117-.106l-3.847-3.936c-.482-.494-.482-1.294 0-1.787s1.265-.494 1.747 0l.697.713V7.583a1 1 0 0 1 2 0v1.096q.463-.364.997-.625v-1.57a1 1 0 0 1 2 0v1.022a5.5 5.5 0 0 1 .996.009v-.007a1 1 0 0 1 2 0v.599q.537.277 1 .66v-.259a1 1 0 0 1 2 0v4.115q.013.189.013.38c-.001 3.045-2.518 5.514-5.564 5.514" />
     <path
-        android:fillColor="#FFFFFF"
+        android:fillColor="?attr/pointerIconVectorFillInverse"
         android:pathData="M18.485 12.622V8.508a1 1 0 0 0-2 0v.259a5.6 5.6 0 0 0-1-.66v-.599a1 1 0 0 0-2 0v.008a5.6 5.6 0 0 0-.996-.009V6.484a1 1 0 0 0-2 0v1.57a5.7 5.7 0 0 0-.997.625V7.583a1 1 0 0 0-2 0v4.205l-.697-.713c-.482-.494-1.265-.494-1.747 0s-.482 1.294 0 1.787l3.847 3.936q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.045 0 5.563-2.469 5.563-5.514a5 5 0 0 0-.012-.381" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_hand_vector.xml b/core/res/res/drawable/pointer_hand_vector.xml
index 79792f8..a06dc08 100644
--- a/core/res/res/drawable/pointer_hand_vector.xml
+++ b/core/res/res/drawable/pointer_hand_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#000000"
         android:pathData="M20.492 15.197v-4.198A1.995 1.995 0 0 0 18.5 9.001c-.413 0-.797.126-1.115.342a1.99 1.99 0 0 0-1.873-1.341c-.411 0-.792.125-1.109.339a1.99 1.99 0 0 0-1.879-1.361c-.363 0-.699.105-.992.275V3.998A1.99 1.99 0 0 0 9.542 2c-1.1 0-1.992.895-1.992 1.998v7.831l-.242-.249a2.2 2.2 0 0 0-3.164 0 2.29 2.29 0 0 0 0 3.183l5.084 5.219q.063.061.13.118l-.001.001A6.54 6.54 0 0 0 13.963 22c3.572 0 6.537-2.903 6.537-6.509q0-.148-.008-.294m-6.529 5.804a5.55 5.55 0 0 1-3.906-1.611 1 1 0 0 1-.117-.106l-5.084-5.219a1.286 1.286 0 0 1 0-1.786 1.21 1.21 0 0 1 1.74 0l1.95 2.002V3.998c0-.552.446-.999.996-.999s.996.447.996.999v7.17l.011-.007a.495.495 0 0 0 .989-.037V8.939a.992.992 0 0 1 1.984.039v.796l-.007 1.386a.5.5 0 0 0 .495.502h.003a.5.5 0 0 0 .498-.497l.006-1.157h.001V10a.997.997 0 1 1 1.991 0v.601l.004.003v1.02q.001.107.042.199a.5.5 0 0 0 .153.187l.031.021a.5.5 0 0 0 .231.083c.014.001.026.008.04.008a.5.5 0 0 0 .498-.5v-.642a.996.996 0 0 1 .993-.98c.55 0 .996.447.996.999v4.199a6 6 0 0 1 .008.293c-.001 3.043-2.509 5.51-5.542 5.51" />
     <path
-        android:fillColor="#FFFFFF"
+        android:fillColor="?attr/pointerIconVectorFillInverse"
         android:pathData="M19.496 10.999A.997.997 0 0 0 18.5 10a.995.995 0 0 0-.992.98v.644a.5.5 0 0 1-.498.5c-.014 0-.026-.007-.04-.008a.493.493 0 0 1-.457-.491v-1.02l-.004-.003V10c0-.552-.446-.999-.996-.999s-.996.447-.996.999v.008h-.001l-.005 1.003-.001.154a.5.5 0 0 1-.498.497h-.003a.5.5 0 0 1-.495-.502l.001-.159.006-1.227v-.796a.997.997 0 0 0-.996-.999.993.993 0 0 0-.988.96v2.185a.496.496 0 0 1-.989.037l-.011.007v-7.17a.997.997 0 0 0-.996-.999.997.997 0 0 0-.996.999V14.28l-1.95-2.002a1.21 1.21 0 0 0-1.74 0 1.286 1.286 0 0 0 0 1.786l5.084 5.219q.056.057.117.106A5.54 5.54 0 0 0 13.962 21c3.033 0 5.541-2.467 5.541-5.51a6 6 0 0 0-.008-.293z" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_handwriting_vector.xml b/core/res/res/drawable/pointer_handwriting_vector.xml
index 09f3e31..8497592 100644
--- a/core/res/res/drawable/pointer_handwriting_vector.xml
+++ b/core/res/res/drawable/pointer_handwriting_vector.xml
@@ -23,6 +23,6 @@
         <path android:fillColor="#FFFFFF" android:pathData="m16.431 7.64-6.29 6.29 1.43 1.43 6.29-6.29-1.42-1.43z" />
     </group>
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M5 4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1m14.41 3.51-1.42-1.42c-.39-.39-.9-.59-1.41-.59h-.01c-.51 0-1.02.2-1.41.59L8 13.25v4.25h4.25l7.16-7.16c.78-.78.78-2.05 0-2.83m-7.839 7.85-1.43-1.43 6.29-6.29h.01l1.42 1.43z" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_help_vector.xml b/core/res/res/drawable/pointer_help_vector.xml
index 6b7fd9f..07970fb 100644
--- a/core/res/res/drawable/pointer_help_vector.xml
+++ b/core/res/res/drawable/pointer_help_vector.xml
@@ -19,12 +19,12 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M16.339 11.18 6.773 4.017a1.78 1.78 0 0 0-1.072-.365c-.274 0-.551.065-.813.196a1.77 1.77 0 0 0-.994 1.611l.009 11.951c0 .903.59 1.457 1.142 1.674.2.078.433.128.678.128.434 0 .906-.155 1.298-.578l2.97-3.193a1.8 1.8 0 0 1 1.126-.563l4.335-.467c.899-.097 1.387-.741 1.544-1.312.157-.573.066-1.377-.657-1.919" />
     <path
         android:fillColor="#FFFFFF"
         android:pathData="M16.94 10.38 7.37 3.22a2.77 2.77 0 0 0-2.93-.27A2.75 2.75 0 0 0 2.9 5.46l.01 11.95a2.79 2.79 0 0 0 2.82 2.8c.78 0 1.5-.32 2.03-.9l2.97-3.19a.8.8 0 0 1 .5-.25l4.34-.46a2.76 2.76 0 0 0 2.4-2.05 2.8 2.8 0 0 0-1.02-2.98zM17 13.1a1.77 1.77 0 0 1-1.55 1.31l-4.33.47a1.8 1.8 0 0 0-1.13.56l-2.97 3.2c-.4.42-.86.57-1.3.57-.24 0-.48-.05-.68-.13a1.77 1.77 0 0 1-1.14-1.67V5.46a1.81 1.81 0 0 1 1.8-1.8c.38 0 .75.11 1.07.36l9.57 7.16c.72.54.81 1.35.66 1.92zm2.64-10.83a2.5 2.5 0 0 0-1.84-.72 3 3 0 0 0-2.83 1.93l-.39.94.96.37.86.32.12.05-.02.03c-.22.4-.3.82-.3 1.33v.94a1.56 1.56 0 0 0 .4 1.47 1.54 1.54 0 0 0 2.24.01 1.55 1.55 0 0 0 .28-1.84v-.52c0-.1.02-.17.03-.25l.16-.15c.32-.25.6-.56.78-.93.18-.37.26-.76.26-1.16 0-.68-.21-1.32-.7-1.82zm-1.5 5.96a.55.55 0 0 1-.82 0 .56.56 0 0 1-.17-.4c0-.16.06-.3.17-.4a.55.55 0 0 1 .41-.18c.15 0 .28.06.4.17a.55.55 0 0 1 0 .81zm1.05-3.42c-.1.22-.28.42-.52.6-.26.22-.42.42-.47.6-.05.18-.08.37-.08.57l-.93-.06c0-.38.07-.62.19-.86.13-.24.3-.46.54-.66.17-.13.3-.28.4-.43s.14-.3.14-.46c0-.2-.08-.37-.22-.5s-.31-.17-.52-.17c-.2 0-.39.06-.56.18-.17.13-.3.31-.4.56l-.87-.33a2.03 2.03 0 0 1 1.91-1.3c.48 0 .86.14 1.13.42.28.28.41.65.41 1.12 0 .26-.05.5-.15.72z" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M17.73 7.254a.55.55 0 0 0-.407.169.55.55 0 0 0-.169.407q0 .225.169.401a.55.55 0 0 0 .808 0 .56.56 0 0 0 .175-.413.53.53 0 0 0-.175-.394.56.56 0 0 0-.401-.17m1.202-4.288q-.413-.42-1.126-.419-.651 0-1.164.357a2.1 2.1 0 0 0-.751.945l.864.326q.15-.363.407-.551a.93.93 0 0 1 .557-.188q.313 0 .526.182c.213.182.213.286.213.495q0 .226-.144.457a1.4 1.4 0 0 1-.394.432q-.35.3-.538.657c-.125.238-.187.485-.187.86l.926.06q0-.3.081-.57t.469-.595q.363-.276.519-.601t.156-.726q-.002-.701-.414-1.121" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_horizontal_double_arrow_vector.xml b/core/res/res/drawable/pointer_horizontal_double_arrow_vector.xml
index d1aea9e..32c56b6 100644
--- a/core/res/res/drawable/pointer_horizontal_double_arrow_vector.xml
+++ b/core/res/res/drawable/pointer_horizontal_double_arrow_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#FFFFFF"
         android:pathData="m19.963 10.185-3.065-1.758c-1.327-.761-2.96.14-3.072 1.633h-3.651c-.113-1.492-1.746-2.394-3.072-1.633l-3.065 1.758c-1.383.793-1.383 2.786 0 3.579l3.065 1.758c1.311.752 2.918-.12 3.065-1.581h3.666c.147 1.46 1.754 2.333 3.065 1.581l3.065-1.758c1.382-.793 1.382-2.786-.001-3.579m-.498 2.712L16.4 14.655a1.065 1.065 0 0 1-1.596-.922v-.791H9.195v.791c0 .818-.886 1.33-1.596.922l-3.065-1.758a1.063 1.063 0 0 1 0-1.845l3.065-1.758a1.065 1.065 0 0 1 1.596.922v.843h5.609v-.843c0-.818.886-1.33 1.596-.922l3.065 1.758a1.063 1.063 0 0 1 0 1.845" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M19.465 11.052 16.4 9.294a1.065 1.065 0 0 0-1.596.922v.843H9.195v-.843c0-.818-.886-1.33-1.596-.922l-3.065 1.758a1.063 1.063 0 0 0 0 1.845l3.065 1.758a1.065 1.065 0 0 0 1.596-.922v-.791h5.609v.791c0 .818.886 1.33 1.596.922l3.065-1.758a1.063 1.063 0 0 0 0-1.845" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_nodrop_vector.xml b/core/res/res/drawable/pointer_nodrop_vector.xml
index 3a38bab..6108e96 100644
--- a/core/res/res/drawable/pointer_nodrop_vector.xml
+++ b/core/res/res/drawable/pointer_nodrop_vector.xml
@@ -19,8 +19,8 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     <group>
-        <path android:fillColor="#FFFFFF" android:pathData="M17.5 1.953c-2.108 0-3.869 1.449-4.382 3.398a4.5 4.5 0 0 0-.165 1.148c0 .343.045.674.117.995-.045-.001-.09-.007-.135-.007q-.225 0-.446.018V6.484a1 1 0 0 0-2 0v1.57a5.7 5.7 0 0 0-.997.625V7.583a1 1 0 0 0-2 0v4.205l-.697-.713c-.482-.494-1.265-.494-1.747 0s-.482 1.294 0 1.787l3.847 3.936q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.045 0 5.563-2.469 5.563-5.514q0-.192-.013-.38v-1.69a4.5 4.5 0 0 0 1-.366c1.51-.739 2.562-2.275 2.562-4.066A4.55 4.55 0 0 0 17.5 1.953m0 8.047C15.57 10 14 8.43 14 6.5S15.57 3 17.5 3 21 4.57 21 6.5 19.43 10 17.5 10" />
-        <path android:fillColor="#FFFFFF" android:pathData="M17.5 4c-.493 0-.95.148-1.337.395l3.442 3.442C19.852 7.45 20 6.993 20 6.5 20 5.121 18.879 4 17.5 4M15 6.5C15 7.879 16.121 9 17.5 9c.525 0 1.011-.164 1.413-.441l-3.472-3.472A2.5 2.5 0 0 0 15 6.5" />
+        <path android:fillColor="?attr/pointerIconVectorFillInverse" android:pathData="M17.5 1.953c-2.108 0-3.869 1.449-4.382 3.398a4.5 4.5 0 0 0-.165 1.148c0 .343.045.674.117.995-.045-.001-.09-.007-.135-.007q-.225 0-.446.018V6.484a1 1 0 0 0-2 0v1.57a5.7 5.7 0 0 0-.997.625V7.583a1 1 0 0 0-2 0v4.205l-.697-.713c-.482-.494-1.265-.494-1.747 0s-.482 1.294 0 1.787l3.847 3.936q.056.057.117.106a5.58 5.58 0 0 0 3.922 1.613c3.045 0 5.563-2.469 5.563-5.514q0-.192-.013-.38v-1.69a4.5 4.5 0 0 0 1-.366c1.51-.739 2.562-2.275 2.562-4.066A4.55 4.55 0 0 0 17.5 1.953m0 8.047C15.57 10 14 8.43 14 6.5S15.57 3 17.5 3 21 4.57 21 6.5 19.43 10 17.5 10" />
+        <path android:fillColor="?attr/pointerIconVectorFillInverse" android:pathData="M17.5 4c-.493 0-.95.148-1.337.395l3.442 3.442C19.852 7.45 20 6.993 20 6.5 20 5.121 18.879 4 17.5 4M15 6.5C15 7.879 16.121 9 17.5 9c.525 0 1.011-.164 1.413-.441l-3.472-3.472A2.5 2.5 0 0 0 15 6.5" />
     </group>
     <path
         android:fillColor="#000000"
diff --git a/core/res/res/drawable/pointer_text_vector.xml b/core/res/res/drawable/pointer_text_vector.xml
index 9e44f28..a147273 100644
--- a/core/res/res/drawable/pointer_text_vector.xml
+++ b/core/res/res/drawable/pointer_text_vector.xml
@@ -19,7 +19,7 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M12 3c-.551 0-1 .448-1 1v14a1.001 1.001 0 0 0 2 0V4c0-.552-.449-1-1-1" />
     <path
         android:fillColor="#FFFFFF"
diff --git a/core/res/res/drawable/pointer_top_left_diagonal_double_arrow_vector.xml b/core/res/res/drawable/pointer_top_left_diagonal_double_arrow_vector.xml
index e5d5301..7f95207 100644
--- a/core/res/res/drawable/pointer_top_left_diagonal_double_arrow_vector.xml
+++ b/core/res/res/drawable/pointer_top_left_diagonal_double_arrow_vector.xml
@@ -23,6 +23,6 @@
         android:pathData="m18.896 16.365-.924-3.41c-.398-1.467-2.169-1.985-3.305-1.035L12.08 9.333c.952-1.136.434-2.908-1.034-3.306l-3.41-.924c-1.539-.416-2.948.993-2.532 2.532l.924 3.41c.398 1.468 2.17 1.986 3.306 1.034l2.586 2.586c-.953 1.136-.435 2.91 1.033 3.307l3.41.924c1.54.417 2.949-.992 2.533-2.531m-2.27 1.566-3.41-.924a1.065 1.065 0 0 1-.476-1.781l.579-.579-3.966-3.966-.579.579a1.066 1.066 0 0 1-1.781-.476L6.07 7.373a1.063 1.063 0 0 1 1.304-1.304l3.41.924a1.065 1.065 0 0 1 .476 1.781l-.578.578 3.966 3.966.577-.577a1.066 1.066 0 0 1 1.781.477l.924 3.41a1.062 1.062 0 0 1-1.304 1.303" />
     <path
         android:fillType="evenOdd"
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M6.07 7.373a1.063 1.063 0 0 1 1.304-1.304l3.41.924a1.065 1.065 0 0 1 .476 1.781l-.578.578 3.966 3.966.577-.577a1.066 1.066 0 0 1 1.781.476l.924 3.41a1.063 1.063 0 0 1-1.304 1.304l-3.41-.924a1.065 1.065 0 0 1-.476-1.781l.579-.579-3.966-3.966-.579.579a1.066 1.066 0 0 1-1.781-.476z" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_top_right_diagonal_double_arrow_vector.xml b/core/res/res/drawable/pointer_top_right_diagonal_double_arrow_vector.xml
index e6f7aaf..8a33715 100644
--- a/core/res/res/drawable/pointer_top_right_diagonal_double_arrow_vector.xml
+++ b/core/res/res/drawable/pointer_top_right_diagonal_double_arrow_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#FFFFFF"
         android:pathData="m16.365 5.104-3.41.924c-1.468.398-1.986 2.171-1.033 3.307l-2.586 2.586c-1.136-.952-2.909-.434-3.306 1.034l-.924 3.41c-.417 1.539.992 2.948 2.531 2.531l3.41-.924c1.468-.398 1.986-2.17 1.034-3.306l2.587-2.587c1.136.951 2.908.432 3.305-1.035l.924-3.41c.415-1.538-.994-2.947-2.532-2.53m1.565 2.269-.924 3.41a1.065 1.065 0 0 1-1.781.476l-.577-.577-3.966 3.966.578.578a1.066 1.066 0 0 1-.476 1.781l-3.41.924a1.063 1.063 0 0 1-1.304-1.304l.924-3.41a1.066 1.066 0 0 1 1.781-.477l.578.578 3.966-3.966-.579-.579a1.066 1.066 0 0 1 .476-1.781l3.41-.924a1.063 1.063 0 0 1 1.304 1.305" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="m16.626 6.069-3.41.924a1.065 1.065 0 0 0-.476 1.781l.579.579-3.966 3.966-.579-.579a1.066 1.066 0 0 0-1.781.477l-.924 3.41a1.063 1.063 0 0 0 1.304 1.304l3.41-.924a1.065 1.065 0 0 0 .476-1.781l-.578-.578 3.966-3.966.577.577a1.066 1.066 0 0 0 1.781-.476l.924-3.41a1.062 1.062 0 0 0-1.303-1.304" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_vertical_double_arrow_vector.xml b/core/res/res/drawable/pointer_vertical_double_arrow_vector.xml
index 6ffcfef..889372c 100644
--- a/core/res/res/drawable/pointer_vertical_double_arrow_vector.xml
+++ b/core/res/res/drawable/pointer_vertical_double_arrow_vector.xml
@@ -22,6 +22,6 @@
         android:fillColor="#FFFFFF"
         android:pathData="M13.945 13.829V10.17c1.476-.131 2.363-1.75 1.606-3.069l-1.758-3.065c-.793-1.383-2.786-1.383-3.579 0L8.455 7.102c-.757 1.319.131 2.939 1.607 3.069v3.658c-1.477.13-2.364 1.75-1.607 3.069l1.758 3.065c.793 1.383 2.786 1.383 3.579 0l1.758-3.065c.758-1.319-.129-2.938-1.605-3.069m.739 2.572-1.758 3.065a1.063 1.063 0 0 1-1.845 0l-1.758-3.065a1.065 1.065 0 0 1 .922-1.596h.818v-5.61h-.818c-.818 0-1.33-.886-.922-1.596l1.758-3.065a1.063 1.063 0 0 1 1.845 0l1.758 3.065a1.065 1.065 0 0 1-.922 1.596h-.817v5.609h.817c.817.001 1.329.886.922 1.597" />
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M13.761 14.805h-.817v-5.61h.817c.818 0 1.33-.886.922-1.596l-1.758-3.065a1.063 1.063 0 0 0-1.845 0L9.323 7.599c-.407.71.104 1.596.922 1.596h.818v5.609h-.818c-.818 0-1.33.886-.922 1.596l1.758 3.065a1.063 1.063 0 0 0 1.845 0l1.758-3.065a1.065 1.065 0 0 0-.923-1.595" />
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_vertical_text_vector.xml b/core/res/res/drawable/pointer_vertical_text_vector.xml
index 72f40cc..9238f94 100644
--- a/core/res/res/drawable/pointer_vertical_text_vector.xml
+++ b/core/res/res/drawable/pointer_vertical_text_vector.xml
@@ -19,7 +19,7 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     <path
-        android:fillColor="#000000"
+        android:fillColor="?attr/pointerIconVectorFill"
         android:pathData="M19 11H5a1 1 0 0 0 0 2h14a1 1 0 0 0 0-2" />
     <path
         android:fillColor="#FFFFFF"
diff --git a/core/res/res/drawable/pointer_zoom_in_vector.xml b/core/res/res/drawable/pointer_zoom_in_vector.xml
index 8921666..a7f56c2 100644
--- a/core/res/res/drawable/pointer_zoom_in_vector.xml
+++ b/core/res/res/drawable/pointer_zoom_in_vector.xml
@@ -23,7 +23,7 @@
         <path android:fillColor="#FFFFFF" android:pathData="M10.55 5a4.546 4.546 0 1 0 0 9.093 4.546 4.546 0 0 0 0-9.093m2.462 5h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2V7a.5.5 0 0 1 1 0v2h2a.5.5 0 0 1 0 1" />
     </group>
     <group>
-        <path android:fillColor="#000000" android:pathData="m19.736 18.003-4.194-4.22a6.547 6.547 0 1 0-1.382 1.226l4.268 4.294a.923.923 0 0 0 1.308-1.3m-9.186-3.91A4.546 4.546 0 1 1 10.549 5a4.546 4.546 0 0 1 .001 9.093" />
-        <path android:fillColor="#000000" android:pathData="M13.012 9h-2V7a.5.5 0 0 0-1 0v2h-2a.5.5 0 0 0 0 1h2v2a.5.5 0 0 0 1 0v-2h2a.5.5 0 0 0 0-1" />
+        <path android:fillColor="?attr/pointerIconVectorFill" android:pathData="m19.736 18.003-4.194-4.22a6.547 6.547 0 1 0-1.382 1.226l4.268 4.294a.923.923 0 0 0 1.308-1.3m-9.186-3.91A4.546 4.546 0 1 1 10.549 5a4.546 4.546 0 0 1 .001 9.093" />
+        <path android:fillColor="?attr/pointerIconVectorFill" android:pathData="M13.012 9h-2V7a.5.5 0 0 0-1 0v2h-2a.5.5 0 0 0 0 1h2v2a.5.5 0 0 0 1 0v-2h2a.5.5 0 0 0 0-1" />
     </group>
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/pointer_zoom_out_vector.xml b/core/res/res/drawable/pointer_zoom_out_vector.xml
index 815ce0e..e46b978 100644
--- a/core/res/res/drawable/pointer_zoom_out_vector.xml
+++ b/core/res/res/drawable/pointer_zoom_out_vector.xml
@@ -23,7 +23,7 @@
         <path android:fillColor="#FFFFFF" android:pathData="M10.55 5a4.546 4.546 0 1 0 0 9.093 4.546 4.546 0 0 0 0-9.093m2.462 5h-5a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1" />
     </group>
     <group>
-        <path android:fillColor="#000000" android:pathData="m19.736 18.003-4.194-4.22a6.547 6.547 0 1 0-1.382 1.226l4.268 4.294a.923.923 0 0 0 1.308-1.3m-9.186-3.91A4.546 4.546 0 1 1 10.549 5a4.546 4.546 0 0 1 .001 9.093" />
-        <path android:fillColor="#000000" android:pathData="M13.012 9h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1" />
+        <path android:fillColor="?attr/pointerIconVectorFill" android:pathData="m19.736 18.003-4.194-4.22a6.547 6.547 0 1 0-1.382 1.226l4.268 4.294a.923.923 0 0 0 1.308-1.3m-9.186-3.91A4.546 4.546 0 1 1 10.549 5a4.546 4.546 0 0 1 .001 9.093" />
+        <path android:fillColor="?attr/pointerIconVectorFill" android:pathData="M13.012 9h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1" />
     </group>
 </vector>
\ No newline at end of file
diff --git a/core/res/res/layout-car/car_resolver_list.xml b/core/res/res/layout-car/car_resolver_list.xml
index 755cbfe..08c9861 100644
--- a/core/res/res/layout-car/car_resolver_list.xml
+++ b/core/res/res/layout-car/car_resolver_list.xml
@@ -18,91 +18,43 @@
 -->
 <com.android.internal.widget.ResolverDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_width="@dimen/car_activity_resolver_width"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
     android:id="@id/contentPanel">
 
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:weightSum="5"
-        android:layout_alwaysShow="true"
+        android:layout_height="wrap_content"
         android:orientation="vertical"
-        android:background="?attr/colorBackgroundFloating"
-        android:elevation="8dp">
+        android:background="@drawable/car_activity_resolver_list_background">
 
         <LinearLayout
-            android:id="@+id/button_bar"
-            android:visibility="gone"
-            style="?attr/buttonBarStyle"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_ignoreOffset="true"
-            android:layout_alwaysShow="true"
-            android:layout_hasNestedScrollIndicator="true"
-            android:background="?attr/colorBackgroundFloating"
+            android:background="@drawable/car_activity_resolver_list_background"
             android:orientation="horizontal"
-            android:paddingTop="8dp"
-            android:paddingStart="12dp"
-            android:weightSum="4"
-            android:paddingEnd="12dp"
-            android:elevation="8dp">
-
+            android:paddingVertical="@dimen/car_padding_4"
+            android:paddingHorizontal="@dimen/car_padding_4" >
             <TextView
                 android:id="@+id/profile_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginEnd="8dp"
-                android:paddingStart="8dp"
-                android:paddingEnd="8dp"
-                android:textSize="40sp"
-                android:layout_weight="4"
-                android:layout_gravity="left"
-                android:visibility="gone"
-                android:textColor="?attr/colorAccent"
-                android:singleLine="true"/>
+                android:visibility="gone" />
 
             <TextView
                 android:id="@+id/title"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="left"
-                android:layout_weight="3"
-                android:paddingTop="8dp"
-                android:layout_below="@id/profile_button"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:paddingBottom="8dp"/>
-
-            <Button
-                android:id="@+id/button_once"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:enabled="false"
-                android:layout_gravity="right"
-                style="?attr/buttonBarButtonStyle"
-                android:text="@string/activity_resolver_use_once"
-                android:layout_weight="0.5"
-                android:onClick="onButtonClick"/>
-
-            <Button
-                android:id="@+id/button_always"
-                android:layout_marginLeft="2dp"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:enabled="false"
-                android:layout_gravity="right"
-                style="?attr/buttonBarButtonStyle"
-                android:text="@string/activity_resolver_use_always"
-                android:layout_weight="0.5"
-                android:onClick="onButtonClick"/>
+                android:layout_gravity="start"
+                android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle" />
         </LinearLayout>
 
         <FrameLayout
             android:id="@+id/stub"
             android:visibility="gone"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="?attr/colorBackgroundFloating"/>
+            android:layout_height="wrap_content"/>
 
         <TabHost
             android:id="@+id/profile_tabhost"
@@ -110,25 +62,22 @@
             android:layout_height="wrap_content"
             android:layout_alignParentTop="true"
             android:layout_centerHorizontal="true"
-            android:background="?attr/colorBackgroundFloating">
+            android:background="?android:attr/colorBackgroundFloating">
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
                 <TabWidget
                     android:id="@android:id/tabs"
+                    android:visibility="gone"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:visibility="gone">
+                    android:layout_height="wrap_content">
                 </TabWidget>
                 <View
                     android:id="@+id/resolver_tab_divider"
                     android:visibility="gone"
                     android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:background="?attr/colorBackgroundFloating"
-                    android:foreground="?attr/dividerVertical"
-                    android:layout_marginBottom="8dp"/>
+                    android:layout_height="wrap_content" />
                 <FrameLayout
                     android:id="@android:id/tabcontent"
                     android:layout_width="match_parent"
@@ -141,24 +90,38 @@
             </LinearLayout>
         </TabHost>
 
-        <View
-            android:layout_alwaysShow="true"
+        <LinearLayout
+            android:id="@+id/button_bar"
+            android:visibility="gone"
             android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:background="?attr/colorBackgroundFloating"
-            android:foreground="?attr/dividerVertical"/>
+            android:layout_height="wrap_content"
+            android:layout_marginVertical="@dimen/car_padding_4"
+            android:layout_marginHorizontal="@dimen/car_padding_4"
+            android:padding="0dp"
+            android:gravity="center"
+            android:background="@drawable/car_activity_resolver_list_background"
+            android:orientation="vertical">
 
-        <TextView android:id="@+id/empty"
-                  android:layout_width="match_parent"
-                  android:layout_height="wrap_content"
-                  android:background="?attr/colorBackgroundFloating"
-                  android:elevation="8dp"
-                  android:layout_alwaysShow="true"
-                  android:text="@string/noApplications"
-                  android:padding="32dp"
-                  android:gravity="center"
-                  android:visibility="gone"/>
+            <Button
+                android:id="@+id/button_once"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/car_button_height"
+                android:enabled="false"
+                android:layout_gravity="center"
+                android:layout_marginBottom="@dimen/car_padding_2"
+                android:text="@string/activity_resolver_use_once"
+                android:onClick="onButtonClick"/>
+
+            <Button
+                android:id="@+id/button_always"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/car_button_height"
+                android:enabled="false"
+                android:layout_gravity="center"
+                android:text="@string/activity_resolver_use_always"
+                android:onClick="onButtonClick"/>
+        </LinearLayout>
 
     </LinearLayout>
 
-</com.android.internal.widget.ResolverDrawerLayout>
+</com.android.internal.widget.ResolverDrawerLayout>
\ No newline at end of file
diff --git a/core/res/res/layout-car/car_resolver_list_with_default.xml b/core/res/res/layout-car/car_resolver_list_with_default.xml
index 5e450b2..08cc7ff 100644
--- a/core/res/res/layout-car/car_resolver_list_with_default.xml
+++ b/core/res/res/layout-car/car_resolver_list_with_default.xml
@@ -18,138 +18,78 @@
 -->
 <com.android.internal.widget.ResolverDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:maxCollapsedHeight="200dp"
+    android:layout_width="@dimen/car_activity_resolver_width"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
     android:id="@id/contentPanel">
 
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:weightSum="5"
-        android:layout_alwaysShow="true"
+        android:layout_height="wrap_content"
         android:orientation="vertical"
-        android:background="?attr/colorBackgroundFloating"
-        android:elevation="8dp">
+        android:layout_gravity="center"
+        android:background="@drawable/car_activity_resolver_list_background">
+
+        <FrameLayout
+            android:id="@+id/stub"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/car_activity_resolver_list_background"/>
+
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_weight="0.5"
+            android:minHeight="@dimen/car_activity_resolver_list_item_height"
             android:orientation="horizontal">
 
+            <RadioButton
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:focusable="false"
+                android:clickable="false"
+                android:layout_marginStart="?attr/listPreferredItemPaddingStart"
+                android:layout_gravity="start|center_vertical"
+                android:checked="true"/>
+
             <ImageView
                 android:id="@+id/icon"
-                android:layout_width="60dp"
-                android:layout_height="60dp"
-                android:layout_gravity="start|top"
-                android:layout_marginStart="10dp"
-                android:layout_marginEnd="5dp"
-                android:layout_marginTop="10dp"
+                android:layout_width="@dimen/car_icon_size"
+                android:layout_height="@dimen/car_icon_size"
+                android:layout_gravity="start|center_vertical"
+                android:layout_marginStart="@dimen/car_padding_4"
                 android:src="@drawable/resolver_icon_placeholder"
                 android:scaleType="fitCenter"/>
 
             <TextView
                 android:id="@+id/title"
-                android:layout_width="0dp"
-                android:layout_weight="1"
-                android:layout_height="?attr/listPreferredItemHeight"
-                android:layout_marginStart="16dp"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:gravity="start|center_vertical"
-                android:paddingEnd="16dp"/>
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="?attr/listPreferredItemPaddingStart"
+                style="?android:attr/textAppearanceListItem"
+                android:layout_gravity="start|center_vertical" />
 
             <LinearLayout
                 android:id="@+id/profile_button"
-                android:layout_width="wrap_content"
-                android:layout_height="48dp"
-                android:layout_marginTop="4dp"
-                android:layout_marginEnd="4dp"
-                android:paddingStart="8dp"
-                android:paddingEnd="8dp"
-                android:paddingTop="4dp"
-                android:paddingBottom="4dp"
-                android:focusable="true"
                 android:visibility="gone"
-                style="?attr/borderlessButtonStyle">
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
 
                 <ImageView
                     android:id="@+id/icon"
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_gravity="start|center_vertical"
-                    android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
-                    android:layout_marginTop="12dp"
-                    android:layout_marginBottom="12dp"
-                    android:scaleType="fitCenter"/>
+                    android:visibility="gone"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
 
                 <TextView
                     android:id="@id/text1"
+                    android:visibility="gone"
                     android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="start|center_vertical"
-                    android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
-                    android:textAppearance="?attr/textAppearanceButton"
-                    android:textColor="?attr/textColorPrimary"
-                    android:minLines="1"
-                    android:maxLines="1"
-                    android:ellipsize="marquee"/>
+                    android:layout_height="wrap_content" />
             </LinearLayout>
         </LinearLayout>
 
-        <LinearLayout
-            android:id="@+id/button_bar"
-            android:visibility="gone"
-            style="?attr/buttonBarStyle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alwaysShow="true"
-            android:gravity="end|center_vertical"
-            android:layout_weight="0.5"
-            android:orientation="horizontal"
-            android:layoutDirection="locale"
-            android:measureWithLargestChild="true"
-            android:paddingTop="8dp"
-            android:paddingBottom="8dp"
-            android:paddingStart="12dp"
-            android:paddingEnd="12dp"
-            android:elevation="8dp">
-
-            <Button
-                android:id="@+id/button_once"
-                android:layout_width="wrap_content"
-                android:layout_gravity="start"
-                android:maxLines="2"
-                style="?attr/buttonBarButtonStyle"
-                android:minHeight="@dimen/alert_dialog_button_bar_height"
-                android:layout_height="wrap_content"
-                android:enabled="false"
-                android:text="@string/activity_resolver_use_once"
-                android:onClick="onButtonClick"/>
-
-            <Button
-                android:id="@+id/button_always"
-                android:layout_width="wrap_content"
-                android:layout_gravity="end"
-                android:maxLines="2"
-                android:minHeight="@dimen/alert_dialog_button_bar_height"
-                style="?attr/buttonBarButtonStyle"
-                android:layout_height="wrap_content"
-                android:enabled="false"
-                android:text="@string/activity_resolver_use_always"
-                android:onClick="onButtonClick"/>
-        </LinearLayout>
-
-        <FrameLayout
-            android:id="@+id/stub"
-            android:layout_alwaysShow="true"
-            android:visibility="gone"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="?attr/colorBackgroundFloating"/>
-
         <TabHost
-            android:layout_alwaysShow="true"
             android:id="@+id/profile_tabhost"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -170,10 +110,7 @@
                     android:id="@+id/resolver_tab_divider"
                     android:visibility="gone"
                     android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:background="?attr/colorBackgroundFloating"
-                    android:foreground="?attr/dividerVertical"
-                    android:layout_marginBottom="8dp"/>
+                    android:layout_height="wrap_content" />
                 <FrameLayout
                     android:id="@android:id/tabcontent"
                     android:layout_width="match_parent"
@@ -187,10 +124,36 @@
             </LinearLayout>
         </TabHost>
 
-        <View
+        <LinearLayout
+            android:id="@+id/button_bar"
+            android:visibility="gone"
             android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:background="?attr/dividerVertical"/>
+            android:layout_height="wrap_content"
+            android:layout_marginVertical="@dimen/car_padding_4"
+            android:layout_marginHorizontal="@dimen/car_padding_4"
+            android:gravity="center"
+            android:background="@drawable/car_activity_resolver_list_background"
+            android:orientation="vertical">
+
+            <Button
+                android:id="@+id/button_once"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/car_button_height"
+                android:enabled="false"
+                android:layout_gravity="center"
+                android:layout_marginBottom="@dimen/car_padding_2"
+                android:text="@string/activity_resolver_use_once"
+                android:onClick="onButtonClick"/>
+
+            <Button
+                android:id="@+id/button_always"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/car_button_height"
+                android:enabled="false"
+                android:layout_gravity="center"
+                android:text="@string/activity_resolver_use_always"
+                android:onClick="onButtonClick"/>
+        </LinearLayout>
     </LinearLayout>
 
 </com.android.internal.widget.ResolverDrawerLayout>
diff --git a/core/res/res/layout/floating_popup_container.xml b/core/res/res/layout/floating_popup_container.xml
index 776a35d..96f0909 100644
--- a/core/res/res/layout/floating_popup_container.xml
+++ b/core/res/res/layout/floating_popup_container.xml
@@ -24,4 +24,4 @@
     android:elevation="@android:dimen/text_edit_floating_toolbar_elevation"
     android:focusable="true"
     android:focusableInTouchMode="true"
-    android:background="?attr/floatingToolbarPopupBackgroundDrawable"/>
+    android:background="@drawable/floating_popup_background"/>
diff --git a/core/res/res/layout/floating_popup_menu_button.xml b/core/res/res/layout/floating_popup_menu_button.xml
index e4c2a34..0b3861c 100644
--- a/core/res/res/layout/floating_popup_menu_button.xml
+++ b/core/res/res/layout/floating_popup_menu_button.xml
@@ -16,6 +16,7 @@
 */
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
@@ -53,7 +54,7 @@
         android:ellipsize="end"
         android:fontFamily="@*android:string/config_bodyFontFamily"
         android:textSize="@dimen/floating_toolbar_text_size"
-        android:textColor="?attr/floatingToolbarForegroundColor"
+        android:textColor="?androidprv:attr/materialColorOnSurface"
         android:background="@null"
         android:focusable="false"
         android:focusableInTouchMode="false"
diff --git a/core/res/res/layout/floating_popup_overflow_button.xml b/core/res/res/layout/floating_popup_overflow_button.xml
index 12e2000..a51836b 100644
--- a/core/res/res/layout/floating_popup_overflow_button.xml
+++ b/core/res/res/layout/floating_popup_overflow_button.xml
@@ -16,6 +16,7 @@
 */
 -->
 <ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:id="@+id/overflow"
     android:layout_width="@dimen/floating_toolbar_menu_image_button_width"
     android:layout_height="@dimen/floating_toolbar_height"
@@ -25,4 +26,4 @@
     android:paddingBottom="@dimen/floating_toolbar_menu_image_button_vertical_padding"
     android:scaleType="centerInside"
     android:background="?attr/actionBarItemBackground"
-    android:tint="?attr/floatingToolbarForegroundColor" />
+    android:tint="?androidprv:attr/materialColorOnSurface" />
diff --git a/core/res/res/layout/text_edit_suggestion_container_material.xml b/core/res/res/layout/text_edit_suggestion_container_material.xml
index 34e7bc8..d6e1e9d 100644
--- a/core/res/res/layout/text_edit_suggestion_container_material.xml
+++ b/core/res/res/layout/text_edit_suggestion_container_material.xml
@@ -23,7 +23,7 @@
         android:id="@+id/suggestionWindowContainer"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?android:attr/floatingToolbarPopupBackgroundDrawable"
+        android:background="@drawable/floating_popup_background"
         android:elevation="@android:dimen/text_edit_floating_toolbar_elevation"
         android:layout_margin="@android:dimen/text_edit_floating_toolbar_margin"
         android:orientation="vertical"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index ca6a384..704d442 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privaat ruimte"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Kloon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Gemeenskaplik"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitiewe kennisgewinginhoud is versteek"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Appinhoud is weens sekuriteit van skermdeling verberg"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 218b13a..d1e18da 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"የግል ቦታ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"አባዛ"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"የጋራ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"አደገኛ የማሳወቂያ ይዘት ተደብቋል"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ለደኅንነት ሲባል የመተግበሪያ ይዘት ከማያ ገጽ ማጋራት ተደብቋል"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index d0e28b7..5ef18af 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -2411,6 +2411,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"المساحة الخاصة"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"نسخة طبق الأصل"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ملف شخصي مشترك"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"تم إخفاء المحتوى الحساس في الإشعار"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"تم إخفاء محتوى التطبيق بعد تفعيل ميزة \"مشاركة الشاشة\" للحفاظ على أمانك"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 42b0af9..5443f12 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"প্ৰাইভেট স্পে’চ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ক্ল’ন"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"সম্প্ৰদায়ৰ সৈতে জড়িত"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"সংবেদনশীল জাননী লুকুওৱা হৈছে"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"সুৰক্ষাৰ বাবে এপৰ সমল স্ক্ৰীণ শ্বেয়াৰ কৰাৰ পৰা লুকুৱাই ৰখা হৈছে"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 5633c06..b9ec742 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Məxfi sahə"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Kommunal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Həssas bildiriş kontenti gizlədildi"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Güvənlik üçün tətbiq kontenti ekran paylaşımından gizlədildi"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index e38706e..858075b 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privatan prostor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klonirano"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Zajedničko"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Osetljiv sadržaj obaveštenja je skriven"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije je skriven za deljenje sadržaja ekrana zbog bezbednosti"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 25ae5a7..2739cb2 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Прыватная прастора"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клон"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Супольны"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Канфідэнцыяльнае змесціва ў апавяшчэннях схавана"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Змесціва праграмы выключана з абагульвання экрана ў мэтах бяспекі"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 6b388d8..0d4cadc 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Частно пространство"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клониране"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Общи"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Деликатното съдържание в известието е скрито"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Съдържанието на приложението е скрито от функцията за споделяне на екрана от съображения за сигурност"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 3f338cc..03fba4b 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"প্রাইভেট স্পেস"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ক্লোন"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"কমিউনাল"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"সংবেদনশীল বিজ্ঞপ্তির কন্টেন্ট লুকানো আছে"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"নিরাপত্তার জন্য স্ক্রিন শেয়ার করা থেকে লুকানো অ্যাপের কন্টেন্ট"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 0438302..6ce10c0 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privatni prostor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Opće"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sakriven je osjetljiv sadržaj obavještenja"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije je sakriven od dijeljenja ekrana radi sigurnosti"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 21f397b..4b1af34 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -2016,9 +2016,9 @@
     <string name="app_streaming_blocked_message" product="tv" msgid="4003011766528814377">"En aquests moments, No s\'hi pot accedir des del teu <xliff:g id="DEVICE">%1$s</xliff:g>. Prova-ho al dispositiu Android TV."</string>
     <string name="app_streaming_blocked_message" product="tablet" msgid="4242053045964946062">"En aquests moments, No s\'hi pot accedir des del teu <xliff:g id="DEVICE">%1$s</xliff:g>. Prova-ho a la tauleta."</string>
     <string name="app_streaming_blocked_message" product="default" msgid="6159168735030739398">"No s\'hi pot accedir des del teu <xliff:g id="DEVICE">%1$s</xliff:g>. Prova-ho al telèfon."</string>
-    <string name="app_streaming_blocked_message_for_permission_request" product="tv" msgid="4706276040125072077">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió de reproducció en línia. Primer concedeix el permís al teu dispositiu Android TV."</string>
-    <string name="app_streaming_blocked_message_for_permission_request" product="tablet" msgid="1824604581465771629">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió de reproducció en línia. Primer concedeix el permís a la teva tauleta."</string>
-    <string name="app_streaming_blocked_message_for_permission_request" product="default" msgid="7755223160363292105">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió de reproducció en línia. Primer concedeix el permís al teu telèfon."</string>
+    <string name="app_streaming_blocked_message_for_permission_request" product="tv" msgid="4706276040125072077">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió d\'estríming. Primer concedeix el permís al teu dispositiu Android TV."</string>
+    <string name="app_streaming_blocked_message_for_permission_request" product="tablet" msgid="1824604581465771629">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió d\'estríming. Primer concedeix el permís a la teva tauleta."</string>
+    <string name="app_streaming_blocked_message_for_permission_request" product="default" msgid="7755223160363292105">"Aquesta aplicació requereix permisos addicionals, però els permisos no es poden concedir en una sessió d\'estríming. Primer concedeix el permís al teu telèfon."</string>
     <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tv" msgid="3470977315395784567">"Aquesta aplicació sol·licita seguretat addicional. Prova-ho al dispositiu Android TV."</string>
     <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tablet" msgid="698460091901465092">"Aquesta aplicació sol·licita seguretat addicional. Prova-ho a la tauleta."</string>
     <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="default" msgid="8552691971910603907">"Aquesta aplicació sol·licita seguretat addicional. Prova-ho al telèfon."</string>
@@ -2365,7 +2365,7 @@
     <string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"No es pot accedir a la càmera del telèfon des del teu <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
     <string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"No es pot accedir a la càmera de la tauleta des del teu <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
     <string name="vdm_secure_window" msgid="161700398158812314">"No s\'hi pot accedir mentre s\'està reproduint en continu. Prova-ho al telèfon."</string>
-    <string name="vdm_pip_blocked" msgid="4036107522497281397">"No es pot veure el mode d\'imatge sobre imatge durant la reproducció en línia"</string>
+    <string name="vdm_pip_blocked" msgid="4036107522497281397">"No es pot veure el mode d\'imatge sobre imatge durant l\'estríming"</string>
     <string name="system_locale_title" msgid="711882686834677268">"Valor predeterminat del sistema"</string>
     <string name="default_card_name" msgid="9198284935962911468">"TARGETA <xliff:g id="CARDNUMBER">%d</xliff:g>"</string>
     <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Permís del perfil del rellotge perquè l\'aplicació complementària gestioni els rellotges"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espai privat"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Comunitari"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"S\'ha amagat contingut sensible de les notificacions"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contingut de l\'aplicació amagat de la compartició de pantalla per motius de seguretat"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 4013a03..cc4bd3c 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Soukromý prostor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Komunální"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Obsah citlivých oznámení je skrytý"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Obsah aplikace je z bezpečnostních důvodů při sdílení obrazovky skryt"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 5226d56..665ea17 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privat område"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Fælles"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Følsomt indhold i notifikationen er skjult"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Af sikkerhedsmæssige årsager vises appindhold ikke ved skærmdeling"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 949150a..cd637e1 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Vertrauliches Profil"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Gemeinsam genutzt"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Vertrauliche Benachrichtigungsinhalte ausgeblendet"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App-Inhalte werden aus Sicherheitsgründen bei der Bildschirmfreigabe ausgeblendet"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 11dac6c..09ecc2c 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Ιδιωτικός χώρος"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Κλώνος"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Κοινόχρηστο"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Έγινε απόκρυψη της ειδοποίησης ευαίσθητου περιεχομένου"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Για λόγους ασφάλειας, έγινε απόκρυψη του περιεχομένου της εφαρμογής από την κοινή χρήση οθόνης"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 1effe7c..20e391d 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Private space"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Communal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitive notification content hidden"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 4abc581..7f33f6a 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Private space"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Communal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitive notification content hidden"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 425d88c..b7fedbe 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Private space"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Communal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitive notification content hidden"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 56ff14a..b83a7cf 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Private space"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Communal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitive notification content hidden"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index e599c03..d358e5e 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‎‏‎Private space‎‏‎‎‏‎"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎Clone‎‏‎‎‏‎"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‎Communal‎‏‎‎‏‎"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‏‎‏‎‎‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‎‎Sensitive notification content hidden‎‏‎‎‏‎"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‏‏‎‎‏‎‎‏‎App content hidden from screen share for security‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index f5859bf..45ea7ee 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espacio privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Compartido"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Se ocultó contenido sensible de la notificación"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Se ocultó el contenido de la app durante el uso compartido de la pantalla por motivos de seguridad"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index d8b1f59..19c5f84 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -273,7 +273,7 @@
     <string name="bugreport_option_full_title" msgid="7681035745950045690">"Informe completo"</string>
     <string name="bugreport_option_full_summary" msgid="1975130009258435885">"Utiliza esta opción para que la interferencia del sistema sea mínima cuando el dispositivo no responda o funcione demasiado lento, o bien cuando necesites todas las secciones del informe. No permite introducir más detalles ni hacer más capturas de pantalla."</string>
     <string name="bugreport_countdown" msgid="6418620521782120755">"{count,plural, =1{La captura de pantalla para el informe de errores se hará en # segundo.}many{La captura de pantalla para el informe de errores se hará en # segundos.}other{La captura de pantalla para el informe de errores se hará en # segundos.}}"</string>
-    <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Se ha hecho la captura de pantalla con el informe de errores"</string>
+    <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Captura de pantalla generada con el informe de errores"</string>
     <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"No se ha podido hacer la captura de pantalla con el informe de errores"</string>
     <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo Silencio"</string>
     <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"El sonido está desactivado. Activar"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espacio privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Común"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Contenido sensible de la notificación oculto"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contenido de la aplicación oculto en pantalla compartida por motivos de seguridad"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 77e665a..46c7341 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privaatne ruum"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Kloon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Ühine"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Märguande delikaatne sisu peideti"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Rakenduse sisu on ekraani jagamises turvalisuse huvides peidetud"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 9bf2a4d..3c47f68 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Eremu pribatua"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klona"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Partekatua"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Jakinarazpenaren kontuzko edukia ezkutatu da"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Aplikazioko edukia ezkutatu egin da pantaila partekatzeko eginbidetik, segurtasuna bermatzeko"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 308260f..3c50b07 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"فضای خصوصی"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"همسانه‌سازی"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"همگانی"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"محتوای اعلان حساس پنهان شده است"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"به‌دلایل امنیتی، محتوای برنامه از دید هم‌رسانی صفحه‌نمایش پنهان شد"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index db579f2..0e159f2 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Yksityinen tila"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klooni"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Yhteinen"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Arkaluontoisen ilmoituksen sisältö piilotettu"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sovelluksen sisältö piilotettu näytön jakamiselta turvallisuussyistä"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 8888005..7fca5e6 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -717,7 +717,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"Déplacez le téléphone vers la gauche"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"Déplacez le téléphone vers la droite"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Veuillez regarder plus directement votre appareil."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Visage non détecté. Tenez votre téléphone à hauteur des yeux."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Visage non détecté. Tenez le téléphone au niveau des yeux."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Trop de mouvement. Tenez le téléphone immobile."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Veuillez inscrire votre visage à nouveau."</string>
     <string name="face_acquired_too_different" msgid="4505278456634706967">"Visage non reconnu. Réessayez."</string>
@@ -1434,7 +1434,7 @@
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Touchez pour sélectionner la langue et la configuration du clavier"</string>
     <string name="fast_scroll_alphabet" msgid="8854435958703888376">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="2529539945421557329">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
-    <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Afficher par-dessus les autres applications"</string>
+    <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Afficher par-dessus les autres applis"</string>
     <string name="alert_windows_notification_channel_name" msgid="3437528564303192620">"<xliff:g id="NAME">%s</xliff:g> affiche du contenu par-dessus d\'autres applications"</string>
     <string name="alert_windows_notification_title" msgid="6331662751095228536">"<xliff:g id="NAME">%s</xliff:g> aff. contenu par-dessus applis"</string>
     <string name="alert_windows_notification_message" msgid="6538171456970725333">"Si vous ne voulez pas que <xliff:g id="NAME">%s</xliff:g> utilise cette fonctionnalités, touchez l\'écran pour ouvrir les paramètres, puis désactivez-la."</string>
@@ -1910,7 +1910,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Le mode Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels, certaines fonctionnalités et certaines connexions réseau."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Le mode Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels, certaines fonctionnalités et certaines connexions réseau."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Pour aider à diminuer l\'utilisation des données, la fonctionnalité Économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Une application que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Pour aider à diminuer l\'utilisation des données, la fonctionnalité Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Une appli que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Pendant une minute (jusqu\'à {formattedTime})}one{Pendant # minute (jusqu\'à {formattedTime})}many{Pendant # minutes (jusqu\'à {formattedTime})}other{Pendant # minutes (jusqu\'à {formattedTime})}}"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espace privé"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Commun"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Le contenu confidentiel de la notification est masqué"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Le contenu de l\'application est masqué du Partage d\'écran par mesure de sécurité"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 4c2835d..e08f426 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1910,7 +1910,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"L\'économiseur de batterie active le thème sombre et limite ou désactive l\'activité en arrière-plan ainsi que certains effets visuels, fonctionnalités et connexions réseau."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan ainsi que certains effets visuels, fonctionnalités et connexions réseau."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé dessus."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, il est possible que les images ne s\'afficheront pas tant que vous n\'aurez pas appuyé dessus."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'Économiseur de données ?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Pendant 1 minute (jusqu\'à {formattedTime})}one{Pendant # minute (jusqu\'à {formattedTime})}many{Pendant # minutes (jusqu\'à {formattedTime})}other{Pendant # minutes (jusqu\'à {formattedTime})}}"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espace privé"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Commun"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Le contenu sensible de la notification a été masqué"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Le contenu de l\'appli est masqué lors du partage d\'écran pour des raisons de sécurité"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index cb8e804..1eec828 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -329,7 +329,7 @@
     <string name="permgroupdesc_storage" msgid="5378659041354582769">"acceder a ficheiros no teu dispositivo"</string>
     <string name="permgrouplab_readMediaAural" msgid="1858331312624942053">"Música e audio"</string>
     <string name="permgroupdesc_readMediaAural" msgid="7565467343667089595">"acceder a música e audio do dispositivo"</string>
-    <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"fotos e vídeos"</string>
+    <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Fotos e vídeos"</string>
     <string name="permgroupdesc_readMediaVisual" msgid="4080463241903508688">"acceder a fotos e vídeos do dispositivo"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"Micrófono"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"gravar audio"</string>
@@ -346,7 +346,7 @@
     <string name="permgrouplab_sensors" msgid="9134046949784064495">"Sensores corporais"</string>
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder aos datos dos sensores sobre as túas constantes vitais"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificacións"</string>
-    <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostra notificacións"</string>
+    <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificacións"</string>
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar contido da ventá"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar a exploración táctil"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espazo privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clonado"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Compartido"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Contido confidencial da notificación oculto"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Por motivos de seguranza, ocultouse o contido da aplicación para que no se mostre na pantalla compartida"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 55032c9..303f001 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ખાનગી સ્પેસ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ક્લોન"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"કૉમ્યુનલ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"સંવેદનશીલ માહિતીવાળા નોટિફિકેશનનું કન્ટેન્ટ છુપાવ્યું"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"સુરક્ષા માટે સ્ક્રીન શેર કરતી વખતે ઍપનું કન્ટેન્ટ છુપાવેલું છે"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index e47715a..14d2bf7 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"प्राइवेट स्पेस"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"क्लोन"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"कम्यूनिटी"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"संवेदनशील जानकारी वाली सूचना का कॉन्टेंट छिपा है"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रीन शेयर करने के दौरान सुरक्षा के लिए, ऐप्लिकेशन का कॉन्टेंट छिपाया गया"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 0b9b662..e69a59d 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1413,7 +1413,7 @@
     <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je način testnog okvira"</string>
     <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Vratite na tvorničke postavke da biste onemogućili način testnog okvira."</string>
     <string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola omogućena"</string>
-    <string name="console_running_notification_message" msgid="7892751888125174039">"Izvedba je otežana. Provjerite početni program za pokretanje da biste onemogućili konzolu."</string>
+    <string name="console_running_notification_message" msgid="7892751888125174039">"Izvedba je otežana. Provjerite pokretač operativnog sustava da biste onemogućili konzolu."</string>
     <string name="mte_override_notification_title" msgid="4731115381962792944">"Omogućen je eksperimentalni MTE"</string>
     <string name="mte_override_notification_message" msgid="2441170442725738942">"To može utjecati na izvedbu i stabilnost. Ponovno pokrenite da biste onemogućili. Ako je omogućeno pomoću arm64.memtag.bootctl, prethodno postavite na \"none\"."</string>
     <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"Tekućina ili prljavština u USB priključku"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privatni prostor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Zajedničko"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Skriven je osjetljiv sadržaj obavijesti"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije sakriven je od dijeljenja zaslona radi sigurnosti"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index de6777e..f1ff236 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privát terület"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klón"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Közös"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Bizalmas értesítéstartalom elrejtve"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"A biztonság érdekében a képernyőmegosztástól elrejtett alkalmazástartalom"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 58331c7..40812068 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Մասնավոր տարածք"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Կլոն"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Ընդհանուր"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Ծանուցման զգայուն բովանդակությունը թաքցված է"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Անվտանգության նկատառումներից ելնելով՝ հավելվածի բովանդակությունը թաքցվել է էկրանի ցուցադրումից"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index eeaf2b6..866e946 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Ruang privasi"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Umum"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Konten notifikasi sensitif disembunyikan"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Konten aplikasi disembunyikan dari berbagi layar untuk alasan keamanan"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 7e68a06..76ba64b 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Leynirými"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Afrit"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Sameiginlegt"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Viðkvæmt tilkynningaefni falið"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Efni forrits falið í skjádeilingu af öryggisástæðum"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 037e148..5e87dce 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -202,10 +202,8 @@
     <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Il tuo profilo di lavoro non è più disponibile sul dispositivo"</string>
     <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Troppi tentativi di inserimento della password"</string>
     <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'amministratore ha abbandonato il dispositivo per uso personale"</string>
-    <!-- no translation found for private_space_deleted_by_admin (1484365588862066939) -->
-    <skip />
-    <!-- no translation found for private_space_deleted_by_admin_details (7007781735201818689) -->
-    <skip />
+    <string name="private_space_deleted_by_admin" msgid="1484365588862066939">"Spazio privato rimosso"</string>
+    <string name="private_space_deleted_by_admin_details" msgid="7007781735201818689">"La tua organizzazione non consente spazi privati su questo dispositivo gestito."</string>
     <string name="network_logging_notification_title" msgid="554983187553845004">"Il dispositivo è gestito"</string>
     <string name="network_logging_notification_text" msgid="1327373071132562512">"Questo dispositivo è gestito dalla tua organizzazione, che potrebbe monitorare il traffico di rete. Tocca per i dettagli."</string>
     <string name="location_changed_notification_title" msgid="3620158742816699316">"Le app possono accedere alla tua posizione"</string>
@@ -2039,7 +2037,7 @@
     <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Tocca per visualizzare i file"</string>
     <string name="pin_target" msgid="8036028973110156895">"Fissa"</string>
     <string name="pin_specific_target" msgid="7824671240625957415">"Blocca <xliff:g id="LABEL">%1$s</xliff:g>"</string>
-    <string name="unpin_target" msgid="3963318576590204447">"Sgancia"</string>
+    <string name="unpin_target" msgid="3963318576590204447">"Sblocca"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"Sblocca <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="app_info" msgid="6113278084877079851">"Informazioni app"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
@@ -2410,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Spazio privato"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Condiviso"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Contenuti sensibili della notifica nascosti"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contenuti dell\'app nascosti dalla condivisione schermo per sicurezza"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index a1e72da..439565d 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"המרחב הפרטי"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"שכפול"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"שיתופי"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"יש תוכן רגיש בהתראה שהוסתר"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"תוכן האפליקציה מוסתר משיתוף המסך מטעמי אבטחה"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 04e47a7..fcaef68 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -716,7 +716,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"スマートフォンを左に動かしてください"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"スマートフォンを右に動かしてください"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"もっとまっすぐデバイスに顔を向けてください。"</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"顔を確認できません。スマートフォンを目の高さに合わせます。"</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"顔を確認できません。目の高さに合わせてください"</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"あまり動かさないでください。安定させてください。"</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"顔を登録し直してください。"</string>
     <string name="face_acquired_too_different" msgid="4505278456634706967">"顔を認識できません。もう一度お試しください。"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"プライベート スペース"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"複製"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"共用"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"プライベートな通知内容は表示されません"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"セキュリティ上、画面共有ではアプリの内容は非表示となります"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 4f87855..2b98c58 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -161,7 +161,7 @@
     <string name="scNullCipherIssueEncryptedTitle" msgid="234717016411824969">"დაკავშირებულია დაშიფრულ ქსელთან <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</string>
     <string name="scNullCipherIssueEncryptedSummary" msgid="8577510708842150475">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ბარათის კავშირი ახლა ბევრად უსაფრთხო გახდა"</string>
     <string name="scNullCipherIssueNonEncryptedTitle" msgid="3978071464929453915">"დაკავშირებულია დაუშიფრავ ქსელთან"</string>
-    <string name="scNullCipherIssueNonEncryptedSummaryNotification" msgid="7386936934128110388">"ზარები, შეტყობინებები და მონაცემები ამჟამად უფრო მოწყვლადია თქვენი <xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ბარათით სარგებლობისას"</string>
+    <string name="scNullCipherIssueNonEncryptedSummaryNotification" msgid="7386936934128110388">"ზარები, შეტყობინებები/მონაცემები უფრო მოწყვლადია <xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ბარათის გამოყენებისას"</string>
     <string name="scNullCipherIssueNonEncryptedSummary" msgid="5093428974513703253">"ზარები, შეტყობინებები და მონაცემები ამჟამად უფრო მოწყვლადია <xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ბარათით სარგებლობისას.\n\nკავშირის ხელახლა დაშიფვრის შემთხვევაში კიდევ ერთ შეტყობინებას მიიღებთ."</string>
     <string name="scNullCipherIssueActionSettings" msgid="5888857706424639946">"მობილური ქსელის უსაფრთოების პარამეტრები"</string>
     <string name="scNullCipherIssueActionLearnMore" msgid="7896642417214757769">"შეიტყვეთ მეტი"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"კერძო სივრცე"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"კლონის შექმნა"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"საერთო"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"სენსიტიური შეტყობინების კონტენტი დამალულია"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ეკრანის გაზიარებიდან აპის კონტენტი დამალულია უსაფრთხოების მიზნით"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index f36d9fc..6e9eb12 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Құпия кеңістік"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клон"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Жалпы"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Хабарландырудың құпия контенті жасырылған."</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Қауіпсіздік мақсатында қолданба контенті экранды көрсету кезінде жасырылды."</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 195eb13..70f59c1 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"លំហ​ឯកជន"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ក្លូន"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ទូទៅ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"បានលាក់ខ្លឹមសារជូនដំណឹងដែលមានលក្ខណៈរសើប"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"បានលាក់ខ្លឹមសារកម្មវិធីពីការបង្ហាញ​អេក្រង់ដើម្បីសុវត្ថិភាព"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 073e448..f22c43a 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ಪ್ರೈವೆಟ್ ಸ್ಪೇಸ್"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ಕ್ಲೋನ್"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ಸಮುದಾಯ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"ಸೂಕ್ಷ್ಮ ನೋಟಿಫಿಕೇಶನ್ ಕಂಟೆಂಟ್ ಅನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ಭದ್ರತೆಗಾಗಿ ಸ್ಕ್ರೀನ್‌‌ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯಲ್ಲಿ ಆ್ಯಪ್ ಕಂಟೆಂಟ್‌ ಅನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index bbe8aef..99b8715 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"비공개 스페이스"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"클론"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"공동"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"민감한 알림 콘텐츠 숨김"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"보안을 위해 화면 공유에서 앱 콘텐츠가 숨겨집니다."</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 9686a14..427010b 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Жеке мейкиндик"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клон"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Жалпы"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Купуя билдирменин мазмуну жашырылган"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Коопсуздук үчүн колдонмодогу контент бөлүшүлгөн экрандан жашырылды"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index b6bd4b2..4682bb0 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ພື້ນທີ່ສ່ວນບຸກຄົນ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ໂຄລນ"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ສ່ວນກາງ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"ເນື້ອຫາການແຈ້ງເຕືອນທີ່ລະອຽດອ່ອນເຊື່ອງຢູ່"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ເນື້ອຫາແອັບຖືກເຊື່ອງໄວ້ຈາກການແບ່ງປັນໜ້າຈໍເພື່ອຄວາມປອດໄພ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 2b4f370..6fbb9b8 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privati erdvė"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klonuoti"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Bendruomenės"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Neskelbtinos informacijos pranešimo turinys paslėptas"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Programos turinys paslėptas bendrinant ekraną saugumo sumetimais"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 3669f04..0bea4ff 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privātā telpa"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klons"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Kopīgs"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitīvs paziņojuma saturs ir paslēpts"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Drošības nolūkos lietotnes saturs kopīgotajā ekrānā ir paslēpts"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 8902619..d7a6dd2 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Приватен простор"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клониран профил"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Профил на заедницата"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Содржината на чувствителните известувања е скриена"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Од безбедносни причини, содржините на апликацијата се скриени од споделувањето екран"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 005d7cb..4023336 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"സ്വകാര്യ സ്പേസ്"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ക്ലോൺ ചെയ്യുക"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"കമ്മ്യൂണൽ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"സൂക്ഷ്‌മമായി കൈകാര്യം ചെയ്യേണ്ട അറിയിപ്പ് ഉള്ളടക്കം മറച്ചിരിക്കുന്നു"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ആപ്പ് ഉള്ളടക്കം, അതിന്റെ സുരക്ഷയ്ക്കായി സ്ക്രീൻ പങ്കിടലിൽ നിന്ന് മറച്ചിരിക്കുന്നു"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index ddbeb35..9aa18e2 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -81,10 +81,10 @@
     <string name="RestrictedOnAllVoiceTitle" msgid="3982069078579103087">"Дуут үйлчилгээ эсвэл яаралтай дуудлага алга"</string>
     <string name="RestrictedStateContent" msgid="7693575344608618926">"Үйлчилгээг таны оператор компани түр хугацаанд унтраасан"</string>
     <string name="RestrictedStateContentMsimTemplate" msgid="5228235722511044687">"<xliff:g id="SIMNUMBER">%d</xliff:g> SIM-н оператор компаниас түр унтраасан"</string>
-    <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Мобайл сүлжээнд холбогдох боломжгүй байна"</string>
+    <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Хөдөлгөөнт холбооны сүлжээнд холбогдох боломжгүй байна"</string>
     <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Сонгосон сүлжээг өөрчлөхөөр оролдоно уу. Өөрчлөхийн тулд товшино уу."</string>
     <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Яаралтай дуудлага хийх боломжгүй"</string>
-    <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Яаралтай дуудлагуудад мобайл сүлжээ шаардлагатай"</string>
+    <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Яаралтай дуудлагуудад хөдөлгөөнт холбооны сүлжээ шаардлагатай"</string>
     <string name="notification_channel_network_alert" msgid="4788053066033851841">"Сануулга"</string>
     <string name="notification_channel_call_forward" msgid="8230490317314272406">"Дуудлага шилжүүлэх"</string>
     <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Яаралтай дуудлага хийх горим"</string>
@@ -143,7 +143,7 @@
     <string name="wfcSpnFormat_wifi_call" msgid="434016592539090004">"Wi-Fi дуудлага"</string>
     <string name="wifi_calling_off_summary" msgid="5626710010766902560">"Идэвхгүй"</string>
     <string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Wi-Fi-р залгах"</string>
-    <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Мобайл сүлжээгээр дуудлага хийх"</string>
+    <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Хөдөлгөөнт холбооны сүлжээгээр дуудлага хийх"</string>
     <string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"Зөвхөн Wi-Fi"</string>
     <!-- no translation found for crossSimFormat_spn (9125246077491634262) -->
     <skip />
@@ -153,7 +153,7 @@
     <string name="cfTemplateForwardedTime" msgid="735042369233323609">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> секундын дараа"</string>
     <string name="cfTemplateRegistered" msgid="5619930473441550596">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string>
     <string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string>
-    <string name="scCellularNetworkSecurityTitle" msgid="7752521808690294384">"Мобайл сүлжээний аюулгүй байдал"</string>
+    <string name="scCellularNetworkSecurityTitle" msgid="7752521808690294384">"Хөдөлгөөнт холбооны сүлжээний аюулгүй байдал"</string>
     <string name="scCellularNetworkSecuritySummary" msgid="7042036754550545005">"Шифрлэлт, шифрлэгдээгүй сүлжээний мэдэгдэл"</string>
     <string name="scIdentifierDisclosureIssueTitle" msgid="2898888825129970328">"Төхөөрөмжийн ID-д хандсан"</string>
     <string name="scIdentifierDisclosureIssueSummaryNotification" msgid="3699930821270580416">"<xliff:g id="DISCLOSURE_TIME">%1$s</xliff:g>-д таныг <xliff:g id="DISCLOSURE_NETWORK">%2$s</xliff:g> SIM-ээ ашиглаж байхад ойролцоох сүлжээ таны төхөөрөмжийн цор ганц дугаарыг (IMSI эсвэл IMEI) бүртгэсэн."</string>
@@ -163,7 +163,7 @@
     <string name="scNullCipherIssueNonEncryptedTitle" msgid="3978071464929453915">"Шифрлэгдээгүй сүлжээнд холбогдсон"</string>
     <string name="scNullCipherIssueNonEncryptedSummaryNotification" msgid="7386936934128110388">"Таныг <xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ээ ашиглаж байхад дуудлага, мессеж, өгөгдөл одоогоор илүү эмзэг байна."</string>
     <string name="scNullCipherIssueNonEncryptedSummary" msgid="5093428974513703253">"Таныг <xliff:g id="NETWORK_NAME">%1$s</xliff:g> SIM-ээ ашиглаж байхад дуудлага, мессеж, өгөгдөл одоогоор илүү эмзэг байна.\n\nТаны холболтыг дахин шифрлэсэн үед та өөр мэдэгдэл авна."</string>
-    <string name="scNullCipherIssueActionSettings" msgid="5888857706424639946">"Мобайл сүлжээний аюулгүй байдлын тохиргоо"</string>
+    <string name="scNullCipherIssueActionSettings" msgid="5888857706424639946">"Хөдөлгөөнт холбооны сүлжээний аюулгүй байдлын тохиргоо"</string>
     <string name="scNullCipherIssueActionLearnMore" msgid="7896642417214757769">"Нэмэлт мэдээлэл авах"</string>
     <string name="scNullCipherIssueActionGotIt" msgid="8747796640866585787">"Ойлголоо"</string>
     <string name="fcComplete" msgid="1080909484660507044">"Онцлог код дуусав."</string>
@@ -1338,7 +1338,7 @@
     <skip />
     <string name="wifi_no_internet" msgid="1386911698276448061">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>-д интернэтийн хандалт алга"</string>
     <string name="wifi_no_internet_detailed" msgid="634938444133558942">"Сонголт хийхийн тулд товшино уу"</string>
-    <string name="mobile_no_internet" msgid="4014455157529909781">"Мобайл сүлжээнд интернэт хандалт байхгүй байна"</string>
+    <string name="mobile_no_internet" msgid="4014455157529909781">"Хөдөлгөөнт холбооны сүлжээнд интернэт хандалт байхгүй байна"</string>
     <string name="other_networks_no_internet" msgid="6698711684200067033">"Сүлжээнд интернэт хандалт байхгүй байна"</string>
     <string name="private_dns_broken_detailed" msgid="3709388271074611847">"Хувийн DNS серверт хандах боломжгүй байна"</string>
     <string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> зарим үйлчилгээнд хандах боломжгүй байна"</string>
@@ -1371,10 +1371,10 @@
     <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Байнга зөвшөөрөх"</string>
     <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Хэзээ ч зөвшөөрөхгүй"</string>
     <string name="sim_removed_title" msgid="1349026474932481037">"SIM-г салгасан"</string>
-    <string name="sim_removed_message" msgid="8469588437451533845">"Таныг хүчинтэй SIM-р дахин эхлүүлэх хүртэл мобайл сүлжээ боломжгүй байх болно."</string>
+    <string name="sim_removed_message" msgid="8469588437451533845">"Таныг хүчинтэй SIM-р дахин эхлүүлэх хүртэл хөдөлгөөнт холбооны сүлжээ боломжгүй байх болно."</string>
     <string name="sim_done_button" msgid="6464250841528410598">"Дуусгах"</string>
     <string name="sim_added_title" msgid="2976783426741012468">"SIM нэмсэн"</string>
-    <string name="sim_added_message" msgid="6602906609509958680">"Мобайл сүлжээнд хандах бол төхөөрөмжөө дахин асаан уу."</string>
+    <string name="sim_added_message" msgid="6602906609509958680">"Хөдөлгөөнт холбооны сүлжээнд хандах бол төхөөрөмжөө дахин асаан уу."</string>
     <string name="sim_restart_button" msgid="8481803851341190038">"Дахин эхлүүлэх"</string>
     <string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Мобайл үйлчилгээг идэвхжүүлэх"</string>
     <string name="install_carrier_app_notification_text" msgid="2781317581274192728">"Шинэ SIM-ээ идэвхжүүлэхийн тулд үүрэн холбооны компанийн аппыг татаж авна уу"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Хаалттай орон зай"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клон"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Нийтийн"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Эмзэг мэдэгдлийн контентыг нуусан"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Аюулгүй байдлын улмаас аппын контентыг дэлгэц хуваалцахаас нуусан"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 77a58af..a115e2c 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"खाजगी स्पेस"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"क्लोन"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"सामुदायिक"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"संवेदनशील नोटिफिकेशनचा आशय लपवलेला आहे"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रीन शेअर करताना सुरक्षेसाठी अ‍ॅपमधील आशय लपवला आहे"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 96691f6..2fa571c 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Ruang persendirian"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Umum"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Kandungan pemberitahuan yang sensitif disembunyikan"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Kandungan apl disembunyikan daripada perkongsian skrin untuk keselamatan"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index c1b7822..364a7b1 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"သီးသန့်နေရာ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ပုံတူပွားရန်"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"အများသုံး"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"သတိထားရမည့် အကြောင်းကြားချက်ပါ အချက်အလက်ကို ဖျောက်ထားသည်"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"အက်ပ်အကြောင်းအရာသည် လုံခြုံရေးအတွက် မျက်နှာပြင် မျှဝေခြင်းမှ ဖျောက်ထားသည်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 23f675e..e2de428 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -342,7 +342,7 @@
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Samtalelogger"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"lese og skrive samtaleloggen"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
-    <string name="permgroupdesc_phone" msgid="270048070781478204">"ring og administrer anrop"</string>
+    <string name="permgroupdesc_phone" msgid="270048070781478204">"ringe og administrere anrop"</string>
     <string name="permgrouplab_sensors" msgid="9134046949784064495">"Kroppssensorer"</string>
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få tilgang til sensordata om de vitale tegnene dine"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Varsler"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privat område"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Felles"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Sensitivt varselinnhold er skjult"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Av sikkerhetsgrunner er appinnholdet skjult for skjermdelingen"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 99dd0e4..8d5f560 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -1930,7 +1930,7 @@
     <string name="zen_mode_feature_name" msgid="3785547207263754500">"अवरोध नपुर्याउँनुहोस्"</string>
     <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"डाउनटाइम"</string>
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"हरेक हप्तादिनको राति"</string>
-    <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"शनिबार"</string>
+    <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"शनिवार"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"कार्यक्रम"</string>
     <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"निदाएका बेला"</string>
     <string name="zen_mode_implicit_trigger_description" msgid="5714956693073007111">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले व्यवस्थापन गरेको"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"निजी स्पेस"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"क्लोन"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"सामुदायिक"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"संवेदनशील सूचनासम्बन्धी सामग्री लुकाइएको छ"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रिन सेयर गर्दा सुरक्षाका लागि एपमा भएको सामग्री लुकाइएको छ"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 0b2c507..5bc6c44 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privégedeelte"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Kloon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Gemeenschappelijk"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Content van gevoelige meldingen verborgen"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App-content verborgen voor scherm delen vanwege beveiligingsrisico\'s"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index f3cd70e..4c7868d 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -1751,7 +1751,7 @@
     <string name="color_correction_feature_name" msgid="7975133554160979214">"ରଙ୍ଗ ସଂଶୋଧନ"</string>
     <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ଏକ-ହାତ ମୋଡ୍"</string>
     <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତ୍ୟଧିକ ଡିମ"</string>
-    <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ହିଅରିଂ ଡିଭାଇସଗୁଡ଼ିକ"</string>
+    <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବନ୍ଦ ହୋଇଛି।"</string>
     <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ଭଲ୍ୟୁମ କୀ\'ଗୁଡ଼ିକୁ ରିଲିଜ କରନ୍ତୁ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g>କୁ ଚାଲୁ କରିବା ପାଇଁ ଉଭୟ ଭଲ୍ୟୁମ କୀ\'କୁ ପୁଣି 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇ ଧରି ରଖନ୍ତୁ।"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ପ୍ରାଇଭେଟ ସ୍ପେସ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"କ୍ଲୋନ"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"କମ୍ୟୁନାଲ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"ସମ୍ୱେଦନଶୀଳ ବିଜ୍ଞପ୍ତି ବିଷୟବସ୍ତୁକୁ ଲୁଚାଯାଇଛି"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ସୁରକ୍ଷା ପାଇଁ ସ୍କ୍ରିନ ସେୟାରରୁ ଆପ ବିଷୟବସ୍ତୁକୁ ଲୁଚାଯାଇଛି"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 60d8737..38780b6 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ਕਲੋਨ"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ਭਾਈਚਾਰਕ"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"ਲੁਕੀ ਹੋਈ ਸੰਵੇਦਨਸ਼ੀਲ ਸੂਚਨਾ ਸਮੱਗਰੀ"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਸੁਰੱਖਿਆ ਲਈ ਸਕ੍ਰੀਨ ਸਾਂਝਾਕਰਨ ਤੋਂ ਲੁਕਾਇਆ ਗਿਆ ਹੈ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index ec5fee7..95e1a30 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Przestrzeń prywatna"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Wspólny"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Treść poufnego powiadomienia została ukryta"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Ze względów bezpieczeństwa zawartość aplikacji jest niewidoczna podczas udostępniania ekranu"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 7067a89..c9d36b1 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1910,7 +1910,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você está usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não apareçam até você tocar nelas."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando em determinado momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não apareçam até você tocar nelas."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar a Economia de dados?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Por um minuto (até {formattedTime})}one{Por # minuto (até {formattedTime})}many{Por # minutos (até {formattedTime})}other{Por # minutos (até {formattedTime})}}"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espaço privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Público"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Conteúdo de notificação sensível oculto"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo do app oculto no compartilhamento de tela por motivos de segurança"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 6632f85..f1b2bd0 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1434,7 +1434,7 @@
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Toque para selecionar o idioma e o esquema"</string>
     <string name="fast_scroll_alphabet" msgid="8854435958703888376">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="2529539945421557329">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
-    <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Sobrepor a outras apps"</string>
+    <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Sobreposição a outras apps"</string>
     <string name="alert_windows_notification_channel_name" msgid="3437528564303192620">"A app <xliff:g id="NAME">%s</xliff:g> sobrepõe-se a outras aplicações"</string>
     <string name="alert_windows_notification_title" msgid="6331662751095228536">"O <xliff:g id="NAME">%s</xliff:g> sobrepõe-se a outras app"</string>
     <string name="alert_windows_notification_message" msgid="6538171456970725333">"Se não quer que a app <xliff:g id="NAME">%s</xliff:g> utilize esta funcionalidade, toque para abrir as definições e desative-a."</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espaço privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Comum"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Conteúdo das notificações sensíveis ocultado"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo da app ocultado da partilha de ecrã por motivos de segurança"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 7067a89..c9d36b1 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1910,7 +1910,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você está usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não apareçam até você tocar nelas."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando em determinado momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não apareçam até você tocar nelas."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar a Economia de dados?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Por um minuto (até {formattedTime})}one{Por # minuto (até {formattedTime})}many{Por # minutos (até {formattedTime})}other{Por # minutos (até {formattedTime})}}"</string>
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Espaço privado"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Público"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Conteúdo de notificação sensível oculto"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo do app oculto no compartilhamento de tela por motivos de segurança"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index bf82cd8c..e14aec7 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Spațiu privat"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clonă"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Comun"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Conținutul sensibil din notificări a fost ascuns"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conținutul aplicației este ascuns de permiterea accesului la ecran din motive de securitate"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index c1900a8..79b0daa 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Частное пространство"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клонированный"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Совместный"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Конфиденциальная информация в уведомлении скрыта"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Содержимое приложения исключено из демонстрации экрана в целях безопасности."</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index f216ce2..1e69e0b 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"රහසිගත අවකාශය"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"ක්ලෝන කරන්න"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"වාර්ගික"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"සංවේදී දැනුම්දීම් අන්තර්ගතය සැඟවී ඇත"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ආරක්ෂාව සඳහා යෙදුම් අන්තර්ගතය තිරය බෙදා ගැනීමෙන් සඟවා ඇත"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 9c2a875..c7ca9f4 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Súkromný priestor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Spoločný"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Obsah citlivého upozornenia je skrytý"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Obsah aplikácie bol na účely zabezpečenia skrytý v zdieľaní obrazovky"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index b3530e7..4f23a54 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Zasebni prostor"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Skupno"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Občutljiva vsebina obvestila je bila skrita"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Pri deljenju zaslona je vsebina aplikacije skrita zaradi varnosti"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 5f9a642..c49402b 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -201,10 +201,8 @@
     <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profili yt i punës nuk është më i disponueshëm në këtë pajisje"</string>
     <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Shumë përpjekje për fjalëkalimin"</string>
     <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administratori e refuzoi pajisjen për përdorim personal"</string>
-    <!-- no translation found for private_space_deleted_by_admin (1484365588862066939) -->
-    <skip />
-    <!-- no translation found for private_space_deleted_by_admin_details (7007781735201818689) -->
-    <skip />
+    <string name="private_space_deleted_by_admin" msgid="1484365588862066939">"Hapësira private u hoq"</string>
+    <string name="private_space_deleted_by_admin_details" msgid="7007781735201818689">"Organizata jote nuk i lejon hapësirat private në këtë pajisje të menaxhuar."</string>
     <string name="network_logging_notification_title" msgid="554983187553845004">"Pajisja është e menaxhuar"</string>
     <string name="network_logging_notification_text" msgid="1327373071132562512">"Organizata jote e menaxhon këtë pajisje dhe mund të monitorojë trafikun e rrjetit. Trokit për detaje."</string>
     <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacionet mund të kenë qasje te vendndodhja jote"</string>
@@ -2409,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Hapësira private"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"I përbashkët"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Përmbajtjet delikate të njoftimeve janë fshehur"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Përmbajtja e aplikacionit është fshehur nga ndarja e ekranit për arsye sigurie"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 301fe24..2b3f75a 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -2408,6 +2408,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Приватан простор"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Клонирано"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Заједничко"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Осетљив садржај обавештења је скривен"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Садржај апликације је скривен за дељење садржаја екрана због безбедности"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index b3c2063..2833381 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Privat område"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klona"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Allmän"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Känsligt aviseringsinnehåll dolt"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Av säkerhetsskäl döljs appinnehållet vid skärmdelning"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index f15796e..d3af99f 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Sehemu ya faragha"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Nakala"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Wasifu wa pamoja"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Maudhui nyeti kwenye arifa yamefichwa"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Maudhui ya programu yamefichwa ili yasionekane kwenye skrini ya pamoja kwa sababu za kiusalama"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index f615965..37abcef 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ரகசிய இடம்"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"குளோன்"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"பொது"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"உணர்வுபூர்வமான அறிவிப்பு உள்ளடக்கம் மறைக்கப்பட்டது"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"பாதுகாப்பிற்காக, திரைப் பகிர்வில் இருந்து ஆப்ஸ் உள்ளடக்கம் மறைக்கப்பட்டுள்ளது"</string>
@@ -2416,10 +2418,8 @@
     <string name="satellite_notification_how_it_works" msgid="3132069321977520519">"இது செயல்படும் விதம்"</string>
     <string name="unarchival_session_app_label" msgid="6811856981546348205">"நிலுவையிலுள்ளது..."</string>
     <string name="fingerprint_dangling_notification_title" msgid="7362075195588639989">"கைரேகை அன்லாக் அம்சத்தை மீண்டும் அமையுங்கள்"</string>
-    <!-- no translation found for fingerprint_dangling_notification_msg_1 (8517140433796229725) -->
-    <skip />
-    <!-- no translation found for fingerprint_dangling_notification_msg_2 (7578829498452127613) -->
-    <skip />
+    <string name="fingerprint_dangling_notification_msg_1" msgid="8517140433796229725">"<xliff:g id="FINGERPRINT">%s</xliff:g> சரியாகச் செயல்படவில்லை என்பதால் அது நீக்கப்பட்டது"</string>
+    <string name="fingerprint_dangling_notification_msg_2" msgid="7578829498452127613">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> மற்றும் <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> சரியாகச் செயல்படவில்லை என்பதால் அவை நீக்கப்பட்டன"</string>
     <string name="fingerprint_dangling_notification_msg_all_deleted_1" msgid="2927018569542316055">"<xliff:g id="FINGERPRINT">%s</xliff:g> சரியாகச் செயல்படவில்லை என்பதால் அது நீக்கபட்டது. கைரேகை மூலம் உங்கள் மொபைலை அன்லாக் செய்ய அதை மீண்டும் அமையுங்கள்."</string>
     <string name="fingerprint_dangling_notification_msg_all_deleted_2" msgid="6897989352716156176">"<xliff:g id="FINGERPRINT_0">%1$s</xliff:g> மற்றும் <xliff:g id="FINGERPRINT_1">%2$s</xliff:g> சரியாகச் செயல்படவில்லை என்பதால் அவை நீக்கப்பட்டன. கைரேகை மூலம் உங்கள் மொபைலை அன்லாக் செய்ய அவற்றை மீண்டும் அமையுங்கள்."</string>
     <string name="face_dangling_notification_title" msgid="947852541060975473">"\'முகம் காட்டித் திறத்தல்\' அம்சத்தை மீண்டும் அமையுங்கள்"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index a84f6eb..2766248 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -1301,7 +1301,7 @@
     <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"గేమ్‌ను ఎంచుకోండి"</string>
     <string name="heavy_weight_switcher_text" msgid="6814316627367160126">"మెరుగైన పనితీరు పొందడానికి, ఈ గేమ్‌లలో ఒకసారికి ఒక్కటి మాత్రమే తెరవగలరు."</string>
     <string name="old_app_action" msgid="725331621042848590">"<xliff:g id="OLD_APP">%1$s</xliff:g>కి తిరిగి వెళ్లు"</string>
-    <string name="new_app_action" msgid="547772182913269801">"<xliff:g id="NEW_APP">%1$s</xliff:g>ని తెరువు"</string>
+    <string name="new_app_action" msgid="547772182913269801">"<xliff:g id="NEW_APP">%1$s</xliff:g>‌ను తెరవండి"</string>
     <string name="new_app_description" msgid="1958903080400806644">"<xliff:g id="OLD_APP">%1$s</xliff:g> సేవ్ చేయకుండానే మూసివేయబడుతుంది"</string>
     <string name="dump_heap_notification" msgid="5316644945404825032">"<xliff:g id="PROC">%1$s</xliff:g> మెమరీ పరిమితిని మించిపోయింది"</string>
     <string name="dump_heap_ready_notification" msgid="2302452262927390268">"<xliff:g id="PROC">%1$s</xliff:g> హీప్ డంప్ సిద్ధంగా ఉంది"</string>
@@ -1909,7 +1909,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"సరే"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్‌గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్‌లు, నిర్దిష్ట ఫీచర్‌లు, ఇంకా కొన్ని నెట్‌వర్క్ కనెక్షన్‌లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్‌గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్‌లు, నిర్దిష్ట ఫీచర్‌లు, ఇంకా కొన్ని నెట్‌వర్క్ కనెక్షన్‌లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"డేటా వినియోగాన్ని తగ్గించడంలో డేటా సేవర్ సహాయకరంగా ఉంటుంది. బ్యాక్‌గ్రౌండ్‌లో కొన్ని యాప్‌లు డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తోన్న యాప్‌, డేటాను యాక్సెస్ చేయగలదు. కానీ త‌క్కువ సార్లు మాత్ర‌మే అలా చేయవచ్చు. ఉదాహరణకు, మీరు నొక్కే వరకు ఇమేజ్‌లు ప్రదర్శించబడవు."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"డేటా వినియోగాన్ని తగ్గించడంలో డేటా సేవర్ సహాయకరంగా ఉంటుంది. బ్యాక్‌గ్రౌండ్‌లో కొన్ని యాప్‌లు డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తోన్న యాప్‌, డేటాను యాక్సెస్ చేయగలదు. కానీ త‌క్కువ సార్లు మాత్ర‌మే అలా చేయవచ్చు. ఉదాహరణకు, మీరు ఇమేజ్‌ల‌పై ట్యాప్ చేసే వరకు అవి క‌నిపించ‌వు."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"డేటా సేవర్‌ను ఆన్ చేయాలా?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"ఆన్ చేయి"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{ఒక నిమిషానికి ({formattedTime} వరకు)}other{# నిమిషాలకు ({formattedTime} వరకు)}}"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"ప్రైవేట్ స్పేస్"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"క్లోన్"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"కమ్యూనల్"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"గోప్యమైన నోటిఫికేషన్ కంటెంట్ దాచబడింది"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"సెక్యూరిటీ కోసం స్క్రీన్ షేర్ నుండి యాప్ కంటెంట్ దాచబడింది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index e34b526..1f2a091 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"พื้นที่ส่วนตัว"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"โคลน"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"ส่วนกลาง"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"เนื้อหาการแจ้งเตือนที่ละเอียดอ่อนซ่อนอยู่"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ซ่อนเนื้อหาแอปจากการแชร์หน้าจอเพื่อความปลอดภัย"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 4288460..7bce4b7 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Pribadong space"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Communal"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Nakatago ang content ng sensitibong notification"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Nakatago ang content ng app mula sa pagbabahagi ng screen para sa seguridad"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 906ccbc..cbfb770 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Özel alan"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Klon"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Paylaşılan"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Hassas bildirim içerikleri gizlendi"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Uygulama içerikleri, güvenlik nedeniyle ekran paylaşımında gizlendi"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index cc9df2e..5266acd 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -2409,6 +2409,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Приватний простір"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Копія профілю"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Спільний профіль"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Чутливий вміст сповіщення приховано"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"З міркувань безпеки вміст додатка приховано під час показу екрана"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index c0be641..2fe52f8 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"پرائیویٹ اسپیس"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"کلون"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"کمیونل"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"حساس اطلاعی مواد چھپا ہوا ہے"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"سیکیورٹی کے مد نظر ایپ کا مواد اسکرین کے اشتراک سے چھپا ہوا ہے"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 517176b..d40f383 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Maxfiy makon"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Nusxalash"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Umumiy"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Bildirishnomadagi maxfiy axborot berkitildi"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Ekran namoyishida xavfsizlik maqsadida ilova kontenti berkitildi"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index e6db9dd..1051cda 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -306,7 +306,7 @@
     <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Các ứng dụng tiêu thụ pin"</string>
     <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Phóng to"</string>
     <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Việc sử dụng tính năng hỗ trợ tiếp cận"</string>
-    <string name="notification_channel_display" msgid="6905032605735615090">"Màn hình"</string>
+    <string name="notification_channel_display" msgid="6905032605735615090">"Hiển thị"</string>
     <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang sử dụng pin"</string>
     <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"<xliff:g id="NUMBER">%1$d</xliff:g> ứng dụng đang sử dụng pin"</string>
     <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"Nhấn để biết chi tiết về mức sử dụng dữ liệu và pin"</string>
@@ -1098,8 +1098,8 @@
     <string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ở lại trang này"</string>
     <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBạn có chắc chắn muốn điều hướng khỏi trang này không?"</string>
     <string name="autofill_window_title" msgid="4379134104008111961">"Tự động điền với <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
-    <string name="permlab_setAlarm" msgid="1158001610254173567">"đặt báo thức"</string>
-    <string name="permdesc_setAlarm" msgid="2185033720060109640">"Cho phép ứng dụng đặt báo thức trong ứng dụng đồng hồ báo thức được cài đặt. Một số ứng dụng đồng hồ báo thức có thể không thực thi tính  năng này."</string>
+    <string name="permlab_setAlarm" msgid="1158001610254173567">"đặt chuông báo"</string>
+    <string name="permdesc_setAlarm" msgid="2185033720060109640">"Cho phép ứng dụng đặt chuông báo trong ứng dụng đồng hồ được cài đặt. Một số ứng dụng đồng hồ có thể không có năng này."</string>
     <string name="permlab_addVoicemail" msgid="4770245808840814471">"thêm thư thoại"</string>
     <string name="permdesc_addVoicemail" msgid="5470312139820074324">"Cho phép ứng dụng thêm thông báo vào hộp thư thoại đến của bạn."</string>
     <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ bảng nhớ tạm của bạn"</string>
@@ -1329,7 +1329,7 @@
     <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Mặc định (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
     <string name="ringtone_silent" msgid="397111123930141876">"Không"</string>
     <string name="ringtone_picker_title" msgid="667342618626068253">"Nhạc chuông"</string>
-    <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Âm thanh báo thức"</string>
+    <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Âm thanh chuông báo"</string>
     <string name="ringtone_picker_title_notification" msgid="6387191794719608122">"Âm thanh thông báo"</string>
     <string name="ringtone_unknown" msgid="5059495249862816475">"Không xác định"</string>
     <string name="wifi_available_sign_in" msgid="381054692557675237">"Đăng nhập vào mạng Wi-Fi"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Không gian riêng tư"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Nhân bản"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Dùng chung"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Đã ẩn nội dung thông báo nhạy cảm"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Nội dung ứng dụng bị ẩn khỏi tính năng chia sẻ màn hình vì lý do bảo mật"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 4b04940..d16a353 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"私密空间"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"克隆"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"共用"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"已隐藏敏感通知内容"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"为安全起见而在屏幕共享画面中处于隐藏状态的应用内容"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 1aa9c72..672a638 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"私人空間"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"複製"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"共用"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"已隱藏敏感通知內容"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"為安全起見,應用程式內容已從分享螢幕畫面隱藏"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 1c83ee6..8a224ed 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1909,7 +1909,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"確定"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果、特定功能和部分網路連線。"</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果、特定功能和部分網路連線。"</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。目前使用中的單一應用程式仍可存取資料,但存取頻率可能會變低。舉例來說,圖片可能要等到你輕觸後才會顯示。"</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。你使用中的一個應用程式仍可存取資料,但存取頻率可能會變低。舉例來說,圖片可能要等到你輕觸後才會顯示。"</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"要開啟數據節省模式嗎?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"開啟"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{1 分鐘 (直到 {formattedTime})}other{# 分鐘 (直到 {formattedTime})}}"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"私人空間"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"複製"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"共通"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"系統已隱藏含有私密資訊的通知內容"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"為安全起見,分享螢幕畫面未顯示應用程式內容"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 2375442..27bd3c9 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1270,7 +1270,7 @@
     <string name="screen_compat_mode_scale" msgid="8627359598437527726">"Isilinganisi"</string>
     <string name="screen_compat_mode_show" msgid="5080361367584709857">"Bonisa njalo"</string>
     <string name="screen_compat_mode_hint" msgid="4032272159093750908">"Yenza kuphinde kusebenze kuzilungiselelo Zesistimue &gt; Izinhlelo zokusebenza &gt; Okulayishiwe."</string>
-    <string name="unsupported_display_size_message" msgid="7265211375269394699">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli isilungiselelo sosayizi sokubonisa samanje futhi ingasebenza ngokungalindelekile."</string>
+    <string name="unsupported_display_size_message" msgid="7265211375269394699">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli isethingi sosayizi sokubonisa samanje futhi ingasebenza ngokungalindelekile."</string>
     <string name="unsupported_display_size_show" msgid="980129850974919375">"Bonisa njalo"</string>
     <string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> yakhiwe kunguqulo engahambisani ye-Android OS futhi ingaziphatha ngokungalindelekile. Inguqulo ebuyekeziwe yohlelo lokusebenza ingatholakala."</string>
     <string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"Bonisa njalo"</string>
@@ -2407,6 +2407,8 @@
     <string name="accessibility_label_private_profile" msgid="1436459319135548969">"Indawo engasese"</string>
     <string name="accessibility_label_clone_profile" msgid="7579118375042398784">"Yenza i-Clone"</string>
     <string name="accessibility_label_communal_profile" msgid="1437173163111334791">"Okomphakathi"</string>
+    <!-- no translation found for private_space_biometric_prompt_title (5777592909271728154) -->
+    <skip />
     <string name="redacted_notification_message" msgid="1520587845842228816">"Okuqukethwe kwesaziso esizwelayo kufihliwe"</string>
     <string name="redacted_notification_action_title" msgid="6942924973335920935"></string>
     <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Okuqukethwe kwe-app kufihliwe kusuka ekwabelaneni kwesikrini ngokuvikelwa"</string>
diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml
index 575573c..df5cbb1 100644
--- a/core/res/res/values/arrays.xml
+++ b/core/res/res/values/arrays.xml
@@ -37,8 +37,7 @@
         <item>@drawable/fastscroll_label_right_material</item>
         <item>@drawable/fastscroll_thumb_material</item>
         <item>@drawable/fastscroll_track_material</item>
-        <item>@drawable/floating_popup_background_dark</item>
-        <item>@drawable/floating_popup_background_light</item>
+        <item>@drawable/floating_popup_background</item>
         <item>@drawable/ic_ab_back_material</item>
         <item>@drawable/ic_ab_back_material_dark</item>
         <item>@drawable/ic_ab_back_material_light</item>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 405324b..9846b71 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -606,11 +606,9 @@
         <!-- ============ -->
        <eat-comment />
        <attr name="floatingToolbarCloseDrawable" format="reference" />
-       <attr name="floatingToolbarForegroundColor" format="reference|color" />
        <attr name="floatingToolbarItemBackgroundBorderlessDrawable" format="reference" />
        <attr name="floatingToolbarItemBackgroundDrawable" format="reference" />
        <attr name="floatingToolbarOpenDrawable" format="reference" />
-       <attr name="floatingToolbarPopupBackgroundDrawable" format="reference" />
        <attr name="floatingToolbarDividerColor" format="reference" />
 
         <!-- ============ -->
@@ -9702,6 +9700,12 @@
         <attr name="hotSpotY" format="dimension" />
     </declare-styleable>
 
+    <!-- @hide -->
+    <declare-styleable name="PointerIconVectorTheme">
+        <attr name="pointerIconVectorFill" format="color" />
+        <attr name="pointerIconVectorFillInverse" format="color" />
+    </declare-styleable>
+
     <declare-styleable name="Storage">
         <!-- path to mount point for the storage. -->
         <attr name="mountPoint" format="string" />
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 0706b32..4dfe000 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -7030,6 +7030,13 @@
     <!-- Name of the starting activity for DisplayCompat host. specific to automotive.-->
     <string name="config_defaultDisplayCompatHostActivity" translatable="false"></string>
 
+    <!-- Name of the starting activity for launch on private display. specific to automotive.-->
+    <string name="config_defaultLaunchOnPrivateDisplayRouterActivity" translatable="false"></string>
+
+    <!-- Allowlisted activities for launch on a private display. specific to automotive.-->
+    <!--TODO(b/343733988): Remove this allowlisting when GMS is ready with the allowlisting mechanism.-->
+    <string-array name="config_defaultAllowlistLaunchOnPrivateDisplayPackages"></string-array>
+
     <!-- Whether to use file hashes cache in watchlist-->
     <bool name="config_watchlistUseFileHashesCache">false</bool>
 
diff --git a/core/res/res/values/config_telephony.xml b/core/res/res/values/config_telephony.xml
index dcda5d8..fba95a5 100644
--- a/core/res/res/values/config_telephony.xml
+++ b/core/res/res/values/config_telephony.xml
@@ -409,4 +409,10 @@
     <bool name="config_force_phone_globals_creation">false</bool>
     <java-symbol type="bool" name="config_force_phone_globals_creation" />
 
+    <!-- Boolean indicating whether to enable persistent logging via DropBoxManager.
+     Used in persisting SOS/emergency related log messages.
+     -->
+    <bool name="config_dropboxmanager_persistent_logging_enabled">false</bool>
+    <java-symbol type="bool" name="config_dropboxmanager_persistent_logging_enabled" />
+
 </resources>
diff --git a/core/res/res/values/dimens_car.xml b/core/res/res/values/dimens_car.xml
index c5dddb8..99377ff 100644
--- a/core/res/res/values/dimens_car.xml
+++ b/core/res/res/values/dimens_car.xml
@@ -151,4 +151,10 @@
     <dimen name="action_bar_button_margin">@*android:dimen/car_padding_4</dimen>
     <dimen name="action_bar_button_max_width">268dp</dimen>
     <dimen name="action_bar_toggle_internal_padding">@*android:dimen/car_padding_3</dimen>
+
+    <!-- Intent Resolver -->
+    <dimen name="car_activity_resolver_width">706dp</dimen>
+    <dimen name="car_activity_resolver_list_item_height">96dp</dimen>
+    <dimen name="car_activity_resolver_list_max_height">256dp</dimen>
+    <dimen name="car_activity_resolver_corner_radius">24dp</dimen>
 </resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 87141c7..b547a7a 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -6473,6 +6473,9 @@
     <!-- Accessibility label for clone profile user type [CHAR LIMIT=30] -->
     <string name="accessibility_label_communal_profile">Communal</string>
 
+    <!-- Label for private space biometric prompt logo description [CHAR LIMIT=30] -->
+    <string name="private_space_biometric_prompt_title">Private space</string>
+
     <!-- Notification message used when a notification's normal message contains sensitive information [CHAR_LIMIT=NOTIF_BODY] -->
     <string name="redacted_notification_message">Sensitive notification content hidden</string>
     <!-- Notification action title used instead of a notification's normal title sensitive [CHAR_LIMIT=NOTIF_BODY] -->
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index a46dc04..50c3b1a 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1497,6 +1497,36 @@
     </style>
 
     <!-- @hide -->
+    <style name="PointerIconVectorStyleFillBlack">
+        <item name="pointerIconVectorFill">@color/black</item>
+        <item name="pointerIconVectorFillInverse">@color/white</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="PointerIconVectorStyleFillGreen">
+        <item name="pointerIconVectorFill">#6DD58C</item>
+        <item name="pointerIconVectorFillInverse">#6DD58C</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="PointerIconVectorStyleFillYellow">
+        <item name="pointerIconVectorFill">#FDD663</item>
+        <item name="pointerIconVectorFillInverse">#FDD663</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="PointerIconVectorStyleFillPink">
+        <item name="pointerIconVectorFill">#F2B8B5</item>
+        <item name="pointerIconVectorFillInverse">#F2B8B5</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="PointerIconVectorStyleFillBlue">
+        <item name="pointerIconVectorFill">#8AB4F8</item>
+        <item name="pointerIconVectorFillInverse">#8AB4F8</item>
+    </style>
+
+    <!-- @hide -->
     <style name="aerr_list_item" parent="Widget.Material.Light.Button.Borderless">
         <item name="minHeight">?attr/listPreferredItemHeightSmall</item>
         <item name="textAppearance">?attr/textAppearanceListItemSmall</item>
@@ -1690,4 +1720,12 @@
            parent="@style/Theme.DeviceDefault.Resolver">
         <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
     </style>
+
+    <!--
+        TODO(b/309578419): Make activities go edge-to-edge properly and then remove this.
+    -->
+    <style name="GrantCredentialsPermissionActivity"
+           parent="@style/Theme.DeviceDefault.Light.DialogWhenLarge">
+        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
+    </style>
 </resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index bb73934..cc74d02 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1116,6 +1116,7 @@
   <java-symbol type="string" name="accessibility_label_private_profile" />
   <java-symbol type="string" name="accessibility_label_clone_profile" />
   <java-symbol type="string" name="accessibility_label_communal_profile" />
+  <java-symbol type="string" name="private_space_biometric_prompt_title" />
   <java-symbol type="string" name="mediasize_unknown_portrait" />
   <java-symbol type="string" name="mediasize_unknown_landscape" />
   <java-symbol type="string" name="mediasize_iso_a0" />
@@ -1694,6 +1695,12 @@
   <java-symbol type="style" name="Pointer" />
   <java-symbol type="style" name="LargePointer" />
   <java-symbol type="style" name="VectorPointer" />
+  <java-symbol type="style" name="PointerIconVectorStyleFillBlack" />
+  <java-symbol type="style" name="PointerIconVectorStyleFillGreen" />
+  <java-symbol type="style" name="PointerIconVectorStyleFillYellow" />
+  <java-symbol type="style" name="PointerIconVectorStyleFillPink" />
+  <java-symbol type="style" name="PointerIconVectorStyleFillBlue" />
+  <java-symbol type="attr" name="pointerIconVectorFill" />
   <java-symbol type="style" name="TextAppearance.DeviceDefault.Notification.Title" />
   <java-symbol type="style" name="TextAppearance.DeviceDefault.Notification.Info" />
 
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index bdbf96b..c3d304d 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -391,11 +391,9 @@
 
         <!-- Floating toolbar styles -->
         <item name="floatingToolbarCloseDrawable">@drawable/ic_ab_back_material_dark</item>
-        <item name="floatingToolbarForegroundColor">@color/foreground_material_dark</item>
         <item name="floatingToolbarItemBackgroundBorderlessDrawable">@drawable/item_background_borderless_material_dark</item>
         <item name="floatingToolbarItemBackgroundDrawable">@drawable/item_background_material_dark</item>
         <item name="floatingToolbarOpenDrawable">@drawable/ic_menu_moreoverflow_material_dark</item>
-        <item name="floatingToolbarPopupBackgroundDrawable">@drawable/floating_popup_background_dark</item>
         <item name="floatingToolbarDividerColor">@color/floating_popup_divider_dark</item>
 
         <!-- SearchView attributes -->
@@ -579,11 +577,9 @@
 
         <!-- Floating toolbar styles -->
         <item name="floatingToolbarCloseDrawable">@drawable/ic_ab_back_material_light</item>
-        <item name="floatingToolbarForegroundColor">@color/foreground_material_light</item>
         <item name="floatingToolbarItemBackgroundBorderlessDrawable">@drawable/item_background_borderless_material_light</item>
         <item name="floatingToolbarItemBackgroundDrawable">@drawable/item_background_material_light</item>
         <item name="floatingToolbarOpenDrawable">@drawable/ic_menu_moreoverflow_material_light</item>
-        <item name="floatingToolbarPopupBackgroundDrawable">@drawable/floating_popup_background_light</item>
         <item name="floatingToolbarDividerColor">@color/floating_popup_divider_light</item>
 
         <!-- Tooltip popup colors -->
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 0e855af1..41696df 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -85,6 +85,7 @@
         "kotlin-test",
         "mockito-target-minus-junit4",
         "androidx.test.uiautomator_uiautomator",
+        "platform-parametric-runner-lib",
         "platform-test-annotations",
         "platform-compat-test-rules",
         "truth",
diff --git a/core/tests/coretests/src/android/app/NotificationTest.java b/core/tests/coretests/src/android/app/NotificationTest.java
index 30ec940..b64eeca 100644
--- a/core/tests/coretests/src/android/app/NotificationTest.java
+++ b/core/tests/coretests/src/android/app/NotificationTest.java
@@ -703,10 +703,10 @@
                 hugeIcon).build();
 
         Bitmap smallNotificationIcon = notification.getSmallIcon().getBitmap();
-        assertThat(smallNotificationIcon.getWidth()).isEqualTo(
+        assertThat((float) smallNotificationIcon.getWidth()).isWithin(3f).of(
                 mContext.getResources().getDimensionPixelSize(
                         R.dimen.notification_small_icon_size));
-        assertThat(smallNotificationIcon.getHeight()).isEqualTo(
+        assertThat((float) smallNotificationIcon.getHeight()).isWithin(3f).of(
                 mContext.getResources().getDimensionPixelSize(
                         R.dimen.notification_small_icon_size));
     }
@@ -730,23 +730,23 @@
         Notification notification = new Notification.Builder(mContext, "Channel").setStyle(
                 style).build();
 
-        int targetSize = mContext.getResources().getDimensionPixelSize(
+        float targetSize = mContext.getResources().getDimensionPixelSize(
                 ActivityManager.isLowRamDeviceStatic()
                         ? R.dimen.notification_person_icon_max_size_low_ram
                         : R.dimen.notification_person_icon_max_size);
 
         Bitmap personIcon = style.getUser().getIcon().getBitmap();
-        assertThat(personIcon.getWidth()).isEqualTo(targetSize);
-        assertThat(personIcon.getHeight()).isEqualTo(targetSize);
+        assertThat((float) personIcon.getWidth()).isWithin(3f).of(targetSize);
+        assertThat((float) personIcon.getHeight()).isWithin(3f).of(targetSize);
 
         Bitmap avatarIcon = style.getMessages().get(0).getSenderPerson().getIcon().getBitmap();
-        assertThat(avatarIcon.getWidth()).isEqualTo(targetSize);
-        assertThat(avatarIcon.getHeight()).isEqualTo(targetSize);
+        assertThat((float) avatarIcon.getWidth()).isWithin(3f).of(targetSize);
+        assertThat((float) avatarIcon.getHeight()).isWithin(3f).of(targetSize);
 
         Bitmap historicAvatarIcon = style.getHistoricMessages().get(
                 0).getSenderPerson().getIcon().getBitmap();
-        assertThat(historicAvatarIcon.getWidth()).isEqualTo(targetSize);
-        assertThat(historicAvatarIcon.getHeight()).isEqualTo(targetSize);
+        assertThat((float) historicAvatarIcon.getWidth()).isWithin(3f).of(targetSize);
+        assertThat((float) historicAvatarIcon.getHeight()).isWithin(3f).of(targetSize);
     }
 
     @Test
@@ -760,10 +760,10 @@
                 style).build();
         Bitmap shortcutIcon = style.getShortcutIcon().getBitmap();
 
-        assertThat(shortcutIcon.getWidth()).isEqualTo(
+        assertThat((float) shortcutIcon.getWidth()).isWithin(3f).of(
                 mContext.getResources().getDimensionPixelSize(
                         R.dimen.notification_small_icon_size));
-        assertThat(shortcutIcon.getHeight()).isEqualTo(
+        assertThat((float) shortcutIcon.getHeight()).isWithin(3f).of(
                 mContext.getResources().getDimensionPixelSize(
                         R.dimen.notification_small_icon_size));
     }
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index 584fe16..32e611c 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -21,6 +21,8 @@
 import static android.app.servertransaction.TestUtils.referrerIntentList;
 import static android.app.servertransaction.TestUtils.resultInfoList;
 
+import static com.android.window.flags.Flags.FLAG_DISABLE_OBJECT_POOL;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotSame;
@@ -39,19 +41,27 @@
 import android.os.IBinder;
 import android.os.PersistableBundle;
 import android.platform.test.annotations.Presubmit;
+import android.platform.test.flag.junit.FlagsParameterization;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.window.ActivityWindowInfo;
 
 import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
+
+import com.android.window.flags.Flags;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.List;
 import java.util.function.Supplier;
 
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
+import platform.test.runner.parameterized.Parameters;
+
 /**
  * Tests for {@link ObjectPool}.
  *
@@ -61,16 +71,28 @@
  * <p>This test class is a part of Window Manager Service tests and specified in
  * {@link com.android.server.wm.test.filters.FrameworksTestsFilter}.
  */
-@RunWith(AndroidJUnit4.class)
+@RunWith(ParameterizedAndroidJunit4.class)
 @SmallTest
 @Presubmit
 public class ObjectPoolTests {
 
+    @Parameters(name = "{0}")
+    public static List<FlagsParameterization> getParams() {
+        return FlagsParameterization.allCombinationsOf(FLAG_DISABLE_OBJECT_POOL);
+    }
+
+    @Rule
+    public SetFlagsRule mSetFlagsRule;
+
     @Mock
     private IApplicationThread mApplicationThread;
     @Mock
     private IBinder mActivityToken;
 
+    public ObjectPoolTests(FlagsParameterization flags) {
+        mSetFlagsRule = new SetFlagsRule(flags);
+    }
+
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
@@ -199,12 +221,20 @@
         item.recycle();
         final ObjectPoolItem item2 = obtain.get();
 
-        assertSame(item, item2);
+        if (Flags.disableObjectPool()) {
+            assertNotSame(item, item2);  // Different instance.
+        } else {
+            assertSame(item, item2);
+        }
 
         // Create new object when the pool is empty.
         final ObjectPoolItem item3 = obtain.get();
 
         assertNotSame(item, item3);
+        if (Flags.disableObjectPool()) {
+            // Skip recycle if flag enabled, compare unnecessary.
+            return;
+        }
         assertEquals(item, item3);
 
         // Reset fields after recycle.
diff --git a/core/tests/coretests/src/android/os/BinderTest.java b/core/tests/coretests/src/android/os/BinderTest.java
index 6c8b69f..9767d67 100644
--- a/core/tests/coretests/src/android/os/BinderTest.java
+++ b/core/tests/coretests/src/android/os/BinderTest.java
@@ -20,6 +20,8 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.testng.Assert.assertThrows;
 
 import android.platform.test.annotations.IgnoreUnderRavenwood;
@@ -27,6 +29,9 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.internal.os.BinderInternal;
+
+
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -81,4 +86,27 @@
         binder.setExtension(null);
         assertNull(binder.getExtension());
     }
+
+    @SmallTest
+    @Test(expected = java.lang.SecurityException.class)
+    public void testServiceManagerNativeSecurityException() throws RemoteException {
+        // Find the service manager
+        IServiceManager sServiceManager = ServiceManagerNative
+                .asInterface(Binder.allowBlocking(BinderInternal.getContextObject()));
+
+        Binder binder = new Binder();
+        sServiceManager.addService("ValidName",  binder,
+                anyBoolean(), anyInt());
+    }
+
+    @SmallTest
+    @Test(expected = java.lang.NullPointerException.class)
+    public void testServiceManagerNativeNullptrException() throws RemoteException {
+        // Find the service manager
+        IServiceManager sServiceManager = ServiceManagerNative
+                .asInterface(Binder.allowBlocking(BinderInternal.getContextObject()));
+
+        sServiceManager.addService("ValidName",  null,
+                anyBoolean(), anyInt());
+    }
 }
diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java
index f05390d..ae7f465 100644
--- a/core/tests/coretests/src/android/view/InsetsControllerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java
@@ -32,6 +32,7 @@
 import static android.view.WindowInsets.Type.navigationBars;
 import static android.view.WindowInsets.Type.statusBars;
 import static android.view.WindowInsets.Type.systemBars;
+import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP;
 import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
@@ -52,6 +53,9 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+import android.annotation.NonNull;
 import android.content.Context;
 import android.graphics.Insets;
 import android.graphics.Point;
@@ -80,6 +84,8 @@
 import org.mockito.InOrder;
 import org.mockito.Mockito;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
 /**
@@ -668,30 +674,58 @@
     }
 
     @Test
-    public void testResizeAnimation_withFlagAnimateResizing() {
+    public void testResizeAnimation_withFlagAnimateResizing() throws InterruptedException {
+        final int id = ID_NAVIGATION_BAR;
+        final @InsetsType int type = navigationBars();
+        final int fromInsetsHeight = 50;
+        final int toInsetsHeight = 60;
+        final ArrayList<WindowInsets> progressList = new ArrayList<>();
+        final CountDownLatch animationEndLatch = new CountDownLatch(1);
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
-            final int id = ID_NAVIGATION_BAR;
-            final @InsetsType int type = navigationBars();
             final InsetsState state1 = new InsetsState();
             state1.getOrCreateSource(id, type)
                     .setVisible(true)
-                    .setFrame(0, 0, 500, 50)
+                    .setFrame(0, 0, 500, fromInsetsHeight)
                     .setFlags(FLAG_ANIMATE_RESIZING, FLAG_ANIMATE_RESIZING);
             final InsetsState state2 = new InsetsState(state1, true /* copySources */);
-            state2.peekSource(id).setFrame(0, 0, 500, 60);
+            state2.peekSource(id).setFrame(0, 0, 500, toInsetsHeight);
 
             // New insets source won't cause the resize animation.
             mController.onStateChanged(state1);
             assertEquals("There must not be resize animation.", ANIMATION_TYPE_NONE,
                     mController.getAnimationType(type));
 
+            mViewRoot.getView().setWindowInsetsAnimationCallback(
+                    new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) {
+                        @Override
+                        public WindowInsets onProgress(
+                                @NonNull WindowInsets insets,
+                                @NonNull List<WindowInsetsAnimation> runningAnimations) {
+                            progressList.add(insets);
+                            return insets;
+                        }
+
+                        @Override
+                        public void onEnd(@NonNull WindowInsetsAnimation animation) {
+                            animationEndLatch.countDown();
+                        }
+                    });
+
             // Changing frame of the source with FLAG_ANIMATE_RESIZING will cause the resize
             // animation.
             mController.onStateChanged(state2);
             assertEquals("There must be resize animation.", ANIMATION_TYPE_RESIZE,
                     mController.getAnimationType(type));
+
+            mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
         });
         InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertTrue("Animation must be ended.", animationEndLatch.await(3, SECONDS));
+        assertEquals("The first insets height must be the same as `fromInsetsHeight`",
+                fromInsetsHeight, progressList.get(0).getInsets(type).top);
+        assertEquals("The last insets height must be the same as `toInsetsHeight`",
+                toInsetsHeight, progressList.get(progressList.size() - 1).getInsets(type).top);
     }
 
     @Test
diff --git a/core/tests/coretests/src/android/view/ViewFrameRateTest.java b/core/tests/coretests/src/android/view/ViewFrameRateTest.java
index abe9c8e..35b984a 100644
--- a/core/tests/coretests/src/android/view/ViewFrameRateTest.java
+++ b/core/tests/coretests/src/android/view/ViewFrameRateTest.java
@@ -126,7 +126,7 @@
 
     @Test
     @RequiresFlagsEnabled(FLAG_VIEW_VELOCITY_API)
-    public void touchBoostDisable() throws Throwable {
+    public void frameBoostDisable() throws Throwable {
         mActivityRule.runOnUiThread(() -> {
             long now = SystemClock.uptimeMillis();
             MotionEvent down = MotionEvent.obtain(
@@ -146,6 +146,7 @@
 
         mActivityRule.runOnUiThread(() -> {
             assertFalse(mViewRoot.getIsTouchBoosting());
+            assertFalse(mViewRoot.getIsFrameRateBoosting());
         });
     }
 
@@ -498,12 +499,9 @@
                         toolkitFrameRateDefaultNormalReadOnly() ? FRAME_RATE_CATEGORY_NORMAL
                                 : FRAME_RATE_CATEGORY_HIGH;
             } else {
-                // intermittent
-                // Even though this is not a small View, step 3 is triggered by this flag, which
-                // brings intermittent to LOW
-                expectedCategory = toolkitFrameRateBySizeReadOnly()
-                        ? FRAME_RATE_CATEGORY_LOW
-                        : FRAME_RATE_CATEGORY_NORMAL;
+                // intermittent.
+                // The expected category is normal.
+                expectedCategory = FRAME_RATE_CATEGORY_NORMAL;
             }
             mActivityRule.runOnUiThread(() -> {
                 mMovingView.invalidate();
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
index 5a6824b..b5c264c 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
@@ -146,10 +146,6 @@
 
     public void setMagnificationCallbackEnabled(int displayId, boolean enabled) {}
 
-    public boolean isMagnificationSystemUIConnected() {
-        return false;
-    }
-
     public boolean setSoftKeyboardShowMode(int showMode) {
         return false;
     }
diff --git a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
index 50d7f59..b0190a5 100644
--- a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
+++ b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java
@@ -28,6 +28,7 @@
 import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -368,7 +369,7 @@
         callbackInfo.getCallback().onBackInvoked();
 
         waitForIdle();
-        verify(mCallback1).onBackInvoked();
+        verify(mCallback1, timeout(/*millis*/ 1000)).onBackInvoked();
         verify(mCallback1, never()).onBackCancelled();
     }
 
diff --git a/core/tests/coretests/src/com/android/internal/app/NoOpResolverComparatorTest.java b/core/tests/coretests/src/com/android/internal/app/NoOpResolverComparatorTest.java
new file mode 100644
index 0000000..22c319c
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/app/NoOpResolverComparatorTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.internal.app;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Intent;
+import android.os.UserHandle;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit tests for the behavior of {@link NoOpResolverComparator}. */
+@RunWith(AndroidJUnit4.class)
+public class NoOpResolverComparatorTest {
+
+    private static final UserHandle PERSONAL_USER_HANDLE = InstrumentationRegistry
+            .getInstrumentation().getTargetContext().getUser();
+
+    public final ResolvedComponentInfo resolution1 =
+            ResolverDataProvider.createResolvedComponentInfo(1, PERSONAL_USER_HANDLE);
+    public final ResolvedComponentInfo resolution2 =
+            ResolverDataProvider.createResolvedComponentInfo(2, PERSONAL_USER_HANDLE);
+    public final ResolvedComponentInfo resolution3 =
+            ResolverDataProvider.createResolvedComponentInfo(3, PERSONAL_USER_HANDLE);
+    public final ResolvedComponentInfo resolution4 =
+            ResolverDataProvider.createResolvedComponentInfo(4, PERSONAL_USER_HANDLE);
+
+    private NoOpResolverComparator mComparator;
+
+    @Before
+    public void setUp() {
+        mComparator = new NoOpResolverComparator(
+                InstrumentationRegistry.getInstrumentation().getTargetContext(),
+                new Intent(),
+                List.of(PERSONAL_USER_HANDLE));
+    }
+
+    @Test
+    public void testKnownItemsSortInOriginalOrder() {
+        List<ResolvedComponentInfo> originalOrder = List.of(resolution1, resolution2, resolution3);
+        mComparator.doCompute(originalOrder);
+
+        List<ResolvedComponentInfo> queryOrder = new ArrayList<>(
+                List.of(resolution2, resolution3, resolution1));
+
+        Collections.sort(queryOrder, mComparator);
+        assertThat(queryOrder).isEqualTo(originalOrder);
+    }
+
+    @Test
+    public void testUnknownItemsSortAfterKnownItems() {
+        List<ResolvedComponentInfo> originalOrder = List.of(resolution1, resolution2);
+        mComparator.doCompute(originalOrder);
+
+        // Query includes the unknown `resolution4`.
+        List<ResolvedComponentInfo> queryOrder = new ArrayList<>(
+                List.of(resolution2, resolution4, resolution1));
+        Collections.sort(queryOrder, mComparator);
+
+        assertThat(queryOrder).isEqualTo(List.of(resolution1, resolution2, resolution4));
+    }
+
+    @Test
+    public void testKnownItemsGetNonZeroScoresInOrder() {
+        List<ResolvedComponentInfo> originalOrder = List.of(resolution1, resolution2);
+        mComparator.doCompute(originalOrder);
+
+        float score1 = mComparator.getScore(resolution1.getResolveInfoAt(0));
+        float score2 = mComparator.getScore(resolution2.getResolveInfoAt(0));
+
+        assertThat(score1).isEqualTo(1.0f);
+        assertThat(score2).isLessThan(score1);
+        assertThat(score2).isGreaterThan(0.0f);
+    }
+
+    @Test
+    public void testUnknownItemsGetZeroScore() {
+        List<ResolvedComponentInfo> originalOrder = List.of(resolution1, resolution2);
+        mComparator.doCompute(originalOrder);
+
+        assertThat(mComparator.getScore(resolution3.getResolveInfoAt(0))).isEqualTo(0.0f);
+    }
+}
diff --git a/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java b/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
index f79ba28..af2a2bb 100644
--- a/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
+++ b/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
@@ -48,7 +48,8 @@
         final String dumyIconKey = "dummyIcon1";
         final ArrayMap<String, StatusBarIcon> iconMap = new ArrayMap<>();
         iconMap.put(dumyIconKey, new StatusBarIcon("com.android.internal.statusbar.test",
-                UserHandle.of(100), 123, 1, 2, "dummyIconDescription"));
+                UserHandle.of(100), 123, 1, 2, "dummyIconDescription",
+                StatusBarIcon.Type.SystemIcon));
         final LetterboxDetails letterboxDetails = new LetterboxDetails(
                 /* letterboxInnerBounds= */ new Rect(1, 2, 3, 4),
                 /* letterboxFullBounds= */ new Rect(5, 6, 7, 8),
diff --git a/core/tests/coretests/src/com/android/internal/statusbar/StatusBarIconTest.java b/core/tests/coretests/src/com/android/internal/statusbar/StatusBarIconTest.java
index fe552a0..a895378 100644
--- a/core/tests/coretests/src/com/android/internal/statusbar/StatusBarIconTest.java
+++ b/core/tests/coretests/src/com/android/internal/statusbar/StatusBarIconTest.java
@@ -44,7 +44,8 @@
         final int dummyIconNumber = 2;
         final CharSequence dummyIconContentDescription = "dummyIcon";
         final StatusBarIcon original = new StatusBarIcon(dummyIconPackageName, dummyUserHandle,
-                dummyIconId, dummyIconLevel, dummyIconNumber, dummyIconContentDescription);
+                dummyIconId, dummyIconLevel, dummyIconNumber, dummyIconContentDescription,
+                StatusBarIcon.Type.SystemIcon);
 
         final StatusBarIcon copy = clone(original);
 
diff --git a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
index 1dbb775..2b8adcb 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
@@ -20,6 +20,7 @@
 import static android.view.View.MeasureSpec.EXACTLY;
 import static android.view.View.MeasureSpec.makeMeasureSpec;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.Matchers.is;
@@ -69,6 +70,7 @@
 
     private ViewGroup mContent;
     private ViewGroup mActionBarTop;
+    private ViewGroup mActionBarView;
     private Toolbar mToolbar;
     private FakeOnApplyWindowListener mContentInsetsListener;
 
@@ -86,15 +88,22 @@
         mContentInsetsListener = new FakeOnApplyWindowListener();
         mContent.setOnApplyWindowInsetsListener(mContentInsetsListener);
 
-        mActionBarTop = new ActionBarContainer(mContext);
-        mActionBarTop.setId(com.android.internal.R.id.action_bar_container);
-        mActionBarTop.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, 20));
-        mLayout.addView(mActionBarTop);
-        mLayout.setActionBarHeight(20);
+        // mActionBarView and mToolbar are supposed to be the same view. Here makes mToolbar a child
+        // of mActionBarView is to control the height of mActionBarView. In this way, the child
+        // views of mToolbar won't affect the measurement of mActionBarView or mActionBarTop.
+        mActionBarView = new FrameLayout(mContext);
+        mActionBarView.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, 20));
 
         mToolbar = new Toolbar(mContext);
         mToolbar.setId(com.android.internal.R.id.action_bar);
-        mActionBarTop.addView(mToolbar);
+        mActionBarView.addView(mToolbar);
+
+        mActionBarTop = new ActionBarContainer(mContext);
+        mActionBarTop.setId(com.android.internal.R.id.action_bar_container);
+        mActionBarTop.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
+        mActionBarTop.addView(mActionBarView);
+        mLayout.addView(mActionBarTop);
+        mLayout.setActionBarHeight(20);
     }
 
     @Test
diff --git a/data/etc/Android.bp b/data/etc/Android.bp
index 1410950..050f9b5 100644
--- a/data/etc/Android.bp
+++ b/data/etc/Android.bp
@@ -200,13 +200,3 @@
     src: "com.android.systemui.xml",
     filename_from_src: true,
 }
-
-filegroup {
-    name: "services.core.protolog.json",
-    srcs: ["services.core.protolog.json"],
-}
-
-filegroup {
-    name: "file-core.protolog.pb",
-    srcs: ["core.protolog.pb"],
-}
diff --git a/data/etc/core.protolog.pb b/data/etc/core.protolog.pb
deleted file mode 100644
index a105ba7..0000000
--- a/data/etc/core.protolog.pb
+++ /dev/null
Binary files differ
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
deleted file mode 100644
index db68f95..0000000
--- a/data/etc/services.core.protolog.json
+++ /dev/null
@@ -1,4870 +0,0 @@
-{
-  "version": "2.0.0",
-  "messages": {
-    "7286191062634870297": {
-      "message": "Binding proc %s with config %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/am\/ActivityManagerService.java"
-    },
-    "-4921282642721622589": {
-      "message": "Report configuration: %s %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityClientController.java"
-    },
-    "-1597980207704427048": {
-      "message": "Frontmost changed immersion: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IMMERSIVE",
-      "at": "com\/android\/server\/wm\/ActivityClientController.java"
-    },
-    "-6509265758887333864": {
-      "message": "Can't report activity moved to display - client not running, activityRecord=%s, displayId=%d",
-      "level": "WARN",
-      "group": "WM_DEBUG_SWITCH",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-4183059578873561863": {
-      "message": "Reporting activity moved to display, activityRecord=%s, displayId=%d, config=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SWITCH",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7435279034964784633": {
-      "message": "Can't report activity configuration update - client not running, activityRecord=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-7418876140361338495": {
-      "message": "Sending new config to %s, config: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-4284934398288119962": {
-      "message": "Can't report activity position update - client not running, activityRecord=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7244227111034368231": {
-      "message": "Sending position change to %s, onTop: %b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "338586566486930495": {
-      "message": "Checking theme of starting window: 0x%x",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-2561793317091789573": {
-      "message": "Translucent=%s Floating=%s ShowWallpaper=%s Disable=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7269690012594027154": {
-      "message": "Creating SplashScreenStartingData",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3432060893368468911": {
-      "message": "Creating SnapshotStartingData",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5659016061937922595": {
-      "message": "Add starting %s: startingData=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7506106334102501360": {
-      "message": "Added starting %s: startingWindow=%s startingView=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "1048048288756547220": {
-      "message": "Surface returned was null: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1298801500610545721": {
-      "message": "Cleaning splash screen token=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1948849214526113495": {
-      "message": "Clearing startingData for token=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5545923784327902026": {
-      "message": "Schedule remove starting %s startingWindow=%s animate=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-5150982660941074218": {
-      "message": "startingWindow was set but startingSurface==null, couldn't remove",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-2178757341169633804": {
-      "message": "Tried to remove starting window but startingWindow was null: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5521236266092347335": {
-      "message": "reparent: moving activity=%s to new task fragment in task=%d at %d",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-9024836052864189016": {
-      "message": "moveFocusableActivityToTop: unfocusable activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "134255351804410010": {
-      "message": "moveFocusableActivityToTop: already on top and focused, activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1058622321669556178": {
-      "message": "moveFocusableActivityToTop: set focused, activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "731006689098152100": {
-      "message": "moveFocusableActivityToTop: activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3707721620395081349": {
-      "message": "Finishing activity r=%s, result=%d, data=%s, reason=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3691592300155948194": {
-      "message": "Finish needs to pause: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5813636479397543744": {
-      "message": "Finish waiting for pause of: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-2989211291975863399": {
-      "message": "destroyIfPossible: r=%s destroy returned removed=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_CONTAINERS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3169053633576517098": {
-      "message": "Enqueueing pending finish: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "9050478058743283018": {
-      "message": "activity %s already destroying, skipping request with reason:%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5672598223877126839": {
-      "message": "Moving to DESTROYING: %s (destroy requested)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1834399855266808961": {
-      "message": "Moving to DESTROYED: %s (destroy skipped)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3282063745558462269": {
-      "message": "Moving to DESTROYED: %s (no app)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "8836546031252812807": {
-      "message": "Removing activity %s, reason= %s callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "8348126473928520781": {
-      "message": "Moving to DESTROYED: %s (removed from history)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8001673213497887656": {
-      "message": "activityDestroyedLocked: r=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_CONTAINERS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "587363723665813898": {
-      "message": "Removing activity %s hasSavedState=%b stateNotNeeded=%s finishing=%b state=%s callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1842512343787359105": {
-      "message": "Removing app token: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5548174277852675449": {
-      "message": "Removing app %s delayed=%b animation=%s animating=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-601582700132879947": {
-      "message": "removeAppToken: %s delayed=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3478214322581157355": {
-      "message": "removeAppToken make exiting: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-7226216420432530281": {
-      "message": "Removing focused app token:%s displayId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "8361394136152947990": {
-      "message": "Moving existing starting %s from %s to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3450064502566932331": {
-      "message": "Removing starting %s from %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "8639603536400037285": {
-      "message": "Moving pending starting from %s to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3452055378690362514": {
-      "message": "setAppVisibility(%s, visible=%b): %s visible=%b mVisibleRequested=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "1728033820691545386": {
-      "message": "No longer Stopped: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5062176994575790703": {
-      "message": "TRANSIT_FLAG_OPEN_BEHIND,  adding %s to mOpeningApps",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-477271988506706928": {
-      "message": "commitVisibility: %s: visible=%b visibleRequested=%b, isInTransition=%b, runningAnimation=%b, caller=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-6873410057142191118": {
-      "message": "State movement: %s from:%s to:%s reason:%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "4437231720834282527": {
-      "message": "State unchanged from:%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "926038819327785799": {
-      "message": "notifyAppResumed: wasStopped=%b %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "1734586111478674085": {
-      "message": "Resumed activity; dropping state of: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-69666241054231397": {
-      "message": "Refreshed activity: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "1256300416726217367": {
-      "message": "Activity paused: token=%s, timeout=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "6879640870754727133": {
-      "message": "Moving to PAUSED: %s %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "2737811012914917932": {
-      "message": "Executing finish of failed to pause activity: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-2566496855129705006": {
-      "message": "Waiting for pause to complete...",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7498807658620137882": {
-      "message": "no-history finish of %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3207149655622038378": {
-      "message": "Not finishing noHistory %s on stop because we're just sleeping",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-2530718588485487045": {
-      "message": "Moving to STOPPING: %s (stop requested)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8424334454318351870": {
-      "message": "Stop failed; moving to STOPPED: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-4913512058893421188": {
-      "message": "Saving icicle of %s: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7613353074402340933": {
-      "message": "Moving to STOPPED: %s (stop complete)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3981777934616509782": {
-      "message": "Scheduling idle now: forceIdle=%b immediate=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "1083992181663415298": {
-      "message": "Skipping set freeze of %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3713860954819212080": {
-      "message": "Set freezing of %s: visible=%b freezing=%b visibleRequested=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7696002120820208745": {
-      "message": "Clear freezing of %s force=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8387262166329116492": {
-      "message": "No longer freezing: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-6965298896142649709": {
-      "message": "Finish starting %s: first real window is shown, no animation",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "3235691043029201724": {
-      "message": "Setting mOrientationChangeComplete=true because wtoken %s numInteresting=%d numDrawn=%d",
-      "level": "INFO",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5991628884266137609": {
-      "message": "Creating animation bounds layer",
-      "level": "INFO",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1836789237982086339": {
-      "message": "No thumbnail header bitmap for: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8809523216004991008": {
-      "message": "Animation done in %s: reportedVisible=%b okToDisplay=%b okToAnimate=%b startingDisplayed=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-9178011226407552682": {
-      "message": "Setting requested orientation %s for %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1963190756391505590": {
-      "message": "Sandbox max bounds for uid %s to bounds %s. config to never sandbox = %s, config to always sandbox = %s, letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "2612201759169917322": {
-      "message": "Pausing configuration dispatch for  %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "5153784493059555057": {
-      "message": "Resuming configuration dispatch for %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8630021188868292872": {
-      "message": "Skipping config check (will change): %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3976984054291875926": {
-      "message": "Configuration doesn't matter in finishing %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-1036762753077003128": {
-      "message": "Skipping config check in destroyed state %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-6543078196636665108": {
-      "message": "Skipping config check invisible: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3588725633248053181": {
-      "message": "Ensuring correct configuration: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "4672360193194734037": {
-      "message": "Configuration & display unchanged in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8624278141553396410": {
-      "message": "Skipping config check for initializing activity: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "2485365009287691179": {
-      "message": "Configuration no differences in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8909639363543223474": {
-      "message": "Configuration changes for %s, allChanges=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-8048404379899908050": {
-      "message": "Configuration doesn't matter not running %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "4979286847769557939": {
-      "message": "Checking to restart %s: changed=0x%s, handles=0x%s, mLastReportedConfiguration=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "6779426581354721909": {
-      "message": "Config is relaunching %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "8969401915706456725": {
-      "message": "Config is relaunching invisible activity %s called by %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "328802837600679598": {
-      "message": "Moving to %s Relaunching %s callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "-3997125892953197985": {
-      "message": "Resumed after relaunch %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
-    "7211222997110112110": {
-      "message": "Refreshing activity for freeform camera compatibility treatment, activityRecord=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityRefresher.java"
-    },
-    "1665699123574159131": {
-      "message": "Starting activity when config will change = %b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityStarter.java"
-    },
-    "4748139468532105082": {
-      "message": "Updating to new configuration after starting activity.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityStarter.java"
-    },
-    "-2867366986304729": {
-      "message": "Bring to front target: %s from %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityStarter.java"
-    },
-    "-2190454940975874759": {
-      "message": "Starting new activity %s in new task %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityStarter.java"
-    },
-    "5445799252721678675": {
-      "message": "Initial config: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-3811526397232923712": {
-      "message": "Cannot launch dream activity due to invalid state. dream component: %s packageName: %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_DREAM",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-6981899770129924827": {
-      "message": "Dream packageName does not match active dream. Package %s does not match %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_DREAM",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "6075150529915862250": {
-      "message": "Applying new update lock state '%s' for %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IMMERSIVE",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-4356952232698761083": {
-      "message": "setFocusedRootTask: taskId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "301842347780487555": {
-      "message": "setFocusedTask: taskId=%d touchedActivity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "7095858131234795548": {
-      "message": "moveTaskToFront: moving taskId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-4458288191054594222": {
-      "message": "Could not find task for id: %d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-1136891560663761442": {
-      "message": "moveTaskToRootTask: moving task=%d to rootTaskId=%d toTop=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "6954122272402912822": {
-      "message": "startLockTaskMode: %s",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-829638795650515884": {
-      "message": "Allowlisting %d:%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "893763316922465955": {
-      "message": "moveRootTaskToDisplay: moving taskId=%d to displayId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "8392804603924461448": {
-      "message": "%s: caller %d is using old GET_TASKS but privileged; allowing",
-      "level": "WARN",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "4303745325174700522": {
-      "message": "%s: caller %d does not hold REAL_GET_TASKS; limiting output",
-      "level": "WARN",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-559595900417262876": {
-      "message": "Allowing features %d:0x%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "2008996027621913637": {
-      "message": "Updating global configuration to: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-6404059840638143757": {
-      "message": "Update process config of %s to new config %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "-1123414663662718691": {
-      "message": "setVr2dDisplayId called for: %d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskManagerService.java"
-    },
-    "7803197981786977817": {
-      "message": "no-history finish of %s on new resume",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "4094852138446437211": {
-      "message": "realStartActivityLocked: Skipping start of r=%s some activities pausing...",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "1045761390992110034": {
-      "message": "Moving to PAUSED: %s (starting in paused state)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "-8529426827020190143": {
-      "message": "Launch on display check: displayId=%d callingPid=%d callingUid=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "9147909968067116569": {
-      "message": "Launch on display check: no caller info, skip check",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "4781135167649953680": {
-      "message": "Launch on display check: allow launch any on display",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "7828411869729995271": {
-      "message": "Launch on display check: disallow launch on virtual display for not-embedded activity.",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "-2215878620906309682": {
-      "message": "Launch on display check: disallow activity embedding without permission.",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "986565579776405555": {
-      "message": "Launch on display check: %s launch for userId=%d on displayId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "-2201418325681949201": {
-      "message": "Launch on display check: allow launch for owner of the display",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "-4258279435559028377": {
-      "message": "Launch on display check: allow launch for caller present on the display",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "1496536241884839051": {
-      "message": "Stopping %s: nowVisible=%b animating=%b finishing=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "5677125188685281770": {
-      "message": "Ready to stop: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "3604633008357193496": {
-      "message": "Waiting for top state to be released by %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "3997062844427155487": {
-      "message": "Top resumed state released %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java"
-    },
-    "-4049608245387511746": {
-      "message": "applyAnimation:  override requested, but it is prohibited by policy.",
-      "level": "ERROR",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-2133100418670643322": {
-      "message": "applyAnimation voice: anim=%s transit=%s isEntrance=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "6121116119545820299": {
-      "message": "applyAnimation: anim=%s transit=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-8382864384468306610": {
-      "message": "applyAnimation: anim=%s nextAppTransition=ANIM_CUSTOM transit=%s isEntrance=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "222576013987954454": {
-      "message": "applyAnimation: anim=%s nextAppTransition=ANIM_CUSTOM_IN_PLACE transit=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "4808089291562562413": {
-      "message": "applyAnimation: anim=%s nextAppTransition=ANIM_CLIP_REVEAL transit=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-1463563572526433695": {
-      "message": "applyAnimation: anim=%s nextAppTransition=ANIM_SCALE_UP transit=%s isEntrance=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-8749850292010208926": {
-      "message": "applyAnimation: anim=%s nextAppTransition=%s transit=%s isEntrance=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "5939232373291430513": {
-      "message": "applyAnimation NEXT_TRANSIT_TYPE_OPEN_CROSS_PROFILE_APPS: anim=%s transit=%s isEntrance=true Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "9082776604722675018": {
-      "message": "applyAnimation: anim=%s transit=%s isEntrance=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-1218632020771063497": {
-      "message": "applyAnimation: anim=%s animAttr=0x%x transit=%s isEntrance=%b  canCustomizeAppTransition=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "6217525691846442213": {
-      "message": "Override pending remote transitionSet=%b adapter=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "5233255302148535928": {
-      "message": "*** APP TRANSITION TIMEOUT. displayId=%d isTransitionSet()=%b mOpeningApps.size()=%d mClosingApps.size()=%d mChangingApps.size()=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransition.java"
-    },
-    "-5726018006883159788": {
-      "message": "Delaying app transition for recents animation to finish",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "6514556033257323299": {
-      "message": "**** GOOD TO GO",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "3518082157667760495": {
-      "message": "handleAppTransitionReady: displayId=%d appTransition={%s} openingApps=[%s] closingApps=[%s] transit=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "-2503124388387340567": {
-      "message": "Wallpaper animation!",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "855146509305002043": {
-      "message": "We don't support remote animation for Task with multiple TaskFragmentOrganizers.",
-      "level": "ERROR",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "59396412370137517": {
-      "message": "Override with TaskFragment remote animation for transit=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "2280055488397326910": {
-      "message": "Task=%d contains embedded TaskFragment. Disabled all input during TaskFragment remote animation.",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "-3156084190956669377": {
-      "message": "Changing app %s visible=%b performLayout=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "-8226278785414579647": {
-      "message": "getAnimationTarget in=%s, out=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "4418653408751596915": {
-      "message": "Now opening app %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "-8367738619313176909": {
-      "message": "Now closing app %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "1855459282905873641": {
-      "message": "Now changing app %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "2951634988136738868": {
-      "message": "Checking %d opening apps (frozen=%b timeout=%b)...",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "4963754906024950916": {
-      "message": "Delaying app transition for screen rotation animation to finish",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "5073676463280304697": {
-      "message": "Check opening app=%s: allDrawn=%b startingDisplayed=%b startingMoved=%b isRelaunching()=%b startingWindow=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "3437142041296647115": {
-      "message": "isFetchingAppTransitionSpecs=true",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "1461079689316480707": {
-      "message": "unknownApps is not empty: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "3579533288018884842": {
-      "message": "Organized TaskFragment is not ready= %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/AppTransitionController.java"
-    },
-    "495867940519492701": {
-      "message": "SyncGroup %d: onSurfacePlacement checking %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "8452501904614439940": {
-      "message": "SyncGroup %d:  Unfinished dependencies: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "616739530932040800": {
-      "message": "SyncGroup %d:  Unfinished container: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "6649777898123506907": {
-      "message": "SyncGroup %d: Finished!",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "4174320302463990554": {
-      "message": "PendingStartTransaction found",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "6310906192788668020": {
-      "message": "SyncGroup %d: Set ready %b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "-476337038362199951": {
-      "message": "SyncGroup %d: Adding to group: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "-2978812352001196863": {
-      "message": "SyncGroup %d: Started %sfor listener: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/BLASTSyncEngine.java"
-    },
-    "-699215053676660941": {
-      "message": "No focused window, defaulting to top current task's window",
-      "level": "WARN",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "2881085074175114605": {
-      "message": "Focused window didn't have a valid surface drawn.",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "-6183551796617134986": {
-      "message": "Focus window is closing.",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "4039315468791789889": {
-      "message": "startBackNavigation currentTask=%s, topRunningActivity=%s, callbackInfo=%s, currentFocus=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "8456834061534378653": {
-      "message": "Previous Destination is Activity:%s Task:%s removedContainer:%s, backType=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "4900967164780429209": {
-      "message": "Pending back animation due to another animation is running",
-      "level": "WARN",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "-6431452312492819825": {
-      "message": "onTransactionReady, opening: %s, closing: %s, animating: %s, match: %b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "-4051770154814262074": {
-      "message": "Handling the deferred animation after transition finished",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "2077221835543623088": {
-      "message": "Setting Activity.mLauncherTaskBehind to true. Activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "-4442170697458371588": {
-      "message": "Setting Activity.mLauncherTaskBehind to false. Activity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "267946503010201613": {
-      "message": "onBackNavigationDone backType=%s, triggerBack=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/BackNavigationController.java"
-    },
-    "-2963535976860666511": {
-      "message": "  BLACK %s: CREATE layer=%d",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/BlackFrame.java"
-    },
-    "-5633771912572750947": {
-      "message": "  BLACK %s: DESTROY",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/BlackFrame.java"
-    },
-    "8116030277393789125": {
-      "message": "Display id=%d is notified that Camera %s is open for package %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/CameraStateMonitor.java"
-    },
-    "-3774458166471278611": {
-      "message": "Display id=%d is notified that Camera %s is closed.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/CameraStateMonitor.java"
-    },
-    "-74949168947384056": {
-      "message": "Sending to proc %s new compat %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/CompatModePackages.java"
-    },
-    "-6620483833570774987": {
-      "message": "Content Recording: Unexpectedly null window container; unable to update recording for display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "7226080178642957768": {
-      "message": "Content Recording: Display %d was already recording, but pause capture since the task is in PIP",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-311001578548807570": {
-      "message": "Content Recording: Display %d was already recording, so apply transformations if necessary",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "2350883351096538149": {
-      "message": "Content Recording: Going ahead with updating recording for display %d to new bounds %s and\/or orientation %d and\/or surface size %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "8446758574558556540": {
-      "message": "Content Recording: Unable to update recording for display %d to new bounds %s and\/or orientation %d and\/or surface size %s, since the surface is not available.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-4320004054011530388": {
-      "message": "Content Recording: Display %d has content (%b) so pause recording",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "5951434375221687741": {
-      "message": "Content Recording: Stop MediaProjection on virtual display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-3395581813971405090": {
-      "message": "Content Recording: waiting to record, so do nothing",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "6779858226066635065": {
-      "message": "Content Recording: Display %d should start recording, but don't yet since the task is in PIP",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "7051210836345306671": {
-      "message": "Content Recording: Unable to start recording for display %d since the surface is not available.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "2255758299558330282": {
-      "message": "Content Recording: Display %d has no content and is on, so start recording for state %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "2269158922723670768": {
-      "message": "Unable to retrieve window container to start recording for display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-2177493963028285555": {
-      "message": "Content Recording: Unable to start recording due to null token for display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-928577038848872043": {
-      "message": "Content Recording: Unable to retrieve task to start recording for display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-3564317873468917405": {
-      "message": "Content Recording: Unable to start recording due to invalid region for display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "1100676037289065396": {
-      "message": "Content Recording: Apply transformations of shift %d x %d, scale %f x %f, crop (aka recorded content size) %d x %d for display %d; display has size %d x %d; surface has size %d x %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "2330946591287751995": {
-      "message": "Content Recording: Provided surface for recording on display %d is not present, so do not update the surface",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "7993045936648632984": {
-      "message": "Content Recording: Recorded task is removed, so stop recording on display %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "3197882223327917085": {
-      "message": "Content Recording: stopping active projection for display %d",
-      "level": "ERROR",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "4391984931064789228": {
-      "message": "Content Recording: Unable to tell MediaProjectionManagerService to stop the active projection for display %d: %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "6721270269112237694": {
-      "message": "Content Recording: Unable to tell MediaProjectionManagerService about resizing the active projection: %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "1600318776990120244": {
-      "message": "Content Recording: Unable to tell MediaProjectionManagerService about visibility change on the active projection: %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-1451477179301743956": {
-      "message": "Content Recording: Unable to tell log windowing mode change: %s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecorder.java"
-    },
-    "-225319884529912382": {
-      "message": "Content Recording: Accept session updating same display %d with granted consent, with an existing session %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecordingController.java"
-    },
-    "-5981322449150461244": {
-      "message": "Content Recording: Ignoring session on same display %d, with an existing session %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecordingController.java"
-    },
-    "4226710957373144819": {
-      "message": "Content Recording: Handle incoming session on display %d, with a pre-existing session %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecordingController.java"
-    },
-    "-1415855962859555663": {
-      "message": "Content Recording: Incoming session on display %d can't be set since it is already null; the corresponding VirtualDisplay must have already been removed.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecordingController.java"
-    },
-    "-5750232782380780139": {
-      "message": "Content Recording: Pause the recording session on display %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/ContentRecordingController.java"
-    },
-    "-8058211784911995417": {
-      "message": "DeferredDisplayUpdater: applying DisplayInfo immediately",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/DeferredDisplayUpdater.java"
-    },
-    "1944392458089872195": {
-      "message": "DeferredDisplayUpdater: partially applying DisplayInfo immediately",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/DeferredDisplayUpdater.java"
-    },
-    "8391643185322408089": {
-      "message": "DeferredDisplayUpdater: deferring DisplayInfo update",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/DeferredDisplayUpdater.java"
-    },
-    "-915675022936690176": {
-      "message": "DeferredDisplayUpdater: applied DisplayInfo after deferring",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/DeferredDisplayUpdater.java"
-    },
-    "3778139410556664218": {
-      "message": "%s skipping animation and directly setting alpha=%f, blur=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_DIMMER",
-      "at": "com\/android\/server\/wm\/DimmerAnimationHelper.java"
-    },
-    "-6357087772993832060": {
-      "message": "Starting animation on %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_DIMMER",
-      "at": "com\/android\/server\/wm\/DimmerAnimationHelper.java"
-    },
-    "-1187783168730646350": {
-      "message": "Dim animation requested: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_DIMMER",
-      "at": "com\/android\/server\/wm\/DimmerAnimationHelper.java"
-    },
-    "2230151187668089583": {
-      "message": "%s forcing orientation to %d for display id=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayArea.java"
-    },
-    "3968604152682328317": {
-      "message": "Register display organizer=%s uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "-3066370283926570943": {
-      "message": "Don't organize or trigger events for untrusted displayId=%d",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "-943497726140336963": {
-      "message": "Unregister display organizer=%s uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "5147103403966149923": {
-      "message": "Create TaskDisplayArea uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "-1659480097203667175": {
-      "message": "Delete TaskDisplayArea uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "-4514772405648277945": {
-      "message": "DisplayArea appeared name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "995846188225477231": {
-      "message": "DisplayArea vanished name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "-1007032390526684388": {
-      "message": "DisplayArea info changed name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
-    },
-    "4917824058925068521": {
-      "message": "The TaskDisplayArea with %s does not exist.",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/DisplayAreaPolicyBuilder.java"
-    },
-    "1432179297701477868": {
-      "message": "Looking for focus: %s, flags=%d, canReceive=%b, reason=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-1998969924927409574": {
-      "message": "findFocusedWindow: focusedApp=null using new focus @ %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-1513212297283619351": {
-      "message": "findFocusedWindow: focusedApp windows not focusable using new focus @ %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "271075236829935631": {
-      "message": "findFocusedWindow: Reached focused app=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "3066566560703920191": {
-      "message": "findFocusedWindow: Found new focus @ %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-8667452489821572603": {
-      "message": "First draw done in potential wallpaper target %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "6283995720623600346": {
-      "message": "handleNotObscuredLocked: %s was holding screen wakelock but no longer has FLAG_KEEP_SCREEN_ON!!! called by%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_KEEP_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "1959209522588955826": {
-      "message": "Acquiring screen wakelock due to %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_KEEP_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "352937214222086717": {
-      "message": "Releasing screen wakelock, obscured by %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_KEEP_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "2632363530212357762": {
-      "message": "Set mOrientationChanging of %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-9191821315942566105": {
-      "message": "Display id=%d is frozen while keyguard locked, return %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-74384795669614579": {
-      "message": "Display id=%d is ignoring orientation request for %d, return %d following a per-app override for %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-3395592185328682328": {
-      "message": "Display id=%d is ignoring orientation request for %d, return %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "3438870491084701232": {
-      "message": "No app or window is requesting an orientation, return %d for display id=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-1123818872155982592": {
-      "message": "findFocusedWindow: No focusable windows, display=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-2192125645150932161": {
-      "message": "Current transition prevents automatic focus change",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "3101160328044493048": {
-      "message": "Changing focus from %s to %s displayId=%d Callers=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "7634130879993688940": {
-      "message": "setFocusedApp %s displayId=%d Callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-4130402450005935184": {
-      "message": "SURFACE LEAK DESTROY: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "4464269036743635127": {
-      "message": "setInputMethodTarget %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "4835192778854186097": {
-      "message": "create IME snapshot for %s, buff width=%s, height=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "2408509162360028352": {
-      "message": "Set IME snapshot position: (%d, %d)",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "2005731931732324688": {
-      "message": "remove IME snapshot, caller=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-6495118720675662641": {
-      "message": "show IME snapshot, ime target=%s, callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-4354595179162289537": {
-      "message": "setInputMethodInputTarget %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "2432701541536053712": {
-      "message": "DisplayContent: boot is waiting for window of type %d to be drawn",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "5683557566110711213": {
-      "message": "******** booted=%b msg=%b haveBoot=%b haveApp=%b haveWall=%b wallEnabled=%b haveKeyguard=%b",
-      "level": "INFO",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-124113386733162358": {
-      "message": "onWindowAnimationFinished, wc=%s, type=%s, imeSnapshot=%s, target=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-1556099709547629010": {
-      "message": "ImeContainer just became organized. Reparenting under parent. imeParentSurfaceControl=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "1119786654111970652": {
-      "message": "ImeContainer just became organized but it doesn't have a parent or the parent doesn't have a surface control. mSurfaceControl=%s imeParentSurfaceControl=%s",
-      "level": "ERROR",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "7019634211809476510": {
-      "message": "Execute app transition: %s, displayId: %d Callers=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-3219913508985161450": {
-      "message": "Wallpaper layer changed: assigning layers + relayout",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-8165317816061445169": {
-      "message": "Content Recording: Display %d state was (%d), is now (%d), so update recording?",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "4162342172327950908": {
-      "message": "Content Recording: Attempting to mirror self on %d",
-      "level": "WARN",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "5489691866309868814": {
-      "message": "Content Recording: Found no matching mirror display for id=%d for DEFAULT_DISPLAY. Nothing to mirror.",
-      "level": "WARN",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-39794010824230928": {
-      "message": "Content Recording: Attempting to mirror %d from %d but no DisplayContent associated. Changing to mirror default display.",
-      "level": "WARN",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "6545352723229848841": {
-      "message": "Content Recording: Successfully created a ContentRecordingSession for displayId=%d to mirror content from displayId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONTENT_RECORDING",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
-    "-6228339285356824882": {
-      "message": "finishScreenTurningOn: mAwake=%b, mScreenOnEarly=%b, mScreenOnFully=%b, mKeyguardDrawComplete=%b, mWindowManagerDrawComplete=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayPolicy.java"
-    },
-    "-6028033043540330282": {
-      "message": "Finished screen turning on...",
-      "level": "INFO",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/DisplayPolicy.java"
-    },
-    "-7427596081878257508": {
-      "message": "selectAnimation in %s: transit=%d",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/DisplayPolicy.java"
-    },
-    "-6269658847003264525": {
-      "message": "**** STARTING EXIT",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/DisplayPolicy.java"
-    },
-    "-6776561147903919733": {
-      "message": "Deferring rotation, rotation is paused.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "7439675997626642740": {
-      "message": "Deferring rotation, animation in progress.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "1104181226551849840": {
-      "message": "Deferring rotation, still finishing previous rotation",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-2222079183499215612": {
-      "message": "Deferring rotation, display is not enabled.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "662988298513100908": {
-      "message": "Reverting orientation. Rotating to %s from %s rather than %s.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-7113483678655694375": {
-      "message": "Computed rotation=%s (%d) for display id=%d based on lastOrientation=%s (%d) and oldRotation=%s (%d)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-8809129029906317617": {
-      "message": "Display id=%d selected orientation %s (%d), got rotation %s (%d)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "6753221849083491323": {
-      "message": "Display id=%d rotation changed to %d from %d, lastOrientation=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-1216224951455892544": {
-      "message": "Performing post-rotate rotation after seamless rotation",
-      "level": "INFO",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-7672508047849737424": {
-      "message": "selectRotationAnimation topFullscreen=%s rotationAnimation=%d forceJumpcut=%b",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-2426404033822048710": {
-      "message": "screenOnEarly=%b, awake=%b, currentAppOrientation=%d, orientationSensorEnabled=%b, keyguardDrawComplete=%b, windowManagerDrawComplete=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "7339471241580327852": {
-      "message": "rotationForOrientation(orient=%s (%d), last=%s (%d)); user=%s (%d) %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "5325136615007859122": {
-      "message": "Invalid surface rotation angle in config_deviceTabletopRotations: %d",
-      "level": "ERROR",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "4616480353797749295": {
-      "message": "config_deviceTabletopRotations is not defined. Half-fold letterboxing will work inconsistently.",
-      "level": "WARN",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "8852346340572084230": {
-      "message": "foldStateChanged: displayId %d, halfFoldStateChanged %s, saved rotation: %d, mUserRotation: %d, mLastSensorRotation: %d, mLastOrientation: %d, mRotation: %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "-8674269704471038429": {
-      "message": "onProposedRotationChanged, rotation=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "418312772547457152": {
-      "message": "Enabling listeners",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "4641814558273780952": {
-      "message": "Disabling listeners",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotation.java"
-    },
-    "7429138692709430028": {
-      "message": "Display id=%d is ignoring all orientation requests, camera is active and the top activity is eligible for force rotation, return %s,portrait activity: %b, is natural orientation portrait: %b.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "-5176775281239247368": {
-      "message": "Reverting orientation after camera compat force rotation",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "-2188976047008497712": {
-      "message": "Saving original orientation before camera compat, last orientation is %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "-1534784331886673955": {
-      "message": "DisplayRotationCompatPolicy: Multi-window toast not shown as package '%s' cannot be found.",
-      "level": "ERROR",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "-5121743609317543819": {
-      "message": "Display id=%d is notified that camera is closed but activity is still refreshing. Rescheduling an update.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "1769752961776628557": {
-      "message": "Display id=%d is notified that Camera is closed, updating rotation.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java"
-    },
-    "-6949326633913532620": {
-      "message": "NOSENSOR override detected",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationReversionController.java"
-    },
-    "-2060428960792625366": {
-      "message": "NOSENSOR override is absent: reverting",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationReversionController.java"
-    },
-    "-4296736202875980050": {
-      "message": "Other orientation overrides are in place: not reverting",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayRotationReversionController.java"
-    },
-    "7928129513685401229": {
-      "message": "Pausing rotation during drag",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DragState.java"
-    },
-    "8231481023986546563": {
-      "message": "Resuming rotation after drag",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DragState.java"
-    },
-    "12662399232325663": {
-      "message": "DRAG %s: pos=(%d,%d)",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/DragState.java"
-    },
-    "-1797662102094201628": {
-      "message": "Attempt to transfer touch gesture with non-existent embedded window",
-      "level": "WARN",
-      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
-      "at": "com\/android\/server\/wm\/EmbeddedWindowController.java"
-    },
-    "929964979835124721": {
-      "message": "Attempt to transfer touch gesture using embedded window with no associated host",
-      "level": "WARN",
-      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
-      "at": "com\/android\/server\/wm\/EmbeddedWindowController.java"
-    },
-    "676191989331669410": {
-      "message": "Attempt to transfer touch gesture with host window not associated with embedded window",
-      "level": "WARN",
-      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
-      "at": "com\/android\/server\/wm\/EmbeddedWindowController.java"
-    },
-    "553249487221306249": {
-      "message": "Attempt to transfer touch gesture using embedded window that has no input channel",
-      "level": "WARN",
-      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
-      "at": "com\/android\/server\/wm\/EmbeddedWindowController.java"
-    },
-    "-8678904073078032058": {
-      "message": "Attempt to transfer touch gesture using a host window with no input channel",
-      "level": "WARN",
-      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
-      "at": "com\/android\/server\/wm\/EmbeddedWindowController.java"
-    },
-    "-786355099910065121": {
-      "message": "IME target changed within ActivityRecord",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "2634707843050913730": {
-      "message": "Schedule IME show for %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "8923821958256605927": {
-      "message": "Run showImeRunner",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "-3529253275087521638": {
-      "message": "call showInsets(ime) on %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "7927729210300708186": {
-      "message": "showInsets(ime) was requested by different window: %s ",
-      "level": "WARN",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "-6529782994356455131": {
-      "message": "abortShowImePostLayout",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "-6629998049460863403": {
-      "message": "dcTarget: %s mImeRequester: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
-    },
-    "-8553129529717081823": {
-      "message": "Input focus has changed to %s display=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/InputMonitor.java"
-    },
-    "4027486077547983902": {
-      "message": "App %s is focused, but the window is not ready. Start a transaction to remove focus from the window of non-focused apps.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/InputMonitor.java"
-    },
-    "-8537908614386667236": {
-      "message": "Focus not requested for window=%s because it has no surface or is not focusable.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/InputMonitor.java"
-    },
-    "-6346673514571615151": {
-      "message": "Focus requested for window=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/InputMonitor.java"
-    },
-    "1522894362518893789": {
-      "message": "InsetsSource setWin %s for type %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
-    },
-    "6243049416211184258": {
-      "message": "InsetsSource Control %s for target %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
-    },
-    "-8234068212532234206": {
-      "message": "InsetsSource updateVisibility for %s, serverVisible: %s clientVisible: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
-    },
-    "-8601070090234611338": {
-      "message": "ControlAdapter startAnimation mSource: %s controlTarget: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
-    },
-    "-6857870589074001153": {
-      "message": "ControlAdapter onAnimationCancelled mSource: %s mControlTarget: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
-    },
-    "-6684172224226118673": {
-      "message": "onImeControlTargetChanged %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/InsetsStateController.java"
-    },
-    "8891808212671675155": {
-      "message": "clearLockedTasks: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "8970634498594714645": {
-      "message": "removeLockedTask: removed %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "8735562128135241598": {
-      "message": "removeLockedTask: task=%s last task, reverting locktask mode. Callers=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "737192738184050156": {
-      "message": "startLockTaskMode: Can't lock due to auth",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "-7119521978513736788": {
-      "message": "Mode default, asking user",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "-1557441750657584614": {
-      "message": "%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "-4314079913933391851": {
-      "message": "setLockTaskMode: Can't lock due to auth",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "3321878763832425380": {
-      "message": "setLockTaskMode: Locking to %s Callers=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "-4819015209006579825": {
-      "message": "onLockTaskPackagesUpdated: removing %s mLockTaskAuth()=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "2119751067469297845": {
-      "message": "onLockTaskPackagesUpdated: starting new locktask task=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/LockTaskController.java"
-    },
-    "3788905348567806832": {
-      "message": "startAnimation",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/NonAppWindowAnimationAdapter.java"
-    },
-    "705955074330737483": {
-      "message": "onAnimationCancelled",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/NonAppWindowAnimationAdapter.java"
-    },
-    "5106303602270682056": {
-      "message": "Adding display switch to existing collecting transition",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/PhysicalDisplaySwitchTransitionLauncher.java"
-    },
-    "-1640401313436844534": {
-      "message": "Resetting frozen recents task list reason=app touch win=%s x=%d y=%d insetFrame=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RecentTasks.java"
-    },
-    "-8803811426486764449": {
-      "message": "Setting frozen recents task list",
-      "level": "INFO",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RecentTasks.java"
-    },
-    "4040735335719974079": {
-      "message": "Resetting frozen recents task list reason=timeout",
-      "level": "INFO",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RecentTasks.java"
-    },
-    "3308140128142966415": {
-      "message": "remove RecentTask %s when finishing user %d",
-      "level": "INFO",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RecentTasks.java"
-    },
-    "-3758280623533049031": {
-      "message": "Preload recents with %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-3365656764099317101": {
-      "message": "Updated config=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-7165162073742035900": {
-      "message": "Real start recents",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-3403665718306852375": {
-      "message": "startRecentsActivity(): intent=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-8325607672707336373": {
-      "message": "No root task above target root task=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-7278356485797757819": {
-      "message": "Moved rootTask=%s behind rootTask=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "1012359606301505741": {
-      "message": "Started intent=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "5474198007669537235": {
-      "message": "onAnimationFinished(): controller=%s reorderMode=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "3525834288436624965": {
-      "message": "onAnimationFinished(): targetRootTask=%s targetActivity=%s mRestoreTargetBehindRootTask=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-5961176083217302671": {
-      "message": "Expected target rootTask=%s to be top most but found rootTask=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "-5893976429537642045": {
-      "message": "Expected target rootTask=%s to restored behind rootTask=%s but it is behind rootTask=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "4515487264815398694": {
-      "message": "onRootTaskOrderChanged(): rootTask=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimation.java"
-    },
-    "6530904107141905844": {
-      "message": "screenshotTask(%d): mCanceled=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-3286551982713129633": {
-      "message": "setFinishTaskTransaction(%d): transaction=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "5187133389446459984": {
-      "message": "finish(%b): mCanceled=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "6879496555046975661": {
-      "message": "setInputConsumerEnabled(%s): mCanceled=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-5305978958548091997": {
-      "message": "setHomeApp(%s)",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-3801497203749932106": {
-      "message": "addAnimation(%s)",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "3721473589747203697": {
-      "message": "removeAnimation(%d)",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "5156407755139006078": {
-      "message": "removeWallpaperAnimation()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-1997836523186474317": {
-      "message": "startAnimation(): mPendingStart=%b mCanceled=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-7532294363367395195": {
-      "message": "startAnimation(): Notify animation start: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-1336603089105439710": {
-      "message": "collectTaskRemoteAnimations, target: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "2547528895718568379": {
-      "message": "createWallpaperAnimations()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "5444932814080651576": {
-      "message": "cancelAnimation(): reason=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "622027757443954945": {
-      "message": "cleanupAnimation(): Notify animation finished mPendingAnimations=%d reorderMode=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
-    },
-    "-5444412205083968021": {
-      "message": "createAnimationAdapter(): container=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "6986037643494242400": {
-      "message": "goodToGo()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-1902984034737899928": {
-      "message": "goodToGo(): Animation canceled already",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "6727618365838540075": {
-      "message": "goodToGo(): No apps to animate, mPendingAnimations=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-2525509826755873433": {
-      "message": "goodToGo(): onAnimationStart, transit=%s, apps=%d, wallpapers=%d, nonApps=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-1148281153370899511": {
-      "message": "startAnimation(): Notify animation start:",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "7501495587927045391": {
-      "message": "cancelAnimation(): reason=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-1424368765415574722": {
-      "message": "Starting remote animation",
-      "level": "INFO",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-2676700429940607853": {
-      "message": "%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "7094394833775573933": {
-      "message": "createAppAnimations()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-4411070227420990074": {
-      "message": "\tAdd container=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-4411631520586057580": {
-      "message": "\tRemove container=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-7002230949892506736": {
-      "message": "createWallpaperAnimations()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "8743612568733301175": {
-      "message": "createNonAppWindowAnimations()",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-2716313493239418198": {
-      "message": "onAnimationFinished(): mPendingAnimations=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "7221400292415257709": {
-      "message": "onAnimationFinished(): Notify animation finished:",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "7483194715776694698": {
-      "message": "\tcontainer=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "6697982664439247822": {
-      "message": "\twallpaper=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "6938838346517131964": {
-      "message": "\tnonApp=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-3880290251819699866": {
-      "message": "Finishing remote animation",
-      "level": "INFO",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "-7169244688499657832": {
-      "message": "app-onAnimationFinished(): mOuter=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "3923111589554171989": {
-      "message": "app-release(): mOuter=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "8918152561092803537": {
-      "message": "startAnimation",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/RemoteAnimationController.java"
-    },
-    "1736084564226683342": {
-      "message": "Starting remote display change: from [rot = %d], to [%dx%d, rot = %d]",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/RemoteDisplayChangeController.java"
-    },
-    "-4617490621756721600": {
-      "message": "resetTaskIntendedTask: calling finishActivity on %s",
-      "level": "WARN",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ResetTargetTaskHelper.java"
-    },
-    "3361857745281957526": {
-      "message": "Removing activity %s from task=%s adding to task=%s Callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/ResetTargetTaskHelper.java"
-    },
-    "3958829063955690349": {
-      "message": "Pushing next activity %s out to target's task %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ResetTargetTaskHelper.java"
-    },
-    "1730793580703791926": {
-      "message": "Start pushing activity %s out to bottom task %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/ResetTargetTaskHelper.java"
-    },
-    "-8961882615747561040": {
-      "message": "Looking for task of %s in %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "8899721161806265460": {
-      "message": "Skipping task: (mismatch activity\/task) %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "6841550641928224256": {
-      "message": "Skipping %s: voice session",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "4468520936943270392": {
-      "message": "Skipping %s: different user",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-4764624740388751268": {
-      "message": "Skipping %s: mismatch root %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "9031436623838917667": {
-      "message": "Skipping %s: mismatch activity type",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "6022828946761399284": {
-      "message": "Comparing existing cls=%s \/aff=%s to new cls=%s \/aff=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-3413620974545388702": {
-      "message": "Found matching class!",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-2649361982747625232": {
-      "message": "For Intent %s bringing to top: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "7046266138098744790": {
-      "message": "Found matching affinity candidate!",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "6481733556290926693": {
-      "message": "Not a match: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "3331249072840061049": {
-      "message": "New topFocusedDisplayId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "865845626039449679": {
-      "message": "SURFACE RECOVER DESTROY: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-4150611780753674023": {
-      "message": "Wallpaper may change!  Adjusting",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "4177291132772627699": {
-      "message": "With display frozen, orientationChangeComplete=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-5513616928833586179": {
-      "message": "Performing post-rotate rotation",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-7698723716637247994": {
-      "message": "handleNotObscuredLocked w: %s, w.mHasSurface: %b, w.isOnScreen(): %b, w.isDisplayedLw(): %b, w.mAttrs.userActivityTimeout: %d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_KEEP_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "8621291657500572364": {
-      "message": "mUserActivityTimeout set to %d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_KEEP_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-1418592110950138870": {
-      "message": "Looking for task of type=%s, taskAffinity=%s, intent=%s, info=%s, preferredTDA=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "2828976699481734755": {
-      "message": "No task found",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "-4405347314716558580": {
-      "message": "Create sleep token: tag=%s, displayId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "1329131651776855609": {
-      "message": "Remove sleep token: tag=%s, displayId=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "1653728842643223887": {
-      "message": "allResumedActivitiesIdle: rootTask=%d %s not idle",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "3785779399471740019": {
-      "message": "allPausedActivitiesComplete: r=%s state=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/RootWindowContainer.java"
-    },
-    "4666728330189027178": {
-      "message": "Failed to register MediaProjectionWatcherCallback",
-      "level": "ERROR",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/ScreenRecordingCallbackController.java"
-    },
-    "8010999385228654193": {
-      "message": "  FREEZE %s: CREATE",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
-    "-6586462455018013482": {
-      "message": "Start rotation animation. customAnim=%s, mCurRotation=%s, mOriginalRotation=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
-    "-5825336546511998057": {
-      "message": "  FREEZE %s: DESTROY",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
-    "6883897856740637908": {
-      "message": "ScreenRotation still animating: type: %d\nmDisplayAnimator: %s\nmEnterBlackFrameAnimator: %s\nmRotateScreenAnimator: %s\nmScreenshotRotationAnimator: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
-    "-3943622313307983155": {
-      "message": "ScreenRotationAnimation onAnimationEnd",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
-    "-1594708154257031561": {
-      "message": "  NEW SURFACE SESSION %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/Session.java"
-    },
-    "2638961674625826260": {
-      "message": "  KILL SURFACE SESSION %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/Session.java"
-    },
-    "5380455212389185829": {
-      "message": "Removing dim surface %s on transaction %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_DIMMER",
-      "at": "com\/android\/server\/wm\/SmoothDimmer.java"
-    },
-    "-820649637734629482": {
-      "message": "Animation start delayed for %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/SurfaceAnimator.java"
-    },
-    "1371702561758591499": {
-      "message": "Animation start for %s, anim=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/SurfaceAnimator.java"
-    },
-    "-5370506662233296228": {
-      "message": "Cancelling animation restarting=%b for %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/SurfaceAnimator.java"
-    },
-    "-3045933321063743917": {
-      "message": "Reparenting to original parent: %s for %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/SurfaceAnimator.java"
-    },
-    "-855083149623806053": {
-      "message": "Reparenting to leash for %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/SurfaceAnimator.java"
-    },
-    "-2595923278763115975": {
-      "message": "  THUMBNAIL %s: CREATE",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/SurfaceFreezer.java"
-    },
-    "-8609432747982701423": {
-      "message": "Setting Intent of %s to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "-9155008290180285590": {
-      "message": "Setting Intent of %s to target %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TASKS",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "6424220442758232673": {
-      "message": "Removing and adding activity %s to root task at top callers=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "-1028890010429408946": {
-      "message": "addChild: %s at top.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "38991867929900764": {
-      "message": "setLockTaskAuth: task=%s mLockTaskAuth=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_LOCKTASK",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "-3401780415681318335": {
-      "message": "applyAnimationUnchecked, control: %s, task: %s, transit: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RECENTS_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "4037728373502324767": {
-      "message": "resumeNextFocusableActivityWhenRootTaskIsEmpty: %s, go home",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "-2261257617975724313": {
-      "message": "Adding activity %s to task %s callers: %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/Task.java"
-    },
-    "7378236902389922467": {
-      "message": "App is requesting an orientation, return %d for display id=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/TaskDisplayArea.java"
-    },
-    "2005499548343677845": {
-      "message": "No app is requesting an orientation, return %d for display id=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/TaskDisplayArea.java"
-    },
-    "646076184396185067": {
-      "message": "App died while pausing: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-7596917112222697106": {
-      "message": "Waiting for screen on due to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-8472961767591168851": {
-      "message": "Sleep needs to pause %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-1472885369931482317": {
-      "message": "Sleep still waiting to pause %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-2693016397674039814": {
-      "message": "Sleep still need to stop %d activities",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "8892147402270850613": {
-      "message": "resumeTopActivity: Skip resume: some activity pausing.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "958293038551087087": {
-      "message": "resumeTopActivity: Top activity resumed %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "4340810061306869942": {
-      "message": "resumeTopActivity: Going to sleep and all paused",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-7681635901109618685": {
-      "message": "resumeTopActivity: Pausing %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-3463034909521330970": {
-      "message": "resumeTopActivity: Skip resume: need to start pausing",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-2264725269594226780": {
-      "message": "resumeTopActivity: Top activity resumed (dontWaitForPause) %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-8359248677489986541": {
-      "message": "Moving to RESUMED: %s (in existing)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-8483536760290526299": {
-      "message": "resumeTopActivity: Resumed %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-4911500660485375799": {
-      "message": "Resume failed; resetting state to %s: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "3723891427717889172": {
-      "message": "resumeTopActivity: Restarting %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "1529152423206006904": {
-      "message": "startPausing: taskFrag =%s mResumedActivity=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "136971836458873178": {
-      "message": "Moving to PAUSING: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-208996201631695262": {
-      "message": "Auto-PIP allowed, requesting PIP mode via requestStartTransition(): %s, willAutoPip: %b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-4123447037565780632": {
-      "message": "Auto-PIP allowed, entering PIP mode directly: %s, didAutoPip: %b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-3710776151994843320": {
-      "message": "Key dispatch not paused for screen off",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "8543865526552245064": {
-      "message": "Activity not running or entered PiP, resuming next.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "1917394294249960915": {
-      "message": "Enqueueing pending pause: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-8936154984341817384": {
-      "message": "Complete pause: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "4971958459026584561": {
-      "message": "Executing finish of activity: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-7113165071559345173": {
-      "message": "Enqueue pending stop if needed: %s wasStopping=%b visibleRequested=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-3777748052684097788": {
-      "message": "App died during pause, not stopping: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
-    "-2808577027789344626": {
-      "message": "TaskFragment appeared name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-3582112419663037270": {
-      "message": "TaskFragment vanished name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "3294593748816836746": {
-      "message": "TaskFragment info changed name=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "5007230330523630579": {
-      "message": "TaskFragment parent info changed name=%s parentTaskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "6475066005515810081": {
-      "message": "Sending TaskFragment error exception=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-7893265697482064583": {
-      "message": "Activity=%s reparent to taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "7048981249808281819": {
-      "message": "Defer transition id=%d for TaskFragmentTransaction=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-1315509853595025526": {
-      "message": "Deferred transition id=%d has been continued before the TaskFragmentTransaction=%s is finished",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "7421521217481553621": {
-      "message": "Continue transition id=%d for TaskFragmentTransaction=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "3509684748201636981": {
-      "message": "Register task fragment organizer=%s uid=%d pid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-6777461169027010201": {
-      "message": "Unregister task fragment organizer=%s uid=%d pid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "1327792561585467865": {
-      "message": "Register remote animations for organizer=%s uid=%d pid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-2524361347368208519": {
-      "message": "Unregister remote animations for organizer=%s uid=%d pid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java"
-    },
-    "-6181189296332065162": {
-      "message": "Task appeared taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "6535296991997214354": {
-      "message": "Task vanished taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-6638141753476761854": {
-      "message": "Task info changed taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-8100069665346602959": {
-      "message": "Task back pressed on root taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-610138383571469481": {
-      "message": "Register task organizer=%s uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "1705860547080436016": {
-      "message": "Unregister task organizer=%s uid=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-2286607251115721394": {
-      "message": "createRootTask unknown displayId=%d",
-      "level": "ERROR",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "8466395828406204368": {
-      "message": "Create root task displayId=%d winMode=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "6867170298997192615": {
-      "message": "Delete root task display=%d winMode=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-4296644831871159510": {
-      "message": "Set intercept back pressed on root=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-558727273888268534": {
-      "message": "Restart top activity process of Task taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "-7064081458956324316": {
-      "message": "Update camera compat control state to %s for taskId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/TaskOrganizerController.java"
-    },
-    "3007492640459931179": {
-      "message": "Pausing rotation during re-position",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/TaskPositioner.java"
-    },
-    "5478864901888225320": {
-      "message": "Resuming rotation after re-position",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/TaskPositioner.java"
-    },
-    "-2700498872917476567": {
-      "message": "Starting a Recents transition which can be parallel.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-8676279589273455859": {
-      "message": "Transition %d: Set %s as transient-launch",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "2734227875286695843": {
-      "message": "Override sync-method for %s because seamless rotating",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "2808217645990556209": {
-      "message": "Starting Transition %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-4672522645315112127": {
-      "message": "Collecting in transition %d: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "65881049096729394": {
-      "message": " Creating Ready-group for Transition %d with root=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "1101215730201607371": {
-      "message": "Existence Changed in transition %d: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-3942072270654590479": {
-      "message": "Set transition ready=%b %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-4688704756793656554": {
-      "message": "  Commit activity becoming invisible: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "1817207111271920503": {
-      "message": "  Skipping post-transition snapshot for task %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-2960171012238790176": {
-      "message": "  Commit wallpaper becoming invisible: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "1230784960534033968": {
-      "message": "Aborting Transition: %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-892865733969888022": {
-      "message": "Force Playing Transition: %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-1354622424895965634": {
-      "message": "#%d: Met condition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-5350671621840749173": {
-      "message": "Calling onTransitionReady: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "1830385055586991567": {
-      "message": "Apply and finish immediately because player is disabled for transition #%d .",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-758501334967569539": {
-      "message": "      SKIP: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-2714847784842612086": {
-      "message": "      SKIP: is wallpaper",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "1855461834864671586": {
-      "message": "      check sibling %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-6292043690918793069": {
-      "message": "        SKIP: sibling is visible but not part of transition",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "7897657428993391672": {
-      "message": "        unrelated invisible sibling %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "3873493605120555608": {
-      "message": "        sibling is a participant with mode %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "7665553560859456426": {
-      "message": "          SKIP: common mode mismatch. was %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-8916099332247176657": {
-      "message": "    checking %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-6818387694968032301": {
-      "message": "      SKIP: its sibling was rejected",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-7326702978448933012": {
-      "message": "        keep as target %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "943961036184959431": {
-      "message": "        remove from targets %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "841543868388687804": {
-      "message": "      CAN PROMOTE: promoting to parent %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "743586316159041023": {
-      "message": "Start calculating TransitionInfo based on participants: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-7247430213293162757": {
-      "message": "  Rejecting as detached: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-5811837191094192313": {
-      "message": "  Rejecting as no-op: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-1153926883525904120": {
-      "message": "  Initial targets: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-9191328656870721224": {
-      "message": "  Final targets: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-2971560715211489406": {
-      "message": " Add condition %s for #%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "7631061720069910622": {
-      "message": " Met condition %s for #%d (%d left)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-4770394322045550928": {
-      "message": " Setting Ready-group to %b. group=%s from %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "6039132370452820927": {
-      "message": " Setting allReady override",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-3263748870548668913": {
-      "message": " allReady query: used=%b override=%b defer=%d states=[%s]",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "2699903406935781477": {
-      "message": "Screenshotting %s [%s]",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/Transition.java"
-    },
-    "-233096875591058130": {
-      "message": "Creating Transition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "2154694726162725342": {
-      "message": "Start collecting in Transition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-4546322749928357965": {
-      "message": "Registering transition player %s over %d other players",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-4250307779892136611": {
-      "message": "Registering transition player %s ",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "3242771541905259983": {
-      "message": "Attempt to unregister transition player %s but it isn't registered",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "3691912781236221027": {
-      "message": "Unregistering active transition player %s at index=%d leaving %d in stack",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-2879980134100946679": {
-      "message": "Unregistering transition player %s at index=%d leaving %d in stack",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-4235778637051052061": {
-      "message": "Disabling player for transition #%d because display isn't enabled yet",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "4005704720444963797": {
-      "message": "Requesting StartTransition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-6030030735787868329": {
-      "message": "Finish Transition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-1611886029896664304": {
-      "message": "Moving #%d from collecting to waiting.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-7097461682459496366": {
-      "message": "Playing #%d in parallel on track #%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-7364464699035275052": {
-      "message": "Marking #%d animation as SYNC.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-5509640937151643757": {
-      "message": "Queueing transition: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-2741593375634604522": {
-      "message": "Queueing legacy sync-set: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "-5051723169912572741": {
-      "message": "%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "4281568181321808508": {
-      "message": "    startWCT=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "5141999957143860655": {
-      "message": "    info=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS_MIN",
-      "at": "com\/android\/server\/wm\/TransitionController.java"
-    },
-    "3445530300764535903": {
-      "message": "unregister failed, couldn't find deathRecipient for %s with id=%d",
-      "level": "ERROR",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "-6140852484700685564": {
-      "message": "Registering listener=%s with id=%d for window=%s with %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "3691097873058247482": {
-      "message": "Unregistering listener=%s with id=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "6408851516381868623": {
-      "message": "Checking %d windows",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "7718187745767272532": {
-      "message": "Skipping %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "-1135667737459933313": {
-      "message": "coveredRegionsAbove updated with %s frame:%s region:%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "854487339271667012": {
-      "message": "checkIfInThreshold fractionRendered=%f alpha=%f currTimeMs=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "-2248576188205088843": {
-      "message": "lastState=%s newState=%s alpha=%f minAlpha=%f fractionRendered=%f minFractionRendered=%f",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "6236170793308011579": {
-      "message": "Adding untrusted state listener=%s with id=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "5405816744363636527": {
-      "message": "Adding trusted state listener=%s with id=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "-5162728346383863020": {
-      "message": "computeFractionRendered: visibleRegion=%s screenBounds=%s contentSize=%s scale=%f,%f",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "898769258643799441": {
-      "message": "fractionRendered scale=%f",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "-455501334697331596": {
-      "message": "fractionRendered boundsOverSource=%f",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_TPL",
-      "at": "com\/android\/server\/wm\/TrustedPresentationListenerController.java"
-    },
-    "1964980935866463086": {
-      "message": "\tWallpaper of display=%s is not visible",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/WallpaperAnimationAdapter.java"
-    },
-    "8131665298937888044": {
-      "message": "startAnimation",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/WallpaperAnimationAdapter.java"
-    },
-    "8030745595351281943": {
-      "message": "onAnimationCancelled",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_REMOTE_ANIMATIONS",
-      "at": "com\/android\/server\/wm\/WallpaperAnimationAdapter.java"
-    },
-    "-5254364639040552989": {
-      "message": "Hiding wallpaper %s from %s target=%s prev=%s callers=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-6856158722649737204": {
-      "message": "Waiting for offset complete...",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-5966696477376431672": {
-      "message": "Offset complete!",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "4198834090919802045": {
-      "message": "Timeout waiting for wallpaper to offset: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-3477087868568520027": {
-      "message": "No longer animating wallpaper targets!",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-3751289048117070874": {
-      "message": "New wallpaper target: %s prevTarget: %s caller=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "5625223922466895079": {
-      "message": "New animation: %s old animation: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "7634524672408826188": {
-      "message": "Animating wallpapers: old: %s hidden=%b new: %s hidden=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-4345077332231178044": {
-      "message": "Old wallpaper still the target.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "257349083882992098": {
-      "message": "updateWallpaperTokens requestedVisibility=%b on keyguardLocked=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "7408402065665963407": {
-      "message": "Wallpaper at display %d - visibility: %b, keyguardLocked: %b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-8598497865499265448": {
-      "message": "Wallpaper target=%s prev=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-5402010429724738603": {
-      "message": "Wallpaper should be visible but has not been drawn yet. mWallpaperDrawState=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "4151327328872447804": {
-      "message": "New home screen wallpaper: %s, prev: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "6943105284590482059": {
-      "message": "New lock\/shared screen wallpaper: %s, prev: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperController.java"
-    },
-    "-7936547457136708587": {
-      "message": "Wallpaper token %s visible=%b",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WALLPAPER",
-      "at": "com\/android\/server\/wm\/WallpaperWindowToken.java"
-    },
-    "7214407534407465113": {
-      "message": "commitVisibility: %s: visible=%b mVisibleRequested=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WallpaperWindowToken.java"
-    },
-    "-5360147928134631656": {
-      "message": ">>> OPEN TRANSACTION animate",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowAnimator.java"
-    },
-    "-3993586364046165922": {
-      "message": "<<< CLOSE TRANSACTION animate",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowAnimator.java"
-    },
-    "-5231580410559054259": {
-      "message": "%s is requesting orientation %d (%s)",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "6949303417875346627": {
-      "message": "Starting animation on %s: type=%d, anim=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "-8730310387200541562": {
-      "message": "applyAnimation: transition animation is disabled or skipped. container=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "2363818604357955690": {
-      "message": "applyAnimation: transit=%s, enter=%b, wc=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "2262119454684034794": {
-      "message": "applyAnimation: container=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "5857165752965610762": {
-      "message": "Loading animation for app transition. transit=%s enter=%b frame=%s insets=%s surfaceInsets=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "9017113545720281233": {
-      "message": "Loaded animation %s for %s, duration: %d, stack=%s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "5272307326252759722": {
-      "message": "onSyncFinishedDrawing %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "-8311909671193661340": {
-      "message": "setSyncGroup #%d on %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "-3871009616397322067": {
-      "message": "finishSync cancel=%b for %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "-4267530270533009730": {
-      "message": "Error sending initial configuration change to WindowContainer overlay",
-      "level": "ERROR",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "5179630990780610966": {
-      "message": "Error sending initial insets change to WindowContainer overlay",
-      "level": "ERROR",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowContainer.java"
-    },
-    "-131600102855790053": {
-      "message": "  THUMBNAIL %s: CREATE",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowContainerThumbnail.java"
-    },
-    "2163930285157267092": {
-      "message": "The listener does not exist.",
-      "level": "INFO",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowContextListenerController.java"
-    },
-    "6139364662459841509": {
-      "message": "Could not register window container listener token=%s, container=%s",
-      "level": "ERROR",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowContextListenerController.java"
-    },
-    "3655576047584951173": {
-      "message": "Window Manager Crash %s",
-      "level": "WTF",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3029436704707366221": {
-      "message": "Attempted to add window with a client %s that is dead. Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1303710477998542095": {
-      "message": "Attempted to add window to a display that does not exist: %d. Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8039410207325630747": {
-      "message": "Attempted to add window to a display for which the application does not have access: %d.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3451016577701561221": {
-      "message": "Window %s is already added",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "7245919222637411747": {
-      "message": "Attempted to add window with token that is not a window: %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-8579305050440451727": {
-      "message": "Attempted to add window with token that is a sub-window: %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1075040941127814341": {
-      "message": "Attempted to add private presentation window to a non-private display.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "7599690046549866326": {
-      "message": "Attempted to add presentation window to a non-suitable display.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2546047231197102533": {
-      "message": "Trying to add window with invalid user=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3713874359318494804": {
-      "message": "Attempted to add window with non-application token .%s Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6507147599943157469": {
-      "message": "Attempted to add window with exiting application token .%s Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1409483453189443362": {
-      "message": "Attempted to add starting window to token with already existing starting window",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1806907994917883598": {
-      "message": "Attempted to add starting window to token but already cleaned",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-5450131464624918523": {
-      "message": "Attempted to add input method window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6484128707849211138": {
-      "message": "Attempted to add voice interaction window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "7768591536609704658": {
-      "message": "Attempted to add wallpaper window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "7497077135474110999": {
-      "message": "Attempted to add Accessibility overlay window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8957851092580119204": {
-      "message": "Attempted to add a toast window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1945746969404688952": {
-      "message": "Attempted to add QS dialog window with bad token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3419934373251134563": {
-      "message": "Non-null activity for system window of rootType=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1161056447389155729": {
-      "message": "Adding more than one toast window for UID at a time.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7518552252637236411": {
-      "message": "Window types in WindowContext and LayoutParams.type should match! Type from LayoutParams is %d, but type from WindowContext is %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6055615852717459196": {
-      "message": "addWindow: %s startingWindow=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2829980616540274784": {
-      "message": "addWindow: New client %s: window=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7315179333005789167": {
-      "message": "Attempted to add application window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7547709658889961930": {
-      "message": "Attempted to add input method window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3009864422591182484": {
-      "message": "Attempted to add voice interaction window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2639914438438144071": {
-      "message": "Attempted to add wallpaper window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7529563697886120786": {
-      "message": "Attempted to add QS dialog window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4253401518117961686": {
-      "message": "Attempted to add Accessibility overlay window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5834230650841873680": {
-      "message": "Attempted to add a toast window with unknown token %s.  Aborting.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5265273548711408921": {
-      "message": "postWindowRemoveCleanupLocked: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3847568084407666790": {
-      "message": "Final remove of window: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_MOVEMENT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1419572818243106725": {
-      "message": "Removing %s from %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8312693933819247897": {
-      "message": "Relayout %s: oldVis=%d newVis=%d. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8319702790708803735": {
-      "message": "Exception thrown when creating surface for client %s (%s). %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "212929172223901460": {
-      "message": "Relayout of %s: focusMayChange=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-255991894956556845": {
-      "message": "Set animatingExit: reason=startExitingAnimation\/%s win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "6555160513135851764": {
-      "message": "OUT SURFACE %s: copied",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-196459205494031145": {
-      "message": "Failed to create surface control for %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-5512006943172316333": {
-      "message": "finishDrawingWindow: %s mDrawState=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2577785761087081584": {
-      "message": "Permission Denial: %s from pid=%d, uid=%d requires %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4547566763172245740": {
-      "message": "addWindowToken: Attempted to add token: %s for non-exiting displayId=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-972832559831959983": {
-      "message": "addWindowToken: Attempted to add binder token: %s for already created window token: %s displayId=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8372202339190060748": {
-      "message": "attachWindowContextToDisplayArea: calling from non-existing process pid=%d uid=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1904306629015452865": {
-      "message": "attachWindowContextToDisplayArea: trying to attach to a non-existing display:%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6845859096032432107": {
-      "message": "attachWindowContextToDisplayContent: calling from non-existing process pid=%d uid=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1473791807245791604": {
-      "message": "attachWindowContextToWindowToken: calling from non-existing process pid=%d uid=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2056866750160555704": {
-      "message": "Then token:%s is invalid. It might be removed",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1045756671264607145": {
-      "message": "removeWindowToken: Attempted to remove token: %s for non-exiting displayId=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "874825105313641295": {
-      "message": "removeWindowToken: Attempted to remove non-existing token: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5128669121055635771": {
-      "message": "moveWindowTokenToDisplay: Attempted to move token: %s to non-exiting displayId=%d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "6497954191906583839": {
-      "message": "moveWindowTokenToDisplay: Attempted to move non-existing token: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "2865882097969084039": {
-      "message": "moveWindowTokenToDisplay: Cannot move to the original display for token: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-886583195545553099": {
-      "message": "Not moving display (displayId=%d) to top. Top focused displayId=%d. Reason: FLAG_STEAL_TOP_FOCUS_DISABLED",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1557387535886241553": {
-      "message": "enableScreenAfterBoot: mDisplayEnabled=%b mForceDisplayEnabled=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6467850045030187736": {
-      "message": "enableScreenIfNeededLocked: mDisplayEnabled=%b mForceDisplayEnabled=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "179762478329442868": {
-      "message": "***** BOOT TIMEOUT: forcing display enabled",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3417569256875279779": {
-      "message": "performEnableScreen: mDisplayEnabled=%b mForceDisplayEnabled=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7516915153725082358": {
-      "message": "performEnableScreen: Waited %dms for all windows to be drawn",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1541244520024033685": {
-      "message": "performEnableScreen: Waiting for anim complete",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "2670150656385758826": {
-      "message": "performEnableScreen: bootFinished() failed.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "530628508916855904": {
-      "message": "******************** ENABLING SCREEN!",
-      "level": "INFO",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5477889324043875194": {
-      "message": "Notified TransitionController that the display is ready.",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2061779801633179448": {
-      "message": "checkBootAnimationComplete: Waiting for anim complete",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-8177456840019985809": {
-      "message": "checkBootAnimationComplete: Animation complete!",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-333924817004774456": {
-      "message": "showBootMessage: msg=%s always=%b mAllowBootMessages=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "2994810644159608200": {
-      "message": "hideBootMessagesLocked: mDisplayEnabled=%b mForceDisplayEnabled=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6625203651195752178": {
-      "message": "freezeDisplayRotation: current rotation=%d, new rotation=%d, caller=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8988910478484254861": {
-      "message": "thawRotation: mRotation=%d, caller=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "7261084872394224738": {
-      "message": "updateRotationUnchecked: alwaysSendConfiguration=%b forceRelayout=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8664813170125714536": {
-      "message": "View server did not start",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-8019372496359375449": {
-      "message": "Could not send command %s with parameters %s. %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1893303527772009363": {
-      "message": "Devices still not ready after waiting %d milliseconds before attempting to detect safe mode.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3652974372240081071": {
-      "message": "SAFE MODE ENABLED (menu=%d s=%d dpad=%d trackball=%d)",
-      "level": "INFO",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4945624619344146947": {
-      "message": "SAFE MODE not enabled",
-      "level": "INFO",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-3428027271337724889": {
-      "message": "Focus changing: %s -> %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1624328195833150047": {
-      "message": "App freeze timeout expired.",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5830724144971462783": {
-      "message": "Timeout waiting for drawn: undrawn=%s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2240705227895260140": {
-      "message": "CHECK_IF_BOOT_ANIMATION_FINISHED:",
-      "level": "INFO",
-      "group": "WM_DEBUG_BOOT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8641557333789260779": {
-      "message": "FORCED DISPLAY SIZE: %dx%d",
-      "level": "INFO",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3781141652793604337": {
-      "message": "FORCED DISPLAY SCALING DISABLED",
-      "level": "INFO",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4117606810523219596": {
-      "message": "Failed looking up window session=%s callers=%s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1233670725456443473": {
-      "message": "Changing surface while display frozen: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1716033239040181528": {
-      "message": "Waiting for drawn %s: removed=%b visible=%b mHasSurface=%b drawState=%d",
-      "level": "INFO",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-4609828204247499633": {
-      "message": "Aborted waiting for drawn: %s",
-      "level": "WARN",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7561054602203220590": {
-      "message": "Window drawn win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "2809030008663191766": {
-      "message": "All windows drawn!",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_SCREEN_ON",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1615905649072328410": {
-      "message": "startFreezingDisplayLocked: exitAnim=%d enterAnim=%d called by %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4565793239453546297": {
-      "message": "stopFreezingDisplayLocked: Returning waitingForConfig=%b, waitingForRemoteDisplayChange=%b, mAppsFreezingScreen=%d, mWindowsFreezingScreen=%d, mClientFreezingScreen=%b, mOpeningApps.size()=%d",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6877112251967196129": {
-      "message": "stopFreezingDisplayLocked: Unfreezing now",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "721393258715103117": {
-      "message": "%s",
-      "level": "INFO",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-5706083447992207254": {
-      "message": "**** Dismissing screen rotation animation",
-      "level": "INFO",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "2233371241933584073": {
-      "message": "Performing post-rotate rotation",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1010635158502326025": {
-      "message": "unable to call receiver for empty keyboard shortcuts",
-      "level": "ERROR",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1278715281433572858": {
-      "message": "Bad requesting window %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6186782212018913664": {
-      "message": "Invalid displayId for requestScrollCapture: %d",
-      "level": "ERROR",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "51378282333944649": {
-      "message": "requestScrollCapture: caught exception dispatching to window.token=%s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-8972916676375201577": {
-      "message": "requestScrollCapture: caught exception dispatching callback: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-1875125162673622728": {
-      "message": "Attempted to get windowing mode of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3938331948687900219": {
-      "message": "Attempted to set windowing mode to a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "4200292050699107329": {
-      "message": "Attempted to get remove mode of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-5574580669790275797": {
-      "message": "Attempted to set remove mode to a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "525945815055875796": {
-      "message": "Attempted to get flag of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "8186524992939307511": {
-      "message": "Attempted to set flag to a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-600035824255550632": {
-      "message": "Attempted to get system decors flag of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3056518663346732662": {
-      "message": "Attempted to set system decors flag to a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5177195624625618567": {
-      "message": "Attempted to get IME policy of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "3932627933834459400": {
-      "message": "Attempted to set IME policy to a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5770211341769258866": {
-      "message": "setWallpaperShowWhenLocked: non-existent wallpaper token: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "698926505694016512": {
-      "message": "setWallpaperCropHints: non-existent wallpaper token: %s",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7428028317216329062": {
-      "message": "hideIme target: %s ",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "1006302987953651112": {
-      "message": "hideIme Control target: %s ",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_IME",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "5213970642134448962": {
-      "message": "Attempted to get home support flag of a display that does not exist: %d",
-      "level": "WARN",
-      "group": "WM_ERROR",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-2065144681579661392": {
-      "message": "onPointerDownOutsideFocusLocked called on %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-7394143854567081754": {
-      "message": "grantEmbeddedWindowFocus win=%s dropped focus so setting focus to null since no candidate was found",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "-6056928081282320632": {
-      "message": "grantEmbeddedWindowFocus win=%s grantFocus=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/WindowManagerService.java"
-    },
-    "6110791601270766802": {
-      "message": "TaskFragmentTransaction changes are not collected in transition because there is an ongoing sync for applySyncTransaction().",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowOrganizerController.java"
-    },
-    "9200403125156001641": {
-      "message": "Apply window transaction, syncId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/WindowOrganizerController.java"
-    },
-    "433446585990132440": {
-      "message": "Set sync ready, syncId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/WindowOrganizerController.java"
-    },
-    "6552038620140878489": {
-      "message": "Transaction ready, syncId=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_WINDOW_ORGANIZER",
-      "at": "com\/android\/server\/wm\/WindowOrganizerController.java"
-    },
-    "-4629255026637000251": {
-      "message": "Sending to proc %s new config %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/WindowProcessController.java"
-    },
-    "-7237767461056267619": {
-      "message": "%s: Setting back callback %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_BACK_PREVIEW",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "8135615413833185273": {
-      "message": "Adding %s to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "8842744325264128950": {
-      "message": "Resize reasons for w=%s:  %s configChanged=%b didFrameInsetsChange=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_RESIZE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-8636590597069784069": {
-      "message": "Resizing window %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_RESIZE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-2710188685736986208": {
-      "message": "Orientation not waiting for draw in %s, surfaceController %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "5236278969232209904": {
-      "message": "onMovedByResize: Moving %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RESIZE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "7646042751617940718": {
-      "message": "Set animatingExit: reason=onAppVisibilityChanged win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "1783521309242112490": {
-      "message": "onResize: Resizing %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_RESIZE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "1351053513466395411": {
-      "message": "WS.removeImmediately: %s Already removed...",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "3927343382258792268": {
-      "message": "removeIfPossible: %s callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-4831815184899821371": {
-      "message": "Starting window removed %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-5803097884846965819": {
-      "message": "Remove client=%x, surfaceController=%s Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-2547748024041128829": {
-      "message": "Remove %s: mSurfaceController=%s mAnimatingExit=%b mRemoveOnExit=%b mHasSurface=%b surfaceShowing=%b animating=%b app-animation=%b mDisplayFrozen=%b callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "7789778354950913237": {
-      "message": "Set animatingExit: reason=remove\/applyAnimation win=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-4143841388126586338": {
-      "message": "Not removing %s due to exit animation",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "4419190702135590390": {
-      "message": "Set animatingExit: reason=remove\/isAnimating win=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-6167820560758523840": {
-      "message": "setAnimationLocked: setting mFocusMayChange true",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-208079497999140637": {
-      "message": "WindowState.hideLw: setting mFocusMayChange true",
-      "level": "INFO",
-      "group": "WM_DEBUG_FOCUS_LIGHT",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "8812513438749898553": {
-      "message": "set mOrientationChanging of %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-2964267636425934067": {
-      "message": "win=%s destroySurfaces: appStopped=%b win.mWindowRemovalAllowed=%b win.mRemoveOnExit=%b",
-      "level": "ERROR",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "7336961102428192483": {
-      "message": "Clear animatingExit: reason=destroySurface win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-6920306331987525705": {
-      "message": "Reporting new frame to %s: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_RESIZE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "2714651498627020992": {
-      "message": "Resizing %s WITH DRAW PENDING",
-      "level": "INFO",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-5755338358883139945": {
-      "message": "Requested redraw for orientation change: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-5211036212243647844": {
-      "message": "notifyInsetsChanged for %s ",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-3186229270467822891": {
-      "message": "notifyInsetsControlChanged for %s ",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_WINDOW_INSETS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-7413136364930452718": {
-      "message": "performShowLocked: mDrawState=HAS_DRAWN in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "7624470121297688739": {
-      "message": "shouldWaitAnimatingExit: isTransition: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "810267895099109466": {
-      "message": "shouldWaitAnimatingExit: isAnimating: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-1760879391350377377": {
-      "message": "shouldWaitAnimatingExit: isWallpaperTarget: %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "272960397873328729": {
-      "message": "Clear window stuck on animatingExit status: %s",
-      "level": "WARN",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-1007526574020149845": {
-      "message": "onExitAnimationDone in %s: exiting=%b remove=%b selfAnimating=%b anim=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "1738645946553610841": {
-      "message": "Exit animation finished in %s: remove=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-7737516306844862315": {
-      "message": "Clear animatingExit: reason=exitAnimationDone win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-3153130647145726082": {
-      "message": "Clear animatingExit: reason=clearAnimatingFlags win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-5202247309108694583": {
-      "message": "Clear animatingExit: reason=relayoutVisibleWindow win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "6291563604478341956": {
-      "message": "Setting move animation on %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-5774445199273871848": {
-      "message": "Preparing to sync a window that was already in the sync, so try dropping buffer. win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "8097934579596343476": {
-      "message": "Got a buffer for request id=%d but latest request is id=%d. Since the buffer is out-of-date, drop it. win=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_SYNC_ENGINE",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "8269653477215188641": {
-      "message": "SURFACE isSecure=%b: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowState.java"
-    },
-    "-1495677286613044867": {
-      "message": "Animation done in %s: exiting=%b, reportedVisible=%b",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "3436877176443058520": {
-      "message": "Finishing drawing window %s: mDrawState=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "345647873457403698": {
-      "message": "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING %s in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_DRAW",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-2385558637577093121": {
-      "message": "Draw state now committed in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STARTING_WINDOW",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-3490933626936411542": {
-      "message": "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW %s",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-6088246515441976339": {
-      "message": "createSurface %s: mDrawState=DRAW_PENDING",
-      "level": "INFO",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "2353125758087345363": {
-      "message": "  CREATE SURFACE %s IN SESSION %s: pid=%d format=%d flags=0x%x \/ %s",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-4491856282178275074": {
-      "message": "SURFACE DESTROY: %s. %s",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "8602950884833508970": {
-      "message": "Orientation change skips hidden %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-5079712802591263622": {
-      "message": "SURFACE controller=%s alpha=%f HScale=%f, VScale=%f: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-2824875917893878016": {
-      "message": "Orientation continue waiting for draw in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "7457181879495900576": {
-      "message": "Orientation change complete in %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-5668794009329913533": {
-      "message": "applyAnimation: win=%s anim=%d attr=0x%x a=%s transit=%d type=%d isEntrance=%b Callers %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ANIM",
-      "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
-    },
-    "-2055407587764455051": {
-      "message": "SURFACE HIDE ( %s ): %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
-    },
-    "-5854683348829455340": {
-      "message": "Destroying surface %s called by %s",
-      "level": "INFO",
-      "group": "WM_SHOW_SURFACE_ALLOC",
-      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
-    },
-    "7813672046338784579": {
-      "message": "SURFACE isOpaque=%b: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
-    },
-    "-8864150640874799238": {
-      "message": "SURFACE isColorSpaceAgnostic=%b: %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
-    },
-    "-8398940245851553814": {
-      "message": "SURFACE SHOW (performLayout): %s",
-      "level": "INFO",
-      "group": "WM_SHOW_TRANSACTIONS",
-      "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
-    },
-    "8174298531248485625": {
-      "message": "removeAllWindowsIfPossible: removing win=%s",
-      "level": "WARN",
-      "group": "WM_DEBUG_WINDOW_MOVEMENT",
-      "at": "com\/android\/server\/wm\/WindowToken.java"
-    },
-    "2740931087734487464": {
-      "message": "addWindow: win=%s Callers=%s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_FOCUS",
-      "at": "com\/android\/server\/wm\/WindowToken.java"
-    },
-    "2382798629637143561": {
-      "message": "Adding %s to %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ADD_REMOVE",
-      "at": "com\/android\/server\/wm\/WindowToken.java"
-    },
-    "-7314975896738778749": {
-      "message": "setClientVisible: %s clientVisible=%b Callers=%s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_APP_TRANSITIONS",
-      "at": "com\/android\/server\/wm\/WindowToken.java"
-    }
-  },
-  "groups": {
-    "WM_DEBUG_ADD_REMOVE": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_ANIM": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_APP_TRANSITIONS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_APP_TRANSITIONS_ANIM": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_BACK_PREVIEW": {
-      "tag": "CoreBackPreview"
-    },
-    "WM_DEBUG_BOOT": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_CONFIGURATION": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_CONTAINERS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_CONTENT_RECORDING": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_DIMMER": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_DRAW": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_DREAM": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_EMBEDDED_WINDOWS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_FOCUS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_FOCUS_LIGHT": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_IME": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_IMMERSIVE": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_KEEP_SCREEN_ON": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_LOCKTASK": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_ORIENTATION": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_RECENTS_ANIMATIONS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_REMOTE_ANIMATIONS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_RESIZE": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_SCREEN_ON": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_STARTING_WINDOW": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_STATES": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_SWITCH": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_SYNC_ENGINE": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_TASKS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_TPL": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WALLPAPER": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WINDOW_INSETS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WINDOW_MOVEMENT": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WINDOW_ORGANIZER": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WINDOW_TRANSITIONS": {
-      "tag": "WindowManager"
-    },
-    "WM_DEBUG_WINDOW_TRANSITIONS_MIN": {
-      "tag": "WindowManager"
-    },
-    "WM_ERROR": {
-      "tag": "WindowManager"
-    },
-    "WM_SHOW_SURFACE_ALLOC": {
-      "tag": "WindowManager"
-    },
-    "WM_SHOW_TRANSACTIONS": {
-      "tag": "WindowManager"
-    }
-  }
-}
diff --git a/keystore/OWNERS b/keystore/OWNERS
index 913f655..6891777 100644
--- a/keystore/OWNERS
+++ b/keystore/OWNERS
@@ -1,4 +1,5 @@
 # Bug component: 189335
+drysdale@google.com
 eranm@google.com
 jbires@google.com
 swillden@google.com
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/DividerPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/DividerPresenter.java
index 23dc96c..94c281f 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/DividerPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/DividerPresenter.java
@@ -16,6 +16,9 @@
 
 package androidx.window.extensions.embedding;
 
+import static android.content.pm.ActivityInfo.CONFIG_DENSITY;
+import static android.content.pm.ActivityInfo.CONFIG_LAYOUT_DIRECTION;
+import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION;
 import static android.util.TypedValue.COMPLEX_UNIT_DIP;
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
@@ -40,7 +43,6 @@
 import android.app.Activity;
 import android.app.ActivityThread;
 import android.content.Context;
-import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
 import android.graphics.Color;
 import android.graphics.PixelFormat;
@@ -683,52 +685,72 @@
                 ? taskBounds.width() - mProperties.mDividerWidthPx
                 : taskBounds.height() - mProperties.mDividerWidthPx;
 
-        if (isDraggingToFullscreenAllowed(mProperties.mDividerAttributes)) {
-            final float displayDensity = getDisplayDensity();
-            return dividerPositionWithDraggingToFullscreenAllowed(
-                    dividerPosition,
-                    minPosition,
-                    maxPosition,
-                    fullyExpandedPosition,
-                    velocity,
-                    displayDensity);
-        }
-        return Math.clamp(dividerPosition, minPosition, maxPosition);
+        final float displayDensity = getDisplayDensity();
+        final boolean isDraggingToFullscreenAllowed =
+                isDraggingToFullscreenAllowed(mProperties.mDividerAttributes);
+        return dividerPositionWithPositionOptions(
+                dividerPosition,
+                minPosition,
+                maxPosition,
+                fullyExpandedPosition,
+                velocity,
+                displayDensity,
+                isDraggingToFullscreenAllowed);
     }
 
     /**
-     * Returns the divider position given a set of position options. A snap algorithm is used to
-     * adjust the ending position to either fully expand one container or move the divider back to
-     * the specified min/max ratio depending on the dragging velocity.
+     * Returns the divider position given a set of position options. A snap algorithm can adjust
+     * the ending position to either fully expand one container or move the divider back to
+     * the specified min/max ratio depending on the dragging velocity and if dragging to fullscreen
+     * is allowed.
      */
     @VisibleForTesting
-    static int dividerPositionWithDraggingToFullscreenAllowed(int dividerPosition, int minPosition,
-            int maxPosition, int fullyExpandedPosition, float velocity, float displayDensity) {
-        final float minDismissVelocityPxPerSecond =
-                MIN_DISMISS_VELOCITY_DP_PER_SECOND * displayDensity;
+    static int dividerPositionWithPositionOptions(int dividerPosition, int minPosition,
+            int maxPosition, int fullyExpandedPosition, float velocity, float displayDensity,
+            boolean isDraggingToFullscreenAllowed) {
+        if (isDraggingToFullscreenAllowed) {
+            final float minDismissVelocityPxPerSecond =
+                    MIN_DISMISS_VELOCITY_DP_PER_SECOND * displayDensity;
+            if (dividerPosition < minPosition && velocity < -minDismissVelocityPxPerSecond) {
+                return 0;
+            }
+            if (dividerPosition > maxPosition && velocity > minDismissVelocityPxPerSecond) {
+                return fullyExpandedPosition;
+            }
+        }
         final float minFlingVelocityPxPerSecond =
                 MIN_FLING_VELOCITY_DP_PER_SECOND * displayDensity;
-        if (dividerPosition < minPosition && velocity < -minDismissVelocityPxPerSecond) {
-            return 0;
+        if (Math.abs(velocity) >= minFlingVelocityPxPerSecond) {
+            return dividerPositionForFling(
+                    dividerPosition, minPosition, maxPosition, velocity);
         }
-        if (dividerPosition > maxPosition && velocity > minDismissVelocityPxPerSecond) {
-            return fullyExpandedPosition;
+        if (dividerPosition >= minPosition && dividerPosition <= maxPosition) {
+            return dividerPosition;
         }
-        if (Math.abs(velocity) < minFlingVelocityPxPerSecond) {
-            if (dividerPosition >= minPosition && dividerPosition <= maxPosition) {
-                return dividerPosition;
-            }
-            int[] possiblePositions = {0, minPosition, maxPosition, fullyExpandedPosition};
-            return snap(dividerPosition, possiblePositions);
-        }
-        if (velocity < 0) {
-            return minPosition;
+        return snap(
+                dividerPosition,
+                isDraggingToFullscreenAllowed
+                        ? new int[] {0, minPosition, maxPosition, fullyExpandedPosition}
+                        : new int[] {minPosition, maxPosition});
+    }
+
+    /**
+     * Returns the closest position that is in the fling direction.
+     */
+    private static int dividerPositionForFling(int dividerPosition, int minPosition,
+            int maxPosition, float velocity) {
+        final boolean isBackwardDirection = velocity < 0;
+        if (isBackwardDirection) {
+            return dividerPosition < maxPosition ? minPosition : maxPosition;
         } else {
-            return maxPosition;
+            return dividerPosition > minPosition ? maxPosition : minPosition;
         }
     }
 
-    /** Calculates the snapped divider position based on the possible positions and distance. */
+    /**
+     * Returns the snapped position from a list of possible positions. Currently, this method
+     * snaps to the closest position by distance from the divider position.
+     */
     private static int snap(int dividerPosition, int[] possiblePositions) {
         int snappedPosition = dividerPosition;
         float minDistance = Float.MAX_VALUE;
@@ -946,7 +968,7 @@
     @VisibleForTesting
     static class Properties {
         private static final int CONFIGURATION_MASK_FOR_DIVIDER =
-                ActivityInfo.CONFIG_DENSITY | ActivityInfo.CONFIG_WINDOW_CONFIGURATION;
+                CONFIG_DENSITY | CONFIG_WINDOW_CONFIGURATION | CONFIG_LAYOUT_DIRECTION;
         @NonNull
         private final Configuration mConfiguration;
         @NonNull
@@ -1215,6 +1237,12 @@
                             FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL | FLAG_SLIPPERY,
                             PixelFormat.TRANSLUCENT);
             lp.setTitle(WINDOW_NAME);
+
+            // Ensure that the divider layout is always LTR regardless of the locale, because we
+            // already considered the locale when determining the split layout direction and the
+            // computed divider line position always starts from the left. This only affects the
+            // horizontal layout and does not have any effect on the top-to-bottom layout.
+            mDividerLayout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
             mViewHost.setView(mDividerLayout, lp);
             mViewHost.relayout(lp);
         }
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index eade86e..d888fa9 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -658,27 +658,28 @@
     }
 
     /**
-     * Returns the expanded bounds if the {@code bounds} violate minimum dimension or are not fully
-     * covered by the task bounds. Otherwise, returns {@code bounds}.
+     * Returns the expanded bounds if the {@code relBounds} violate minimum dimension or are not
+     * fully covered by the task bounds. Otherwise, returns {@code relBounds}.
      */
     @NonNull
-    static Rect sanitizeBounds(@NonNull Rect bounds, @Nullable Size minDimension,
+    static Rect sanitizeBounds(@NonNull Rect relBounds, @Nullable Size minDimension,
                         @NonNull TaskFragmentContainer container) {
-        if (bounds.isEmpty()) {
+        if (relBounds.isEmpty()) {
             // Don't need to check if the bounds follows the task bounds.
-            return bounds;
+            return relBounds;
         }
-        if (boundsSmallerThanMinDimensions(bounds, minDimension)) {
+        if (boundsSmallerThanMinDimensions(relBounds, minDimension)) {
             // Expand the bounds if the bounds are smaller than minimum dimensions.
             return new Rect();
         }
         final TaskContainer taskContainer = container.getTaskContainer();
-        final Rect taskBounds = taskContainer.getBounds();
-        if (!taskBounds.contains(bounds)) {
+        final Rect relTaskBounds = new Rect(taskContainer.getBounds());
+        relTaskBounds.offsetTo(0, 0);
+        if (!relTaskBounds.contains(relBounds)) {
             // Expand the bounds if the bounds exceed the task bounds.
             return new Rect();
         }
-        return bounds;
+        return relBounds;
     }
 
     @Override
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/DividerPresenterTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/DividerPresenterTest.java
index 3f67607..4f51815 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/DividerPresenterTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/DividerPresenterTest.java
@@ -660,82 +660,241 @@
         // Divider position is less than minPosition and the velocity is enough to be dismissed
         assertEquals(
                 0, // Closed position
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
+                DividerPresenter.dividerPositionWithPositionOptions(
                         10 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
                         -dismissVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
         // Divider position is greater than maxPosition and the velocity is enough to be dismissed
         assertEquals(
                 1200, // Fully expanded position
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
+                DividerPresenter.dividerPositionWithPositionOptions(
                         1000 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
                         dismissVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
         // Divider position is returned when the velocity is not fast enough for fling and is in
         // between minPosition and maxPosition
         assertEquals(
                 500, // dividerPosition is not snapped
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
+                DividerPresenter.dividerPositionWithPositionOptions(
                         500 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
                         nonFlingVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
         // Divider position is snapped when the velocity is not fast enough for fling and larger
         // than maxPosition
         assertEquals(
                 900, // Closest position is maxPosition
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
+                DividerPresenter.dividerPositionWithPositionOptions(
                         950 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
                         nonFlingVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
         // Divider position is snapped when the velocity is not fast enough for fling and smaller
         // than minPosition
         assertEquals(
                 30, // Closest position is minPosition
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
+                DividerPresenter.dividerPositionWithPositionOptions(
                         20 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
                         nonFlingVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
-        // Divider position is greater than minPosition and the velocity is enough for fling
+        // Divider position is in the closed to maxPosition bounds and the velocity is enough for
+        // backward fling
         assertEquals(
-                30, // minPosition
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
-                        50 /* dividerPosition */,
-                        30 /* minPosition */,
-                        900 /* maxPosition */,
-                        1200 /* fullyExpandedPosition */,
+                2000, // maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        2200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
                         -flingVelocity,
-                        displayDensity));
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
 
-        // Divider position is less than maxPosition and the velocity is enough for fling
+        // Divider position is not in the closed to maxPosition bounds and the velocity is enough
+        // for backward fling
         assertEquals(
-                900, // maxPosition
-                DividerPresenter.dividerPositionWithDraggingToFullscreenAllowed(
-                        800 /* dividerPosition */,
+                1000, // minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        1200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        -flingVelocity,
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is in the closed to minPosition bounds and the velocity is enough for
+        // forward fling
+        assertEquals(
+                1000, // minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        500 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        flingVelocity,
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is not in the closed to minPosition bounds and the velocity is enough
+        // for forward fling
+        assertEquals(
+                2000, // maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        1200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        flingVelocity,
+                        displayDensity,
+                        true /* isDraggingToFullscreenAllowed */));
+    }
+
+    @Test
+    public void testDividerPositionWithDraggingToFullscreenNotAllowed() {
+        final float displayDensity = 600F;
+        final float nonFlingVelocity = MIN_FLING_VELOCITY_DP_PER_SECOND * displayDensity - 10f;
+        final float flingVelocity = MIN_FLING_VELOCITY_DP_PER_SECOND * displayDensity + 10f;
+
+        // Divider position is returned when the velocity is not fast enough for fling and is in
+        // between minPosition and maxPosition
+        assertEquals(
+                500, // dividerPosition is not snapped
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        500 /* dividerPosition */,
                         30 /* minPosition */,
                         900 /* maxPosition */,
                         1200 /* fullyExpandedPosition */,
+                        nonFlingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is snapped when the velocity is not fast enough for fling and larger
+        // than maxPosition
+        assertEquals(
+                900, // Closest position is maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        950 /* dividerPosition */,
+                        30 /* minPosition */,
+                        900 /* maxPosition */,
+                        1200 /* fullyExpandedPosition */,
+                        nonFlingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is snapped when the velocity is not fast enough for fling and smaller
+        // than minPosition
+        assertEquals(
+                30, // Closest position is minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        20 /* dividerPosition */,
+                        30 /* minPosition */,
+                        900 /* maxPosition */,
+                        1200 /* fullyExpandedPosition */,
+                        nonFlingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is snapped when the velocity is not fast enough for fling and at the
+        // closed position
+        assertEquals(
+                30, // Closest position is minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        0 /* dividerPosition */,
+                        30 /* minPosition */,
+                        900 /* maxPosition */,
+                        1200 /* fullyExpandedPosition */,
+                        nonFlingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is snapped when the velocity is not fast enough for fling and at the
+        // fully expanded position
+        assertEquals(
+                900, // Closest position is maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        1200 /* dividerPosition */,
+                        30 /* minPosition */,
+                        900 /* maxPosition */,
+                        1200 /* fullyExpandedPosition */,
+                        nonFlingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is in the closed to maxPosition bounds and the velocity is enough for
+        // backward fling
+        assertEquals(
+                2000, // maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        2200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        -flingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is not in the closed to maxPosition bounds and the velocity is enough
+        // for backward fling
+        assertEquals(
+                1000, // minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        1200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        -flingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is in the closed to minPosition bounds and the velocity is enough for
+        // forward fling
+        assertEquals(
+                1000, // minPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        500 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
                         flingVelocity,
-                        displayDensity));
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
+
+        // Divider position is not in the closed to minPosition bounds and the velocity is enough
+        // for forward fling
+        assertEquals(
+                2000, // maxPosition
+                DividerPresenter.dividerPositionWithPositionOptions(
+                        1200 /* dividerPosition */,
+                        1000 /* minPosition */,
+                        2000 /* maxPosition */,
+                        2500 /* fullyExpandedPosition */,
+                        flingVelocity,
+                        displayDensity,
+                        false /* isDraggingToFullscreenAllowed */));
     }
 
     private TaskFragmentContainer createMockTaskFragmentContainer(
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java
index 0972d40..7a0b9a0 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java
@@ -409,6 +409,22 @@
     }
 
     @Test
+    public void testSanitizeBounds_taskInSplitScreen() {
+        final TaskFragmentContainer overlayContainer =
+                createTestOverlayContainer(TASK_ID, "test1");
+        TaskContainer taskContainer = overlayContainer.getTaskContainer();
+        spyOn(taskContainer);
+        doReturn(new Rect(TASK_BOUNDS.left + TASK_BOUNDS.width() / 2, TASK_BOUNDS.top,
+                TASK_BOUNDS.right, TASK_BOUNDS.bottom)).when(taskContainer).getBounds();
+        final Rect taskBounds = taskContainer.getBounds();
+        final Rect bounds = new Rect(taskBounds.width() / 2, 0, taskBounds.width(),
+                taskBounds.height());
+
+        assertThat(sanitizeBounds(bounds, null, overlayContainer)
+                .isEmpty()).isFalse();
+    }
+
+    @Test
     public void testCreateOrUpdateOverlayTaskFragmentIfNeeded_createOverlay() {
         final Rect bounds = new Rect(0, 0, 100, 100);
         mSplitController.setActivityStackAttributesCalculator(params ->
diff --git a/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp
index 89781fd..25d3067 100644
--- a/libs/WindowManager/Shell/Android.bp
+++ b/libs/WindowManager/Shell/Android.bp
@@ -51,6 +51,7 @@
         "src/com/android/wm/shell/common/split/SplitScreenConstants.java",
         "src/com/android/wm/shell/common/TransactionPool.java",
         "src/com/android/wm/shell/common/TriangleShape.java",
+        "src/com/android/wm/shell/common/desktopmode/*.kt",
         "src/com/android/wm/shell/draganddrop/DragAndDropConstants.java",
         "src/com/android/wm/shell/pip/PipContentOverlay.java",
         "src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java",
@@ -205,6 +206,7 @@
         "androidx.core_core-animation",
         "androidx.core_core-ktx",
         "androidx.arch.core_core-runtime",
+        "androidx.compose.material3_material3",
         "androidx-constraintlayout_constraintlayout",
         "androidx.dynamicanimation_dynamicanimation",
         "androidx.recyclerview_recyclerview",
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
index 0efdbdc..327e205 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
@@ -456,5 +456,7 @@
         override fun isStackExpanded(): Boolean = false
 
         override fun isShowingAsBubbleBar(): Boolean = false
+
+        override fun hideCurrentInputMethod() {}
     }
 }
diff --git a/libs/WindowManager/Shell/res/drawable/desktop_mode_header_background.xml b/libs/WindowManager/Shell/res/drawable/desktop_mode_header_background.xml
deleted file mode 100644
index 50c5ca9..0000000
--- a/libs/WindowManager/Shell/res/drawable/desktop_mode_header_background.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ Copyright (C) 2024 The Android Open Source Project
-  ~
-  ~ 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.
-  -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/backLayer">
-        <shape android:shape="rectangle">
-            <solid android:color="#000000" />
-        </shape>
-    </item>
-
-    <item android:id="@+id/frontLayer">
-        <shape android:shape="rectangle">
-            <solid android:color="#000000" />
-        </shape>
-    </item>
-</layer-list>
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_handle.xml
similarity index 100%
rename from libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml
rename to libs/WindowManager/Shell/res/layout/desktop_mode_app_handle.xml
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
similarity index 97%
rename from libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml
rename to libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
index 84e1449..7b31c14 100644
--- a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml
+++ b/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
@@ -19,7 +19,6 @@
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/desktop_mode_caption"
-    android:background="@drawable/desktop_mode_header_background"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:gravity="center_horizontal"
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index bcdc2a9..7b91559 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -48,8 +48,8 @@
     <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % oben"</string>
     <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30 % oben"</string>
     <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Vollbild unten"</string>
-    <string name="accessibility_split_left" msgid="1713683765575562458">"Links teilen"</string>
-    <string name="accessibility_split_right" msgid="8441001008181296837">"Rechts teilen"</string>
+    <string name="accessibility_split_left" msgid="1713683765575562458">"Links positionieren"</string>
+    <string name="accessibility_split_right" msgid="8441001008181296837">"Rechts positionieren"</string>
     <string name="accessibility_split_top" msgid="2789329702027147146">"Oben teilen"</string>
     <string name="accessibility_split_bottom" msgid="8694551025220868191">"Unten teilen"</string>
     <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Einhandmodus wird verwendet"</string>
diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml
index e8b5522..caa114f 100644
--- a/libs/WindowManager/Shell/res/values-ko/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ko/strings.xml
@@ -95,7 +95,7 @@
     <string name="letterbox_education_reposition_text" msgid="4589957299813220661">"앱 위치를 조정하려면 앱 외부를 두 번 탭합니다."</string>
     <string name="letterbox_education_got_it" msgid="4057634570866051177">"확인"</string>
     <string name="letterbox_education_expand_button_description" msgid="1729796567101129834">"추가 정보는 펼쳐서 확인하세요."</string>
-    <string name="letterbox_restart_dialog_title" msgid="8543049527871033505">"화면에 맞게 보도록 다시 시작할까요?"</string>
+    <string name="letterbox_restart_dialog_title" msgid="8543049527871033505">"화면에 맞게 보이도록 다시 시작할까요?"</string>
     <string name="letterbox_restart_dialog_description" msgid="6096946078246557848">"앱을 다시 시작하면 화면에 더 잘 맞게 볼 수는 있지만 진행 상황 또는 저장되지 않은 변경사항을 잃을 수도 있습니다."</string>
     <string name="letterbox_restart_cancel" msgid="1342209132692537805">"취소"</string>
     <string name="letterbox_restart_restart" msgid="8529976234412442973">"다시 시작"</string>
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/DesktopModeStatus.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/DesktopModeStatus.java
index 8d8655a..4876f32 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/DesktopModeStatus.java
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/DesktopModeStatus.java
@@ -67,6 +67,10 @@
     private static final boolean ENFORCE_DEVICE_RESTRICTIONS = SystemProperties.getBoolean(
             "persist.wm.debug.desktop_mode_enforce_device_restrictions", true);
 
+    /** Whether the desktop density override is enabled. */
+    public static final boolean DESKTOP_DENSITY_OVERRIDE_ENABLED =
+            SystemProperties.getBoolean("persist.wm.debug.desktop_mode_density_enabled", false);
+
     /** Override density for tasks when they're inside the desktop. */
     public static final int DESKTOP_DENSITY_OVERRIDE =
             SystemProperties.getInt("persist.wm.debug.desktop_mode_density", 284);
@@ -157,9 +161,23 @@
     }
 
     /**
-     * Return {@code true} if the override desktop density is set.
+     * Return {@code true} if the override desktop density is enabled and valid.
      */
-    public static boolean isDesktopDensityOverrideSet() {
+    public static boolean useDesktopOverrideDensity() {
+        return isDesktopDensityOverrideEnabled() && isValidDesktopDensityOverrideSet();
+    }
+
+    /**
+     * Return {@code true} if the override desktop density is enabled.
+     */
+    private static boolean isDesktopDensityOverrideEnabled() {
+        return DESKTOP_DENSITY_OVERRIDE_ENABLED;
+    }
+
+    /**
+     * Return {@code true} if the override desktop density is set and within a valid range.
+     */
+    private static boolean isValidDesktopDensityOverrideSet() {
         return DESKTOP_DENSITY_OVERRIDE >= DESKTOP_DENSITY_MIN
                 && DESKTOP_DENSITY_OVERRIDE <= DESKTOP_DENSITY_MAX;
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
index 0272f1c..b986862 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
@@ -38,6 +38,7 @@
 import android.window.TransitionInfo;
 
 import com.android.internal.policy.TransitionAnimation;
+import com.android.window.flags.Flags;
 import com.android.wm.shell.shared.TransitionUtil;
 
 /** Animation spec for ActivityEmbedding transition. */
@@ -202,7 +203,7 @@
     Animation loadOpenAnimation(@NonNull TransitionInfo info,
             @NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
         final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
-        final Animation customAnimation = loadCustomAnimation(info, isEnter);
+        final Animation customAnimation = loadCustomAnimation(info, change, isEnter);
         final Animation animation;
         if (customAnimation != null) {
             animation = customAnimation;
@@ -229,7 +230,7 @@
     Animation loadCloseAnimation(@NonNull TransitionInfo info,
             @NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
         final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
-        final Animation customAnimation = loadCustomAnimation(info, isEnter);
+        final Animation customAnimation = loadCustomAnimation(info, change, isEnter);
         final Animation animation;
         if (customAnimation != null) {
             animation = customAnimation;
@@ -261,8 +262,14 @@
     }
 
     @Nullable
-    private Animation loadCustomAnimation(@NonNull TransitionInfo info, boolean isEnter) {
-        final TransitionInfo.AnimationOptions options = info.getAnimationOptions();
+    private Animation loadCustomAnimation(@NonNull TransitionInfo info,
+            @NonNull TransitionInfo.Change change, boolean isEnter) {
+        final TransitionInfo.AnimationOptions options;
+        if (Flags.moveAnimationOptionsToChange()) {
+            options = change.getAnimationOptions();
+        } else {
+            options = info.getAnimationOptions();
+        }
         if (options == null || options.getType() != ANIM_CUSTOM) {
             return null;
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
index d6b9d34..b4ef9f0f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
@@ -32,6 +32,7 @@
 import android.util.ArrayMap;
 import android.view.SurfaceControl;
 import android.window.TransitionInfo;
+import android.window.TransitionInfo.AnimationOptions;
 import android.window.TransitionRequestInfo;
 import android.window.WindowContainerTransaction;
 
@@ -39,6 +40,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.window.flags.Flags;
 import com.android.wm.shell.shared.TransitionUtil;
 import com.android.wm.shell.sysui.ShellInit;
 import com.android.wm.shell.transition.Transitions;
@@ -117,24 +119,39 @@
             return false;
         }
 
-        final TransitionInfo.AnimationOptions options = info.getAnimationOptions();
-        if (options != null) {
-            // Scene-transition should be handled by app side.
-            if (options.getType() == ANIM_SCENE_TRANSITION) {
+        return shouldAnimateAnimationOptions(info);
+    }
+
+    private boolean shouldAnimateAnimationOptions(@NonNull TransitionInfo info) {
+        if (!Flags.moveAnimationOptionsToChange()) {
+            return shouldAnimateAnimationOptions(info.getAnimationOptions());
+        }
+        for (TransitionInfo.Change change : info.getChanges()) {
+            if (!shouldAnimateAnimationOptions(change.getAnimationOptions())) {
+                // If any of override animation is not supported, don't animate the transition.
                 return false;
             }
-            // The case of ActivityOptions#makeCustomAnimation, Activity#overridePendingTransition,
-            // and Activity#overrideActivityTransition are supported.
-            if (options.getType() == ANIM_CUSTOM) {
-                return true;
-            }
-            // Use default transition handler to animate other override animation.
-            return !isSupportedOverrideAnimation(options);
         }
-
         return true;
     }
 
+    private boolean shouldAnimateAnimationOptions(@Nullable AnimationOptions options) {
+        if (options == null) {
+            return true;
+        }
+        // Scene-transition should be handled by app side.
+        if (options.getType() == ANIM_SCENE_TRANSITION) {
+            return false;
+        }
+        // The case of ActivityOptions#makeCustomAnimation, Activity#overridePendingTransition,
+        // and Activity#overrideActivityTransition are supported.
+        if (options.getType() == ANIM_CUSTOM) {
+            return true;
+        }
+        // Use default transition handler to animate other override animation.
+        return !isSupportedOverrideAnimation(options);
+    }
+
     @Override
     public boolean startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
             @NonNull SurfaceControl.Transaction startTransaction,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
index 5600664..0119289 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
@@ -18,7 +18,6 @@
 
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_HOME;
 import static com.android.window.flags.Flags.predictiveBackSystemAnims;
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BACK_PREVIEW;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION;
 
@@ -41,7 +40,6 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.provider.Settings.Global;
-import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.IRemoteAnimationRunner;
 import android.view.InputDevice;
@@ -63,7 +61,6 @@
 import com.android.internal.util.LatencyTracker;
 import com.android.internal.view.AppearanceRegion;
 import com.android.wm.shell.R;
-import com.android.wm.shell.animation.FlingAnimationUtils;
 import com.android.wm.shell.common.ExternalInterfaceBinder;
 import com.android.wm.shell.common.RemoteCallable;
 import com.android.wm.shell.common.ShellExecutor;
@@ -88,15 +85,6 @@
     public static final boolean IS_ENABLED =
             SystemProperties.getInt("persist.wm.debug.predictive_back",
                     SETTING_VALUE_ON) == SETTING_VALUE_ON;
-    public static final float FLING_MAX_LENGTH_SECONDS = 0.1f;     // 100ms
-    public static final float FLING_SPEED_UP_FACTOR = 0.6f;
-
-    /**
-     * The maximum additional progress in case of fling gesture.
-     * The end animation starts after the user lifts the finger from the screen, we continue to
-     * fire {@link BackEvent}s until the velocity reaches 0.
-     */
-    private static final float MAX_FLING_PROGRESS = 0.3f; /* 30% of the screen */
 
     /** Predictive back animation developer option */
     private final AtomicBoolean mEnableAnimations = new AtomicBoolean(false);
@@ -119,8 +107,6 @@
     private boolean mPointersPilfered = false;
     private final boolean mRequirePointerPilfer;
 
-    private final FlingAnimationUtils mFlingAnimationUtils;
-
     /** Registry for the back animations */
     private final ShellBackAnimationRegistry mShellBackAnimationRegistry;
 
@@ -233,11 +219,6 @@
         mBgHandler = bgHandler;
         shellInit.addInitCallback(this::onInit, this);
         mAnimationBackground = backAnimationBackground;
-        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
-        mFlingAnimationUtils = new FlingAnimationUtils.Builder(displayMetrics)
-                .setMaxLengthSeconds(FLING_MAX_LENGTH_SECONDS)
-                .setSpeedUpFactor(FLING_SPEED_UP_FACTOR)
-                .build();
         mShellBackAnimationRegistry = shellBackAnimationRegistry;
         mLatencyTracker = LatencyTracker.getInstance(mContext);
         mShellCommandHandler = shellCommandHandler;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
index da530d7..1279fc4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
@@ -305,6 +305,7 @@
                 getUser().getIdentifier(),
                 getPackageName(),
                 getTitle(),
+                getAppName(),
                 isImportantConversation());
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index 317e00a..6449073 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -518,7 +518,7 @@
     }
 
     private ExternalInterfaceBinder createExternalInterface() {
-        return new BubbleController.IBubblesImpl(this);
+        return new IBubblesImpl(this);
     }
 
     @VisibleForTesting
@@ -592,11 +592,12 @@
      * Hides the current input method, wherever it may be focused, via InputMethodManagerInternal.
      */
     void hideCurrentInputMethod() {
+        mBubblePositioner.setImeVisible(false /* visible */, 0 /* height */);
         int displayId = mWindowManager.getDefaultDisplay().getDisplayId();
         try {
             mBarService.hideCurrentInputMethodForBubbles(displayId);
         } catch (RemoteException e) {
-            e.printStackTrace();
+            Log.e(TAG, "Failed to hide IME", e);
         }
     }
 
@@ -1457,8 +1458,9 @@
             SynchronousScreenCaptureListener screenCaptureListener) {
         try {
             ScreenCapture.CaptureArgs args = null;
-            if (mStackView != null) {
-                ViewRootImpl viewRoot = mStackView.getViewRootImpl();
+            View viewToUse = mStackView != null ? mStackView : mLayerView;
+            if (viewToUse != null) {
+                ViewRootImpl viewRoot = viewToUse.getViewRootImpl();
                 if (viewRoot != null) {
                     SurfaceControl bubbleLayer = viewRoot.getSurfaceControl();
                     if (bubbleLayer != null) {
@@ -1550,6 +1552,12 @@
                     Log.w(TAG, "Tried to add a bubble to the stack but the stack is null");
                 }
             };
+        } else if (mBubbleData.isExpanded() && mBubbleData.getSelectedBubble() != null) {
+            callback = b -> {
+                if (b.getKey().equals(mBubbleData.getSelectedBubbleKey())) {
+                    mLayerView.showExpandedView(b);
+                }
+            };
         }
         for (int i = mBubbleData.getBubbles().size() - 1; i >= 0; i--) {
             Bubble bubble = mBubbleData.getBubbles().get(i);
@@ -2354,6 +2362,8 @@
         @Override
         public void invalidate() {
             mController = null;
+            // Unregister the listeners to ensure any binder death recipients are unlinked
+            mListener.unregister();
         }
 
         @Override
@@ -2531,17 +2541,6 @@
 
         private CachedState mCachedState = new CachedState();
 
-        private IBubblesImpl mIBubbles;
-
-        @Override
-        public IBubbles createExternalInterface() {
-            if (mIBubbles != null) {
-                mIBubbles.invalidate();
-            }
-            mIBubbles = new IBubblesImpl(BubbleController.this);
-            return mIBubbles;
-        }
-
         @Override
         public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) {
             return mCachedState.isBubbleNotificationSuppressedFromShade(key, groupKey);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
index 874102c..32873d9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
@@ -256,11 +256,15 @@
     }
 
     /**
-     * Returns a bubble bar update populated with the current list of active bubbles.
+     * Returns a bubble bar update populated with the current list of active bubbles, expanded,
+     * and selected state.
      */
     public BubbleBarUpdate getInitialStateForBubbleBar() {
         BubbleBarUpdate initialState = mStateChange.getInitialState();
         initialState.bubbleBarLocation = mPositioner.getBubbleBarLocation();
+        initialState.expanded = mExpanded;
+        initialState.expandedChanged = mExpanded; // only matters if we're expanded
+        initialState.selectedBubbleKey = getSelectedBubbleKey();
         return initialState;
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index 4e8afcc..c7ccd50 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -482,31 +482,38 @@
                 mPointerWidth, mPointerHeight, true /* pointLeft */));
         mRightPointer = new ShapeDrawable(TriangleShape.createHorizontal(
                 mPointerWidth, mPointerHeight, false /* pointLeft */));
-        if (mPointerView != null) {
-            updatePointerView();
-        }
+        updatePointerViewIfExists();
+        updateManageButtonIfExists();
+    }
 
-        if (mManageButton != null) {
-            int visibility = mManageButton.getVisibility();
-            removeView(mManageButton);
-            ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(),
-                    com.android.internal.R.style.Theme_DeviceDefault_DayNight);
-            mManageButton = (AlphaOptimizedButton) LayoutInflater.from(ctw).inflate(
-                    R.layout.bubble_manage_button, this /* parent */, false /* attach */);
-            addView(mManageButton);
-            mManageButton.setVisibility(visibility);
-            post(() -> {
-                int touchAreaHeight =
-                        getResources().getDimensionPixelSize(
-                                R.dimen.bubble_manage_button_touch_area_height);
-                Rect r = new Rect();
-                mManageButton.getHitRect(r);
-                int extraTouchArea = (touchAreaHeight - r.height()) / 2;
-                r.top -= extraTouchArea;
-                r.bottom += extraTouchArea;
-                setTouchDelegate(new TouchDelegate(r, mManageButton));
-            });
+
+    /**
+     * Reinflate manage button if {@link #mManageButton} is initialized.
+     * Does nothing otherwise.
+     */
+    private void updateManageButtonIfExists() {
+        if (mManageButton == null) {
+            return;
         }
+        int visibility = mManageButton.getVisibility();
+        removeView(mManageButton);
+        ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(),
+                com.android.internal.R.style.Theme_DeviceDefault_DayNight);
+        mManageButton = (AlphaOptimizedButton) LayoutInflater.from(ctw).inflate(
+                R.layout.bubble_manage_button, this /* parent */, false /* attach */);
+        addView(mManageButton);
+        mManageButton.setVisibility(visibility);
+        post(() -> {
+            int touchAreaHeight =
+                    getResources().getDimensionPixelSize(
+                            R.dimen.bubble_manage_button_touch_area_height);
+            Rect r = new Rect();
+            mManageButton.getHitRect(r);
+            int extraTouchArea = (touchAreaHeight - r.height()) / 2;
+            r.top -= extraTouchArea;
+            r.bottom += extraTouchArea;
+            setTouchDelegate(new TouchDelegate(r, mManageButton));
+        });
     }
 
     void updateFontSize() {
@@ -548,11 +555,18 @@
         if (mTaskView != null) {
             mTaskView.setCornerRadius(mCornerRadius);
         }
-        updatePointerView();
+        updatePointerViewIfExists();
+        updateManageButtonIfExists();
     }
 
-    /** Updates the size and visuals of the pointer. **/
-    private void updatePointerView() {
+    /**
+     * Updates the size and visuals of the pointer if {@link #mPointerView} is initialized.
+     * Does nothing otherwise.
+     */
+    private void updatePointerViewIfExists() {
+        if (mPointerView == null) {
+            return;
+        }
         LayoutParams lp = (LayoutParams) mPointerView.getLayoutParams();
         if (mCurrentPointer == mLeftPointer || mCurrentPointer == mRightPointer) {
             lp.width = mPointerHeight;
@@ -1055,7 +1069,7 @@
         // Post because we need the width of the view
         post(() -> {
             mCurrentPointer = showVertically ? onLeft ? mLeftPointer : mRightPointer : mTopPointer;
-            updatePointerView();
+            updatePointerViewIfExists();
             if (showVertically) {
                 mPointerPos.y = bubbleCenter - (mPointerWidth / 2f);
                 if (!isRtl) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
index b0d3cc4..3d9bf03 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
@@ -29,6 +29,7 @@
     fun setAppBubbleTaskId(key: String, taskId: Int)
     fun isStackExpanded(): Boolean
     fun isShowingAsBubbleBar(): Boolean
+    fun hideCurrentInputMethod()
 
     companion object {
         /**
@@ -73,6 +74,10 @@
                 override fun isStackExpanded(): Boolean = controller.isStackExpanded
 
                 override fun isShowingAsBubbleBar(): Boolean = controller.isShowingAsBubbleBar
+
+                override fun hideCurrentInputMethod() {
+                    controller.hideCurrentInputMethod()
+                }
             }
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index fac9bf6..ed904e2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -2324,7 +2324,6 @@
      * not.
      */
     void hideCurrentInputMethod() {
-        mPositioner.setImeVisible(false, 0);
         mManager.hideCurrentInputMethod();
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
index 21b70b8..0b66bcb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
@@ -161,6 +161,11 @@
             // The taskId is saved to use for removeTask, preventing appearance in recent tasks.
             mTaskId = taskId;
 
+            if (mBubble != null && mBubble.isAppBubble()) {
+                // Let the controller know sooner what the taskId is.
+                mExpandedViewManager.setAppBubbleTaskId(mBubble.getKey(), mTaskId);
+            }
+
             // With the task org, the taskAppeared callback will only happen once the task has
             // already drawn
             mListener.onTaskCreated();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
index 271fb9a..a7da07d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
@@ -82,6 +82,7 @@
     private static final int INVALID_TASK_ID = -1;
 
     private BubbleExpandedViewManager mManager;
+    private BubblePositioner mPositioner;
     private boolean mIsOverflow;
     private BubbleTaskViewHelper mBubbleTaskViewHelper;
     private BubbleBarMenuViewController mMenuViewController;
@@ -160,6 +161,7 @@
             boolean isOverflow,
             @Nullable BubbleTaskView bubbleTaskView) {
         mManager = expandedViewManager;
+        mPositioner = positioner;
         mIsOverflow = isOverflow;
 
         if (mIsOverflow) {
@@ -290,15 +292,27 @@
     }
 
     /**
-     * Hides the current modal menu view or collapses the bubble stack.
-     * Called from {@link BubbleBarLayerView}
+     * Hides the current modal menu if it is visible
+     * @return {@code true} if menu was visible and is hidden
      */
-    public void hideMenuOrCollapse() {
+    public boolean hideMenuIfVisible() {
         if (mMenuViewController.isMenuVisible()) {
-            mMenuViewController.hideMenu(/* animated = */ true);
-        } else {
-            mManager.collapseStack();
+            mMenuViewController.hideMenu(true /* animated */);
+            return true;
         }
+        return false;
+    }
+
+    /**
+     * Hides the IME if it is visible
+     * @return {@code true} if IME was visible
+     */
+    public boolean hideImeIfVisible() {
+        if (mPositioner.isImeVisible()) {
+            mManager.hideCurrentInputMethod();
+            return true;
+        }
+        return false;
     }
 
     /** Updates the bubble shown in the expanded view. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
index 123cc7e..badc409 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
@@ -132,7 +132,7 @@
                     }
                 });
 
-        setOnClickListener(view -> hideMenuOrCollapse());
+        setOnClickListener(view -> hideModalOrCollapse());
     }
 
     @Override
@@ -217,7 +217,7 @@
 
                 @Override
                 public void onBackPressed() {
-                    hideMenuOrCollapse();
+                    hideModalOrCollapse();
                 }
             });
 
@@ -344,15 +344,23 @@
         addView(mDismissView);
     }
 
-    /** Hides the current modal education/menu view, expanded view or collapses the bubble stack */
-    private void hideMenuOrCollapse() {
+    /** Hides the current modal education/menu view, IME or collapses the expanded view */
+    private void hideModalOrCollapse() {
         if (mEducationViewController.isEducationVisible()) {
             mEducationViewController.hideEducation(/* animated = */ true);
-        } else if (isExpanded() && mExpandedView != null) {
-            mExpandedView.hideMenuOrCollapse();
-        } else {
-            mBubbleController.collapseStack();
+            return;
         }
+        if (isExpanded() && mExpandedView != null) {
+            boolean menuHidden = mExpandedView.hideMenuIfVisible();
+            if (menuHidden) {
+                return;
+            }
+            boolean imeHidden = mExpandedView.hideImeIfVisible();
+            if (imeHidden) {
+                return;
+            }
+        }
+        mBubbleController.collapseStack();
     }
 
     /** Updates the expanded view size and position. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
index ad01d0f..57e95d6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
@@ -220,6 +220,8 @@
         final int mDisplayId;
         final InsetsState mInsetsState = new InsetsState();
         @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible();
+        boolean mImeRequestedVisible =
+                (WindowInsets.Type.defaultVisible() & WindowInsets.Type.ime()) != 0;
         InsetsSourceControl mImeSourceControl = null;
         int mAnimationDirection = DIRECTION_NONE;
         ValueAnimator mAnimation = null;
@@ -247,8 +249,10 @@
                 return;
             }
 
-            updateImeVisibility(insetsState.isSourceOrDefaultVisible(InsetsSource.ID_IME,
-                    WindowInsets.Type.ime()));
+            if (!android.view.inputmethod.Flags.refactorInsetsController()) {
+                updateImeVisibility(insetsState.isSourceOrDefaultVisible(InsetsSource.ID_IME,
+                        WindowInsets.Type.ime()));
+            }
 
             final InsetsSource newSource = insetsState.peekSource(InsetsSource.ID_IME);
             final Rect newFrame = newSource != null ? newSource.getFrame() : null;
@@ -287,32 +291,63 @@
                 dispatchImeControlTargetChanged(mDisplayId, hasImeSourceControl);
             }
 
-            if (hasImeSourceControl) {
+            boolean pendingImeStartAnimation = false;
+            boolean canAnimate;
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                canAnimate = hasImeSourceControl && imeSourceControl.getLeash() != null;
+            } else {
+                canAnimate = hasImeSourceControl;
+            }
+
+            boolean positionChanged = false;
+            if (canAnimate) {
                 if (mAnimation != null) {
                     final Point lastSurfacePosition = hadImeSourceControl
                             ? mImeSourceControl.getSurfacePosition() : null;
-                    final boolean positionChanged =
-                            !imeSourceControl.getSurfacePosition().equals(lastSurfacePosition);
-                    if (positionChanged) {
-                        startAnimation(mImeShowing, true /* forceRestart */,
-                                SoftInputShowHideReason.DISPLAY_CONTROLS_CHANGED);
-                    }
+                    positionChanged = !imeSourceControl.getSurfacePosition().equals(
+                            lastSurfacePosition);
                 } else {
                     if (!haveSameLeash(mImeSourceControl, imeSourceControl)) {
                         applyVisibilityToLeash(imeSourceControl);
+
+                        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                            pendingImeStartAnimation = true;
+                        }
                     }
                     if (!mImeShowing) {
                         removeImeSurface();
                     }
                 }
-            } else if (mAnimation != null) {
+            } else if (!android.view.inputmethod.Flags.refactorInsetsController()
+                    && mAnimation != null) {
+                // we don"t want to cancel the hide animation, when the control is lost, but
+                // continue the bar to slide to the end (even without visible IME)
                 mAnimation.cancel();
             }
+            if (positionChanged) {
+                if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                    // For showing the IME, the leash has to be available first. Hiding
+                    // the IME happens directly via {@link #hideInsets} (triggered by
+                    // setImeInputTargetRequestedVisibility) while the leash is not gone
+                    // yet.
+                    pendingImeStartAnimation = true;
+                } else {
+                    startAnimation(mImeShowing, true /* forceRestart */,
+                            SoftInputShowHideReason.DISPLAY_CONTROLS_CHANGED);
+                }
+            }
 
             if (hadImeSourceControl && mImeSourceControl != imeSourceControl) {
                 mImeSourceControl.release(SurfaceControl::release);
             }
             mImeSourceControl = imeSourceControl;
+
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                if (pendingImeStartAnimation) {
+                    startAnimation(true, true /* forceRestart */,
+                            null /* statsToken */);
+                }
+            }
         }
 
         private void applyVisibilityToLeash(InsetsSourceControl imeSourceControl) {
@@ -354,6 +389,20 @@
             // Do nothing
         }
 
+        @Override
+        // TODO(b/335404678): pass control target
+        public void setImeInputTargetRequestedVisibility(boolean visible) {
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                mImeRequestedVisible = visible;
+                // In the case that the IME becomes visible, but we have the control with leash
+                // already (e.g., when focussing an editText in activity B, while and editText in
+                // activity A is focussed), we will not get a call of #insetsControlChanged, and
+                // therefore have to start the show animation from here
+                startAnimation(mImeRequestedVisible /* show */, false /* forceRestart */,
+                        null /* TODO statsToken */);
+            }
+        }
+
         /**
          * Sends the local visibility state back to window manager. Needed for legacy adjustForIme.
          */
@@ -402,6 +451,12 @@
 
         private void startAnimation(final boolean show, final boolean forceRestart,
                 @NonNull final ImeTracker.Token statsToken) {
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                if (mImeSourceControl == null || mImeSourceControl.getLeash() == null) {
+                    if (DEBUG) Slog.d(TAG, "No leash available, not starting the animation.");
+                    return;
+                }
+            }
             final InsetsSource imeSource = mInsetsState.peekSource(InsetsSource.ID_IME);
             if (imeSource == null || mImeSourceControl == null) {
                 ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_WM_ANIMATION_CREATE);
@@ -463,10 +518,13 @@
             mAnimation.addUpdateListener(animation -> {
                 SurfaceControl.Transaction t = mTransactionPool.acquire();
                 float value = (float) animation.getAnimatedValue();
-                t.setPosition(mImeSourceControl.getLeash(), x, value);
-                final float alpha = (mAnimateAlpha || isFloating)
-                        ? (value - hiddenY) / (shownY - hiddenY) : 1.f;
-                t.setAlpha(mImeSourceControl.getLeash(), alpha);
+                if (!android.view.inputmethod.Flags.refactorInsetsController() || (
+                        mImeSourceControl != null && mImeSourceControl.getLeash() != null)) {
+                    t.setPosition(mImeSourceControl.getLeash(), x, value);
+                    final float alpha = (mAnimateAlpha || isFloating)
+                            ? (value - hiddenY) / (shownY - hiddenY) : 1.f;
+                    t.setAlpha(mImeSourceControl.getLeash(), alpha);
+                }
                 dispatchPositionChanged(mDisplayId, imeTop(value), t);
                 t.apply();
                 mTransactionPool.release(t);
@@ -525,17 +583,25 @@
 
                 @Override
                 public void onAnimationEnd(Animator animation) {
+                    boolean hasLeash =
+                            mImeSourceControl != null && mImeSourceControl.getLeash() != null;
                     if (DEBUG) Slog.d(TAG, "onAnimationEnd " + mCancelled);
                     SurfaceControl.Transaction t = mTransactionPool.acquire();
                     if (!mCancelled) {
-                        t.setPosition(mImeSourceControl.getLeash(), x, endY);
-                        t.setAlpha(mImeSourceControl.getLeash(), 1.f);
+                        if (!android.view.inputmethod.Flags.refactorInsetsController()
+                                || hasLeash) {
+                            t.setPosition(mImeSourceControl.getLeash(), x, endY);
+                            t.setAlpha(mImeSourceControl.getLeash(), 1.f);
+                        }
                     }
                     dispatchEndPositioning(mDisplayId, mCancelled, t);
                     if (mAnimationDirection == DIRECTION_HIDE && !mCancelled) {
                         ImeTracker.forLogging().onProgress(mStatsToken,
                                 ImeTracker.PHASE_WM_ANIMATION_RUNNING);
-                        t.hide(mImeSourceControl.getLeash());
+                        if (!android.view.inputmethod.Flags.refactorInsetsController()
+                                || hasLeash) {
+                            t.hide(mImeSourceControl.getLeash());
+                        }
                         removeImeSurface();
                         ImeTracker.forLogging().onHidden(mStatsToken);
                     } else if (mAnimationDirection == DIRECTION_SHOW && !mCancelled) {
@@ -548,9 +614,13 @@
                         EventLog.writeEvent(IMF_IME_REMOTE_ANIM_END,
                                 mStatsToken != null ? mStatsToken.getTag() : ImeTracker.TOKEN_NONE,
                                 mDisplayId, mAnimationDirection, endY,
-                                Objects.toString(mImeSourceControl.getLeash()),
-                                Objects.toString(mImeSourceControl.getInsetsHint()),
-                                Objects.toString(mImeSourceControl.getSurfacePosition()),
+                                Objects.toString(
+                                        mImeSourceControl != null ? mImeSourceControl.getLeash()
+                                                : "null"),
+                                Objects.toString(mImeSourceControl != null
+                                        ? mImeSourceControl.getInsetsHint() : "null"),
+                                Objects.toString(mImeSourceControl != null
+                                        ? mImeSourceControl.getSurfacePosition() : "null"),
                                 Objects.toString(mImeFrame));
                     }
                     t.apply();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayInsetsController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayInsetsController.java
index 55dc793..1fb0e17 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayInsetsController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayInsetsController.java
@@ -199,6 +199,16 @@
             }
         }
 
+        private void setImeInputTargetRequestedVisibility(boolean visible) {
+            CopyOnWriteArrayList<OnInsetsChangedListener> listeners = mListeners.get(mDisplayId);
+            if (listeners == null) {
+                return;
+            }
+            for (OnInsetsChangedListener listener : listeners) {
+                listener.setImeInputTargetRequestedVisibility(visible);
+            }
+        }
+
         @BinderThread
         private class DisplayWindowInsetsControllerImpl
                 extends IDisplayWindowInsetsController.Stub {
@@ -240,6 +250,14 @@
                     PerDisplay.this.hideInsets(types, fromIme, statsToken);
                 });
             }
+
+            @Override
+            public void setImeInputTargetRequestedVisibility(boolean visible)
+                    throws RemoteException {
+                mMainExecutor.execute(() -> {
+                    PerDisplay.this.setImeInputTargetRequestedVisibility(visible);
+                });
+            }
         }
     }
 
@@ -291,5 +309,12 @@
          */
         default void hideInsets(@InsetsType int types, boolean fromIme,
                 @Nullable ImeTracker.Token statsToken) {}
+
+        /**
+         * Called to set the requested visibility of the IME in DisplayImeController. Invoked by
+         * {@link com.android.server.wm.DisplayContent.RemoteInsetsControlTarget}.
+         * @param visible requested status of the IME
+         */
+        default void setImeInputTargetRequestedVisibility(boolean visible) {}
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExecutorUtils.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExecutorUtils.java
deleted file mode 100644
index b29058b..0000000
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExecutorUtils.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * 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.
- */
-
-package com.android.wm.shell.common;
-
-import android.Manifest;
-import android.util.Slog;
-
-import java.util.function.Consumer;
-
-/**
- * Helpers for working with executors
- */
-public class ExecutorUtils {
-
-    /**
-     * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given
-     * callback.
-     */
-    public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance,
-            String log, Consumer<T> callback) {
-        executeRemoteCallWithTaskPermission(controllerInstance, log, callback,
-                false /* blocking */);
-    }
-
-    /**
-     * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given
-     * callback.
-     */
-    public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance,
-            String log, Consumer<T> callback, boolean blocking) {
-        if (controllerInstance == null) return;
-
-        final RemoteCallable<T> controller = controllerInstance;
-        controllerInstance.getContext().enforceCallingPermission(
-                Manifest.permission.MANAGE_ACTIVITY_TASKS, log);
-        if (blocking) {
-            try {
-                controllerInstance.getRemoteCallExecutor().executeBlocking(() -> {
-                    callback.accept((T) controller);
-                });
-            } catch (InterruptedException e) {
-                Slog.e("ExecutorUtils", "Remote call failed", e);
-            }
-        } else {
-            controllerInstance.getRemoteCallExecutor().execute(() -> {
-                callback.accept((T) controller);
-            });
-        }
-    }
-}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java
index aa5b0cb..d6f4d81 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java
@@ -16,7 +16,11 @@
 
 package com.android.wm.shell.common;
 
+import android.Manifest;
 import android.os.IBinder;
+import android.util.Slog;
+
+import java.util.function.Consumer;
 
 /**
  * An interface for binders which can be registered to be sent to other processes.
@@ -31,4 +35,40 @@
      * Returns the IBinder to send.
      */
     IBinder asBinder();
+
+    /**
+     * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given
+     * callback.
+     */
+    default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance,
+            String log, Consumer<T> callback) {
+        executeRemoteCallWithTaskPermission(controllerInstance, log, callback,
+                false /* blocking */);
+    }
+
+    /**
+     * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given
+     * callback.
+     */
+    default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance,
+            String log, Consumer<T> callback, boolean blocking) {
+        if (controllerInstance == null) return;
+
+        final RemoteCallable<T> controller = controllerInstance;
+        controllerInstance.getContext().enforceCallingPermission(
+                Manifest.permission.MANAGE_ACTIVITY_TASKS, log);
+        if (blocking) {
+            try {
+                controllerInstance.getRemoteCallExecutor().executeBlocking(() -> {
+                    callback.accept((T) controller);
+                });
+            } catch (InterruptedException e) {
+                Slog.e("ExternalInterfaceBinder", "Remote call failed", e);
+            }
+        } else {
+            controllerInstance.getRemoteCallExecutor().execute(() -> {
+                callback.accept((T) controller);
+            });
+        }
+    }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java
index 30f535b..0d90fb7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java
@@ -19,7 +19,7 @@
 import android.content.Context;
 
 /**
- * An interface for controllers that can receive remote calls.
+ * An interface for controllers (of type T) that can receive remote calls.
  */
 public interface RemoteCallable<T> {
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java
index 24608d6..829af08 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java
@@ -45,10 +45,12 @@
     private Icon mIcon;
     @Nullable
     private String mTitle;
+    @Nullable
+    private String mAppName;
     private boolean mIsImportantConversation;
 
     public BubbleInfo(String key, int flags, @Nullable String shortcutId, @Nullable Icon icon,
-            int userId, String packageName, @Nullable String title,
+            int userId, String packageName, @Nullable String title, @Nullable String appName,
             boolean isImportantConversation) {
         mKey = key;
         mFlags = flags;
@@ -57,6 +59,7 @@
         mUserId = userId;
         mPackageName = packageName;
         mTitle = title;
+        mAppName = appName;
         mIsImportantConversation = isImportantConversation;
     }
 
@@ -68,6 +71,7 @@
         mUserId = source.readInt();
         mPackageName = source.readString();
         mTitle = source.readString();
+        mAppName = source.readString();
         mIsImportantConversation = source.readBoolean();
     }
 
@@ -102,6 +106,11 @@
         return mTitle;
     }
 
+    @Nullable
+    public String getAppName() {
+        return mAppName;
+    }
+
     public boolean isImportantConversation() {
         return mIsImportantConversation;
     }
@@ -161,6 +170,7 @@
         parcel.writeInt(mUserId);
         parcel.writeString(mPackageName);
         parcel.writeString(mTitle);
+        parcel.writeString(mAppName);
         parcel.writeBoolean(mIsImportantConversation);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.aidl
similarity index 81%
rename from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.aidl
index bb3b654..c968e80 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.aidl
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.wm.shell.common.desktopmode;
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+parcelable DesktopModeTransitionSource;
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.kt
new file mode 100644
index 0000000..dbbf1786
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/desktopmode/DesktopModeTransitionSource.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.common.desktopmode
+
+import android.os.Parcel
+import android.os.Parcelable
+
+/** Transition source types for Desktop Mode. */
+enum class DesktopModeTransitionSource : Parcelable {
+    /** Transitions that originated as a consequence of task dragging. */
+    TASK_DRAG,
+    /** Transitions that originated from an app from Overview. */
+    APP_FROM_OVERVIEW,
+    /** Transitions that originated from app handle menu button */
+    APP_HANDLE_MENU_BUTTON,
+    /** Transitions that originated as a result of keyboard shortcuts. */
+    KEYBOARD_SHORTCUT,
+    /** Transitions with source unknown. */
+    UNKNOWN;
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    override fun writeToParcel(dest: Parcel, flags: Int) {
+        dest.writeString(name)
+    }
+
+    companion object {
+        @JvmField
+        val CREATOR =
+            object : Parcelable.Creator<DesktopModeTransitionSource> {
+                override fun createFromParcel(parcel: Parcel): DesktopModeTransitionSource {
+                    return parcel.readString()?.let { valueOf(it) } ?: UNKNOWN
+                }
+
+                override fun newArray(size: Int) = arrayOfNulls<DesktopModeTransitionSource>(size)
+            }
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
index 8fb9bda..5d121c2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
@@ -143,6 +143,8 @@
     /**
      * Releases the surface control of the current {@link DividerView} and tear down the view
      * hierarchy.
+     * @param t If supplied, the surface removal will be bundled with this Transaction. If
+     *          called with null, removes the surface immediately.
      */
     void release(@Nullable SurfaceControl.Transaction t) {
         if (mDividerView != null) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMode.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMode.java
index df1b062..31c8f1e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMode.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMode.java
@@ -18,6 +18,7 @@
 
 import android.graphics.Region;
 
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.shared.annotations.ExternalThread;
 
 import java.util.concurrent.Executor;
@@ -49,10 +50,10 @@
 
 
     /** Called when requested to go to desktop mode from the current focused app. */
-    void moveFocusedTaskToDesktop(int displayId);
+    void moveFocusedTaskToDesktop(int displayId, DesktopModeTransitionSource transitionSource);
 
     /** Called when requested to go to fullscreen from the current focused desktop app. */
-    void moveFocusedTaskToFullscreen(int displayId);
+    void moveFocusedTaskToFullscreen(int displayId, DesktopModeTransitionSource transitionSource);
 
     /** Called when requested to go to split screen from the current focused desktop app. */
     void moveFocusedTaskToStageSplit(int displayId, boolean leftOrTop);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
index 5d8e340..075e3ae 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
@@ -38,6 +38,12 @@
 import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason
 import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason
 import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskUpdate
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT
 import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
 import com.android.wm.shell.shared.DesktopModeStatus
 import com.android.wm.shell.shared.TransitionUtil
@@ -304,11 +310,13 @@
 
     /** Get [EnterReason] for this session enter */
     private fun getEnterReason(transitionInfo: TransitionInfo): EnterReason {
-        // TODO(b/326231756) - Add support for missing enter reasons
         return when (transitionInfo.type) {
             WindowManager.TRANSIT_WAKE -> EnterReason.SCREEN_ON
             Transitions.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP -> EnterReason.APP_HANDLE_DRAG
-            Transitions.TRANSIT_MOVE_TO_DESKTOP -> EnterReason.APP_HANDLE_MENU_BUTTON
+            TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON -> EnterReason.APP_HANDLE_MENU_BUTTON
+            // TODO(b/344822506): Create and update EnterReason to APP_FROM_OVERVIEW
+            TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW -> EnterReason.UNKNOWN_ENTER
+            TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT -> EnterReason.KEYBOARD_SHORTCUT_ENTER
             WindowManager.TRANSIT_OPEN -> EnterReason.APP_FREEFORM_INTENT
             else -> EnterReason.UNKNOWN_ENTER
         }
@@ -316,11 +324,14 @@
 
     /** Get [ExitReason] for this session exit */
     private fun getExitReason(transitionInfo: TransitionInfo): ExitReason {
-        // TODO(b/326231756) - Add support for missing exit reasons
         return when {
             transitionInfo.type == WindowManager.TRANSIT_SLEEP -> ExitReason.SCREEN_OFF
             transitionInfo.type == WindowManager.TRANSIT_CLOSE -> ExitReason.TASK_FINISHED
-            transitionInfo.type == Transitions.TRANSIT_EXIT_DESKTOP_MODE -> ExitReason.DRAG_TO_EXIT
+            transitionInfo.type == TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG -> ExitReason.DRAG_TO_EXIT
+            transitionInfo.type == TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON ->
+                ExitReason.APP_HANDLE_MENU_BUTTON_EXIT
+            transitionInfo.type == TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT ->
+                ExitReason.KEYBOARD_SHORTCUT_EXIT
             transitionInfo.isRecentsTransition() -> ExitReason.RETURN_HOME_OR_OVERVIEW
             else -> ExitReason.UNKNOWN_EXIT
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
index bc27f34..1a6ca0e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
@@ -16,7 +16,7 @@
 
 package com.android.wm.shell.desktopmode
 
-import android.window.WindowContainerTransaction
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.UNKNOWN
 import com.android.wm.shell.sysui.ShellCommandHandler
 import java.io.PrintWriter
 
@@ -64,7 +64,7 @@
                 return false
             }
 
-        return controller.moveToDesktop(taskId, WindowContainerTransaction())
+        return controller.moveToDesktop(taskId, transitionSource = UNKNOWN)
     }
 
     private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypes.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypes.kt
new file mode 100644
index 0000000..b24bd10
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypes.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.desktopmode
+
+import android.view.WindowManager.TransitionType
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource
+import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_TYPES
+
+/**
+ * Contains desktop mode [TransitionType]s (extended from [TRANSIT_DESKTOP_MODE_TYPES]) and helper
+ * methods.
+ */
+object DesktopModeTransitionTypes {
+
+    const val TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON = TRANSIT_DESKTOP_MODE_TYPES + 1
+    const val TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW = TRANSIT_DESKTOP_MODE_TYPES + 2
+    const val TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT = TRANSIT_DESKTOP_MODE_TYPES + 3
+    const val TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN = TRANSIT_DESKTOP_MODE_TYPES + 4
+    const val TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG = TRANSIT_DESKTOP_MODE_TYPES + 5
+    const val TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON = TRANSIT_DESKTOP_MODE_TYPES + 6
+    const val TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT = TRANSIT_DESKTOP_MODE_TYPES + 7
+    const val TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN = TRANSIT_DESKTOP_MODE_TYPES + 8
+
+    /** Return whether the [TransitionType] corresponds to a transition to enter desktop mode. */
+    @JvmStatic
+    fun @receiver:TransitionType Int.isEnterDesktopModeTransition(): Boolean {
+        return this in
+            listOf(
+                TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON,
+                TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW,
+                TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT,
+                TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN
+            )
+    }
+
+    /**
+     * Returns corresponding desktop mode enter [TransitionType] for a
+     * [DesktopModeTransitionSource].
+     */
+    @JvmStatic
+    @TransitionType
+    fun DesktopModeTransitionSource.getEnterTransitionType(): Int {
+        return when (this) {
+            DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON ->
+                TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON
+            DesktopModeTransitionSource.APP_FROM_OVERVIEW ->
+                TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW
+            DesktopModeTransitionSource.KEYBOARD_SHORTCUT ->
+                TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT
+            else -> TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN
+        }
+    }
+
+    /** Return whether the [TransitionType] corresponds to a transition to exit desktop mode. */
+    @JvmStatic
+    fun @receiver:TransitionType Int.isExitDesktopModeTransition(): Boolean {
+        return this in
+            listOf(
+                TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG,
+                TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON,
+                TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT,
+                TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN
+            )
+    }
+
+    /**
+     * Returns corresponding desktop mode exit [TransitionType] for a [DesktopModeTransitionSource].
+     */
+    @JvmStatic
+    @TransitionType
+    fun DesktopModeTransitionSource.getExitTransitionType(): Int {
+        return when (this) {
+            DesktopModeTransitionSource.TASK_DRAG -> TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
+            DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON ->
+                TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON
+            DesktopModeTransitionSource.KEYBOARD_SHORTCUT ->
+                TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
+            else -> TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN
+        }
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index ef384c7..0807f75 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -54,7 +54,6 @@
 import com.android.wm.shell.ShellTaskOrganizer
 import com.android.wm.shell.common.DisplayController
 import com.android.wm.shell.common.DisplayLayout
-import com.android.wm.shell.common.ExecutorUtils
 import com.android.wm.shell.common.ExternalInterfaceBinder
 import com.android.wm.shell.common.LaunchAdjacentController
 import com.android.wm.shell.common.MultiInstanceHelper
@@ -63,6 +62,7 @@
 import com.android.wm.shell.common.ShellExecutor
 import com.android.wm.shell.common.SingleInstanceRemoteListener
 import com.android.wm.shell.common.SyncTransactionQueue
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource
 import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
 import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT
 import com.android.wm.shell.compatui.isSingleTopActivityTranslucent
@@ -75,7 +75,7 @@
 import com.android.wm.shell.recents.RecentsTransitionStateListener
 import com.android.wm.shell.shared.DesktopModeStatus
 import com.android.wm.shell.shared.DesktopModeStatus.DESKTOP_DENSITY_OVERRIDE
-import com.android.wm.shell.shared.DesktopModeStatus.isDesktopDensityOverrideSet
+import com.android.wm.shell.shared.DesktopModeStatus.useDesktopOverrideDensity
 import com.android.wm.shell.shared.annotations.ExternalThread
 import com.android.wm.shell.shared.annotations.ShellMainThread
 import com.android.wm.shell.splitscreen.SplitScreenController
@@ -253,7 +253,7 @@
     }
 
     /** Enter desktop by using the focused task in given `displayId` */
-    fun moveFocusedTaskToDesktop(displayId: Int) {
+    fun moveFocusedTaskToDesktop(displayId: Int, transitionSource: DesktopModeTransitionSource) {
         val allFocusedTasks =
             shellTaskOrganizer.getRunningTasks(displayId).filter { taskInfo ->
                 taskInfo.isFocused &&
@@ -272,11 +272,11 @@
                         } else {
                             allFocusedTasks[0]
                         }
-                    moveToDesktop(splitFocusedTask)
+                    moveToDesktop(splitFocusedTask, transitionSource = transitionSource)
                 }
                 1 -> {
                     // Fullscreen case where we move the current focused task.
-                    moveToDesktop(allFocusedTasks[0].taskId)
+                    moveToDesktop(allFocusedTasks[0].taskId, transitionSource = transitionSource)
                 }
                 else -> {
                     KtProtoLog.w(
@@ -293,17 +293,20 @@
     /** Move a task with given `taskId` to desktop */
     fun moveToDesktop(
         taskId: Int,
-        wct: WindowContainerTransaction = WindowContainerTransaction()
+        wct: WindowContainerTransaction = WindowContainerTransaction(),
+        transitionSource: DesktopModeTransitionSource,
     ): Boolean {
         shellTaskOrganizer.getRunningTaskInfo(taskId)?.let {
-            moveToDesktop(it, wct)
-        } ?: moveToDesktopFromNonRunningTask(taskId, wct)
+            moveToDesktop(it, wct, transitionSource)
+        }
+            ?: moveToDesktopFromNonRunningTask(taskId, wct, transitionSource)
         return true
     }
 
     private fun moveToDesktopFromNonRunningTask(
         taskId: Int,
-        wct: WindowContainerTransaction
+        wct: WindowContainerTransaction,
+        transitionSource: DesktopModeTransitionSource,
     ): Boolean {
         recentTasksController?.findTaskInBackground(taskId)?.let {
             KtProtoLog.v(
@@ -316,10 +319,11 @@
                 bringDesktopAppsToFrontBeforeShowingNewTask(DEFAULT_DISPLAY, wct, taskId)
             addMoveToDesktopChangesNonRunningTask(wct, taskId)
             // TODO(343149901): Add DPI changes for task launch
-            val transition = enterDesktopTaskTransitionHandler.moveToDesktop(wct)
+            val transition = enterDesktopTaskTransitionHandler.moveToDesktop(wct, transitionSource)
             addPendingMinimizeTransition(transition, taskToMinimize)
             return true
-        } ?: return false
+        }
+            ?: return false
     }
 
     private fun addMoveToDesktopChangesNonRunningTask(
@@ -331,12 +335,11 @@
         wct.startTask(taskId, options.toBundle())
     }
 
-    /**
-     * Move a task to desktop
-     */
+    /** Move a task to desktop */
     fun moveToDesktop(
         task: RunningTaskInfo,
-        wct: WindowContainerTransaction = WindowContainerTransaction()
+        wct: WindowContainerTransaction = WindowContainerTransaction(),
+        transitionSource: DesktopModeTransitionSource,
     ) {
         if (Flags.enableDesktopWindowingModalsPolicy() && isSingleTopActivityTranslucent(task)) {
             KtProtoLog.w(
@@ -358,7 +361,7 @@
         addMoveToDesktopChanges(wct, task)
 
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            val transition = enterDesktopTaskTransitionHandler.moveToDesktop(wct)
+            val transition = enterDesktopTaskTransitionHandler.moveToDesktop(wct, transitionSource)
             addPendingMinimizeTransition(transition, taskToMinimize)
         } else {
             shellTaskOrganizer.applyTransaction(wct)
@@ -433,16 +436,16 @@
     }
 
     /** Move a task with given `taskId` to fullscreen */
-    fun moveToFullscreen(taskId: Int) {
+    fun moveToFullscreen(taskId: Int, transitionSource: DesktopModeTransitionSource) {
         shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task ->
-            moveToFullscreenWithAnimation(task, task.positionInParent)
+            moveToFullscreenWithAnimation(task, task.positionInParent, transitionSource)
         }
     }
 
     /** Enter fullscreen by moving the focused freeform task in given `displayId` to fullscreen. */
-    fun enterFullscreen(displayId: Int) {
+    fun enterFullscreen(displayId: Int, transitionSource: DesktopModeTransitionSource) {
         getFocusedFreeformTask(displayId)?.let {
-            moveToFullscreenWithAnimation(it, it.positionInParent)
+            moveToFullscreenWithAnimation(it, it.positionInParent, transitionSource)
         }
     }
 
@@ -486,10 +489,16 @@
             "DesktopTasksController: cancelDragToDesktop taskId=%d",
             task.taskId
         )
-        dragToDesktopTransitionHandler.cancelDragToDesktopTransition()
+        dragToDesktopTransitionHandler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL
+        )
     }
 
-    private fun moveToFullscreenWithAnimation(task: RunningTaskInfo, position: Point) {
+    private fun moveToFullscreenWithAnimation(
+        task: RunningTaskInfo,
+        position: Point,
+        transitionSource: DesktopModeTransitionSource
+    ) {
         KtProtoLog.v(
             WM_SHELL_DESKTOP_MODE,
             "DesktopTasksController: moveToFullscreen with animation taskId=%d",
@@ -500,7 +509,7 @@
 
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
             exitDesktopTaskTransitionHandler.startTransition(
-                Transitions.TRANSIT_EXIT_DESKTOP_MODE,
+                transitionSource,
                 wct,
                 position,
                 mOnAnimationFinishedCallback
@@ -929,7 +938,8 @@
             request.type == TRANSIT_TO_BACK &&
             request.triggerTask?.let { task ->
                 desktopModeTaskRepository.isOnlyActiveTask(task.taskId)
-            } ?: false
+            }
+                ?: false
     }
 
     private fun handleFreeformTaskLaunch(
@@ -950,7 +960,7 @@
             }
         }
         val wct = WindowContainerTransaction()
-        if (isDesktopDensityOverrideSet()) {
+        if (useDesktopOverrideDensity()) {
             wct.setDensityDpi(task.token, DESKTOP_DENSITY_OVERRIDE)
         }
         // Desktop Mode is showing and we're launching a new Task - we might need to minimize
@@ -1025,7 +1035,7 @@
         }
         wct.setWindowingMode(taskInfo.token, targetWindowingMode)
         wct.reorder(taskInfo.token, true /* onTop */)
-        if (isDesktopDensityOverrideSet()) {
+        if (useDesktopOverrideDensity()) {
             wct.setDensityDpi(taskInfo.token, DESKTOP_DENSITY_OVERRIDE)
         }
     }
@@ -1045,7 +1055,7 @@
             }
         wct.setWindowingMode(taskInfo.token, targetWindowingMode)
         wct.setBounds(taskInfo.token, Rect())
-        if (isDesktopDensityOverrideSet()) {
+        if (useDesktopOverrideDensity()) {
             wct.setDensityDpi(taskInfo.token, getDefaultDensityDpi())
         }
     }
@@ -1105,20 +1115,31 @@
     @JvmOverloads
     fun requestSplit(
         taskInfo: RunningTaskInfo,
-        leftOrTop: Boolean = false,
+        leftOrTop: Boolean = false
     ) {
-        val windowingMode = taskInfo.windowingMode
-        if (
-            windowingMode == WINDOWING_MODE_FULLSCREEN || windowingMode == WINDOWING_MODE_FREEFORM
-        ) {
-            val wct = WindowContainerTransaction()
-            addMoveToSplitChanges(wct, taskInfo)
-            splitScreenController.requestEnterSplitSelect(
-                taskInfo,
-                wct,
-                if (leftOrTop) SPLIT_POSITION_TOP_OR_LEFT else SPLIT_POSITION_BOTTOM_OR_RIGHT,
-                taskInfo.configuration.windowConfiguration.bounds
-            )
+        // If a drag to desktop is in progress, we want to enter split select
+        // even if the requesting task is already in split.
+        val isDragging = dragToDesktopTransitionHandler.inProgress
+        val shouldRequestSplit = taskInfo.isFullscreen || taskInfo.isFreeform || isDragging
+        if (shouldRequestSplit) {
+            if (isDragging) {
+                releaseVisualIndicator()
+                val cancelState = if (leftOrTop) {
+                    DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_LEFT
+                } else {
+                    DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_RIGHT
+                }
+                dragToDesktopTransitionHandler.cancelDragToDesktopTransition(cancelState)
+            } else {
+                val wct = WindowContainerTransaction()
+                addMoveToSplitChanges(wct, taskInfo)
+                splitScreenController.requestEnterSplitSelect(
+                    taskInfo,
+                    wct,
+                    if (leftOrTop) SPLIT_POSITION_TOP_OR_LEFT else SPLIT_POSITION_BOTTOM_OR_RIGHT,
+                    taskInfo.configuration.windowConfiguration.bounds
+                )
+            }
         }
     }
 
@@ -1206,7 +1227,11 @@
             )
         when (indicatorType) {
             DesktopModeVisualIndicator.IndicatorType.TO_FULLSCREEN_INDICATOR -> {
-                moveToFullscreenWithAnimation(taskInfo, position)
+                moveToFullscreenWithAnimation(
+                    taskInfo,
+                    position,
+                    DesktopModeTransitionSource.TASK_DRAG
+                )
             }
             DesktopModeVisualIndicator.IndicatorType.TO_SPLIT_LEFT_INDICATOR -> {
                 releaseVisualIndicator()
@@ -1247,7 +1272,10 @@
      * @param taskInfo the task being dragged.
      * @param y height of drag, to be checked against status bar height.
      */
-    fun onDragPositioningEndThroughStatusBar(inputCoordinates: PointF, taskInfo: RunningTaskInfo) {
+    fun onDragPositioningEndThroughStatusBar(
+        inputCoordinates: PointF,
+        taskInfo: RunningTaskInfo,
+    ) {
         val indicator = getVisualIndicator() ?: return
         val indicatorType = indicator.updateIndicatorType(inputCoordinates, taskInfo.windowingMode)
         when (indicatorType) {
@@ -1264,10 +1292,10 @@
                 cancelDragToDesktop(taskInfo)
             }
             DesktopModeVisualIndicator.IndicatorType.TO_SPLIT_LEFT_INDICATOR -> {
-                finalizeDragToDesktop(taskInfo, getSnapBounds(taskInfo, SnapPosition.LEFT))
+                requestSplit(taskInfo, leftOrTop = true)
             }
             DesktopModeVisualIndicator.IndicatorType.TO_SPLIT_RIGHT_INDICATOR -> {
-                finalizeDragToDesktop(taskInfo, getSnapBounds(taskInfo, SnapPosition.RIGHT))
+                requestSplit(taskInfo, leftOrTop = false)
             }
         }
     }
@@ -1375,12 +1403,22 @@
             }
         }
 
-        override fun moveFocusedTaskToDesktop(displayId: Int) {
-            mainExecutor.execute { this@DesktopTasksController.moveFocusedTaskToDesktop(displayId) }
+        override fun moveFocusedTaskToDesktop(
+            displayId: Int,
+            transitionSource: DesktopModeTransitionSource
+        ) {
+            mainExecutor.execute {
+                this@DesktopTasksController.moveFocusedTaskToDesktop(displayId, transitionSource)
+            }
         }
 
-        override fun moveFocusedTaskToFullscreen(displayId: Int) {
-            mainExecutor.execute { this@DesktopTasksController.enterFullscreen(displayId) }
+        override fun moveFocusedTaskToFullscreen(
+            displayId: Int,
+            transitionSource: DesktopModeTransitionSource
+        ) {
+            mainExecutor.execute {
+                this@DesktopTasksController.enterFullscreen(displayId, transitionSource)
+            }
         }
 
         override fun moveFocusedTaskToStageSplit(displayId: Int, leftOrTop: Boolean) {
@@ -1432,13 +1470,13 @@
         }
 
         override fun showDesktopApps(displayId: Int, remoteTransition: RemoteTransition?) {
-            ExecutorUtils.executeRemoteCallWithTaskPermission(controller, "showDesktopApps") { c ->
+            executeRemoteCallWithTaskPermission(controller, "showDesktopApps") { c ->
                 c.showDesktopApps(displayId, remoteTransition)
             }
         }
 
         override fun showDesktopApp(taskId: Int) {
-            ExecutorUtils.executeRemoteCallWithTaskPermission(controller, "showDesktopApp") { c ->
+            executeRemoteCallWithTaskPermission(controller, "showDesktopApp") { c ->
                 c.moveTaskToFront(taskId)
             }
         }
@@ -1456,7 +1494,7 @@
 
         override fun getVisibleTaskCount(displayId: Int): Int {
             val result = IntArray(1)
-            ExecutorUtils.executeRemoteCallWithTaskPermission(
+            executeRemoteCallWithTaskPermission(
                 controller,
                 "getVisibleTaskCount",
                 { controller -> result[0] = controller.getVisibleTaskCount(displayId) },
@@ -1466,7 +1504,7 @@
         }
 
         override fun onDesktopSplitSelectAnimComplete(taskInfo: RunningTaskInfo) {
-            ExecutorUtils.executeRemoteCallWithTaskPermission(
+            executeRemoteCallWithTaskPermission(
                 controller,
                 "onDesktopSplitSelectAnimComplete"
             ) { c ->
@@ -1480,14 +1518,14 @@
                 "IDesktopModeImpl: set task listener=%s",
                 listener ?: "null"
             )
-            ExecutorUtils.executeRemoteCallWithTaskPermission(controller, "setTaskListener") { _ ->
+            executeRemoteCallWithTaskPermission(controller, "setTaskListener") { _ ->
                 listener?.let { remoteListener.register(it) } ?: remoteListener.unregister()
             }
         }
 
-        override fun moveToDesktop(taskId: Int) {
-            ExecutorUtils.executeRemoteCallWithTaskPermission(controller, "moveToDesktop") { c ->
-                c.moveToDesktop(taskId)
+        override fun moveToDesktop(taskId: Int, transitionSource: DesktopModeTransitionSource) {
+            executeRemoteCallWithTaskPermission(controller, "moveToDesktop") { c ->
+                c.moveToDesktop(taskId, transitionSource = transitionSource)
             }
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
index 98c79d7..d99b724 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
@@ -4,6 +4,7 @@
 import android.animation.AnimatorListenerAdapter
 import android.animation.RectEvaluator
 import android.animation.ValueAnimator
+import android.app.ActivityManager.RunningTaskInfo
 import android.app.ActivityOptions
 import android.app.ActivityOptions.SourceInfo
 import android.app.ActivityTaskManager.INVALID_TASK_ID
@@ -12,9 +13,11 @@
 import android.app.PendingIntent.FLAG_MUTABLE
 import android.app.WindowConfiguration.ACTIVITY_TYPE_HOME
 import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
+import android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW
 import android.content.Context
 import android.content.Intent
 import android.content.Intent.FILL_IN_COMPONENT
+import android.graphics.PointF
 import android.graphics.Rect
 import android.os.Bundle
 import android.os.IBinder
@@ -30,6 +33,7 @@
 import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
 import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT
 import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED
+import com.android.wm.shell.common.split.SplitScreenConstants.SplitPosition
 import com.android.wm.shell.protolog.ShellProtoLogGroup
 import com.android.wm.shell.shared.TransitionUtil
 import com.android.wm.shell.splitscreen.SplitScreenController
@@ -186,7 +190,7 @@
      * outside the desktop drop zone and is instead dropped back into the status bar region that
      * means the user wants to remain in their current windowing mode.
      */
-    fun cancelDragToDesktopTransition() {
+    fun cancelDragToDesktopTransition(cancelState: CancelState) {
         if (!inProgress) {
             // Don't attempt to cancel a drag to desktop transition since there is no transition in
             // progress which means that the drag to desktop transition was never successfully
@@ -200,13 +204,32 @@
             clearState()
             return
         }
-        state.cancelled = true
-        if (state.draggedTaskChange != null) {
+        state.cancelState = cancelState
+
+        if (state.draggedTaskChange != null && cancelState == CancelState.STANDARD_CANCEL) {
             // Regular case, transient launch of Home happened as is waiting for the cancel
             // transient to start and merge. Animate the cancellation (scale back to original
             // bounds) first before actually starting the cancel transition so that the wallpaper
             // is visible behind the animating task.
             startCancelAnimation()
+        } else if (
+            state.draggedTaskChange != null &&
+            (cancelState == CancelState.CANCEL_SPLIT_LEFT ||
+                    cancelState == CancelState.CANCEL_SPLIT_RIGHT)
+            ) {
+            // We have a valid dragged task, but the animation will be handled by
+            // SplitScreenController; request the transition here.
+            @SplitPosition val splitPosition = if (cancelState == CancelState.CANCEL_SPLIT_LEFT) {
+                SPLIT_POSITION_TOP_OR_LEFT
+            } else {
+                SPLIT_POSITION_BOTTOM_OR_RIGHT
+            }
+            val wct = WindowContainerTransaction()
+            restoreWindowOrder(wct, state)
+            state.startTransitionFinishTransaction?.apply()
+            state.startTransitionFinishCb?.onTransitionFinished(null /* wct */)
+            requestSplitFromScaledTask(splitPosition, wct)
+            clearState()
         } else {
             // There's no dragged task, this can happen when the "cancel" happened too quickly
             // before the "start" transition is even ready (like on a fling gesture). The
@@ -217,6 +240,54 @@
         }
     }
 
+    /** Calculate the bounds of a scaled task, then use those bounds to request split select. */
+    private fun requestSplitFromScaledTask(
+        @SplitPosition splitPosition: Int,
+        wct: WindowContainerTransaction
+    ) {
+        val state = requireTransitionState()
+        val taskInfo = state.draggedTaskChange?.taskInfo
+            ?: error("Expected non-null taskInfo")
+        val taskBounds = Rect(taskInfo.configuration.windowConfiguration.bounds)
+        val taskScale = state.dragAnimator.scale
+        val scaledWidth = taskBounds.width() * taskScale
+        val scaledHeight = taskBounds.height() * taskScale
+        val dragPosition = PointF(state.dragAnimator.position)
+        state.dragAnimator.cancelAnimator()
+        val animatedTaskBounds = Rect(
+            dragPosition.x.toInt(),
+            dragPosition.y.toInt(),
+            (dragPosition.x + scaledWidth).toInt(),
+            (dragPosition.y + scaledHeight).toInt()
+        )
+        requestSplitSelect(wct, taskInfo, splitPosition, animatedTaskBounds)
+    }
+
+    private fun requestSplitSelect(
+        wct: WindowContainerTransaction,
+        taskInfo: RunningTaskInfo,
+        @SplitPosition splitPosition: Int,
+        taskBounds: Rect = Rect(taskInfo.configuration.windowConfiguration.bounds)
+    ) {
+        // Prepare to exit split in order to enter split select.
+        if (taskInfo.windowingMode == WINDOWING_MODE_MULTI_WINDOW) {
+            splitScreenController.prepareExitSplitScreen(
+                wct,
+                splitScreenController.getStageOfTask(taskInfo.taskId),
+                SplitScreenController.EXIT_REASON_DESKTOP_MODE
+            )
+            splitScreenController.transitionHandler.onSplitToDesktop()
+        }
+        wct.setWindowingMode(taskInfo.token, WINDOWING_MODE_MULTI_WINDOW)
+        wct.setDensityDpi(taskInfo.token, context.resources.displayMetrics.densityDpi)
+        splitScreenController.requestEnterSplitSelect(
+            taskInfo,
+            wct,
+            splitPosition,
+            taskBounds
+        )
+    }
+
     override fun startAnimation(
         transition: IBinder,
         info: TransitionInfo,
@@ -261,7 +332,7 @@
                     is TransitionState.FromSplit -> {
                         state.splitRootChange = change
                         val layer =
-                            if (!state.cancelled) {
+                            if (state.cancelState == CancelState.NO_CANCEL) {
                                 // Normal case, split root goes to the bottom behind everything
                                 // else.
                                 appLayers - i
@@ -311,8 +382,18 @@
                 // Do not do this in the cancel-early case though, since in that case nothing should
                 // happen on screen so the layering will remain the same as if no transition
                 // occurred.
-                if (change.taskInfo?.taskId == state.draggedTaskId && !state.cancelled) {
+                if (
+                    change.taskInfo?.taskId == state.draggedTaskId &&
+                    state.cancelState != CancelState.STANDARD_CANCEL
+                ) {
+                    // We need access to the dragged task's change in both non-cancel and split
+                    // cancel cases.
                     state.draggedTaskChange = change
+                }
+                if (
+                    change.taskInfo?.taskId == state.draggedTaskId &&
+                    state.cancelState == CancelState.NO_CANCEL
+                    ) {
                     taskDisplayAreaOrganizer.reparentToDisplayArea(
                         change.endDisplayId,
                         change.leash,
@@ -331,11 +412,11 @@
         state.startTransitionFinishTransaction = finishTransaction
         startTransaction.apply()
 
-        if (!state.cancelled) {
+        if (state.cancelState == CancelState.NO_CANCEL) {
             // Normal case, start animation to scale down the dragged task. It'll also be moved to
             // follow the finger and when released we'll start the next phase/transition.
             state.dragAnimator.startAnimation()
-        } else {
+        } else if (state.cancelState == CancelState.STANDARD_CANCEL) {
             // Cancel-early case, the state was flagged was cancelled already, which means the
             // gesture ended in the cancel region. This can happen even before the start transition
             // is ready/animate here when cancelling quickly like with a fling. There's no point
@@ -343,6 +424,26 @@
             // directly into starting the cancel transition to restore WM order. Surfaces should
             // not move as if no transition happened.
             startCancelDragToDesktopTransition()
+        } else if (
+            state.cancelState == CancelState.CANCEL_SPLIT_LEFT ||
+            state.cancelState == CancelState.CANCEL_SPLIT_RIGHT
+            ){
+            // Cancel-early case for split-cancel. The state was flagged already as a cancel for
+            // requesting split select. Similar to the above, this can happen due to quick fling
+            // gestures. We can simply request split here without needing to calculate animated
+            // task bounds as the task has not shrunk at all.
+            val splitPosition = if (state.cancelState == CancelState.CANCEL_SPLIT_LEFT) {
+                SPLIT_POSITION_TOP_OR_LEFT
+            } else {
+                SPLIT_POSITION_BOTTOM_OR_RIGHT
+            }
+            val taskInfo = state.draggedTaskChange?.taskInfo
+                ?: error("Expected non-null task info.")
+            val wct = WindowContainerTransaction()
+            restoreWindowOrder(wct)
+            state.startTransitionFinishTransaction?.apply()
+            state.startTransitionFinishCb?.onTransitionFinished(null /* wct */)
+            requestSplitSelect(wct, taskInfo, splitPosition)
         }
         return true
     }
@@ -355,6 +456,12 @@
         finishCallback: Transitions.TransitionFinishCallback
     ) {
         val state = requireTransitionState()
+        // We don't want to merge the split select animation if that's what we requested.
+        if (state.cancelState == CancelState.CANCEL_SPLIT_LEFT ||
+            state.cancelState == CancelState.CANCEL_SPLIT_RIGHT) {
+            clearState()
+            return
+        }
         val isCancelTransition =
             info.type == TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP &&
                 transition == state.cancelTransitionToken &&
@@ -552,6 +659,17 @@
     private fun startCancelDragToDesktopTransition() {
         val state = requireTransitionState()
         val wct = WindowContainerTransaction()
+        restoreWindowOrder(wct, state)
+        state.cancelTransitionToken =
+            transitions.startTransition(
+                TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP, wct, this
+            )
+    }
+
+    private fun restoreWindowOrder(
+        wct: WindowContainerTransaction,
+        state: TransitionState = requireTransitionState()
+    ) {
         when (state) {
             is TransitionState.FromFullscreen -> {
                 // There may have been tasks sent behind home that are not the dragged task (like
@@ -580,9 +698,6 @@
         }
         val homeWc = state.homeToken ?: error("Home task should be non-null before cancelling")
         wct.restoreTransientOrder(homeWc)
-
-        state.cancelTransitionToken =
-            transitions.startTransition(TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP, wct, this)
     }
 
     private fun clearState() {
@@ -624,7 +739,7 @@
         abstract var cancelTransitionToken: IBinder?
         abstract var homeToken: WindowContainerToken?
         abstract var draggedTaskChange: Change?
-        abstract var cancelled: Boolean
+        abstract var cancelState: CancelState
         abstract var startAborted: Boolean
 
         data class FromFullscreen(
@@ -636,7 +751,7 @@
             override var cancelTransitionToken: IBinder? = null,
             override var homeToken: WindowContainerToken? = null,
             override var draggedTaskChange: Change? = null,
-            override var cancelled: Boolean = false,
+            override var cancelState: CancelState = CancelState.NO_CANCEL,
             override var startAborted: Boolean = false,
             var otherRootChanges: MutableList<Change> = mutableListOf()
         ) : TransitionState()
@@ -650,13 +765,25 @@
             override var cancelTransitionToken: IBinder? = null,
             override var homeToken: WindowContainerToken? = null,
             override var draggedTaskChange: Change? = null,
-            override var cancelled: Boolean = false,
+            override var cancelState: CancelState = CancelState.NO_CANCEL,
             override var startAborted: Boolean = false,
             var splitRootChange: Change? = null,
             var otherSplitTask: Int
         ) : TransitionState()
     }
 
+    /** Enum to provide context on cancelling a drag to desktop event. */
+    enum class CancelState {
+        /** No cancel case; this drag is not flagged for a cancel event. */
+        NO_CANCEL,
+        /** A standard cancel event; should restore task to previous windowing mode. */
+        STANDARD_CANCEL,
+        /** A cancel event where the task will request to enter split on the left side. */
+        CANCEL_SPLIT_LEFT,
+        /** A cancel event where the task will request to enter split on the right side. */
+        CANCEL_SPLIT_RIGHT
+    }
+
     companion object {
         /** The duration of the animation to commit or cancel the drag-to-desktop gesture. */
         private const val DRAG_TO_DESKTOP_FINISH_ANIM_DURATION_MS = 336L
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
index 526cf4d..e5b624f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
@@ -18,7 +18,8 @@
 
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 
-import static com.android.wm.shell.transition.Transitions.TRANSIT_MOVE_TO_DESKTOP;
+import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.getEnterTransitionType;
+import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.isEnterDesktopModeTransition;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -30,6 +31,7 @@
 import android.util.Slog;
 import android.view.SurfaceControl;
 import android.view.WindowManager;
+import android.view.WindowManager.TransitionType;
 import android.window.TransitionInfo;
 import android.window.TransitionRequestInfo;
 import android.window.WindowContainerTransaction;
@@ -37,6 +39,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.transition.Transitions;
 import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener;
 
@@ -82,8 +85,12 @@
      * @param wct WindowContainerTransaction for transition
      * @return the token representing the started transition
      */
-    public IBinder moveToDesktop(@NonNull WindowContainerTransaction wct) {
-        final IBinder token = mTransitions.startTransition(TRANSIT_MOVE_TO_DESKTOP, wct, this);
+    public IBinder moveToDesktop(
+            @NonNull WindowContainerTransaction wct,
+            DesktopModeTransitionSource transitionSource
+    ) {
+        final IBinder token = mTransitions.startTransition(getEnterTransitionType(transitionSource),
+                wct, this);
         mPendingTransitionTokens.add(token);
         return token;
     }
@@ -117,7 +124,7 @@
 
     private boolean startChangeTransition(
             @NonNull IBinder transition,
-            @WindowManager.TransitionType int type,
+            @TransitionType int type,
             @NonNull TransitionInfo.Change change,
             @NonNull SurfaceControl.Transaction startT,
             @NonNull SurfaceControl.Transaction finishT,
@@ -127,7 +134,7 @@
         }
 
         final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
-        if (type == TRANSIT_MOVE_TO_DESKTOP
+        if (isEnterDesktopModeTransition(type)
                 && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM) {
             return animateMoveToDesktop(change, startT, finishCallback);
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java
index 9f9e256..891f75c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandler.java
@@ -18,6 +18,9 @@
 
 import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 
+import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.getExitTransitionType;
+import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.isExitDesktopModeTransition;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
@@ -30,6 +33,7 @@
 import android.util.DisplayMetrics;
 import android.view.SurfaceControl;
 import android.view.WindowManager;
+import android.view.WindowManager.TransitionType;
 import android.window.TransitionInfo;
 import android.window.TransitionRequestInfo;
 import android.window.WindowContainerTransaction;
@@ -38,6 +42,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.transition.Transitions;
 
 import java.util.ArrayList;
@@ -52,6 +57,7 @@
  */
 public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionHandler {
     private static final int FULLSCREEN_ANIMATION_DURATION = 336;
+
     private final Context mContext;
     private final Transitions mTransitions;
     private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
@@ -77,17 +83,18 @@
     /**
      * Starts Transition of a given type
      *
-     * @param type                   Transition type
+     * @param transitionSource       DesktopModeTransitionSource for transition
      * @param wct                    WindowContainerTransaction for transition
      * @param position               Position of the task when transition is started
      * @param onAnimationEndCallback to be called after animation
      */
-    public void startTransition(@WindowManager.TransitionType int type,
+    public void startTransition(@NonNull DesktopModeTransitionSource transitionSource,
             @NonNull WindowContainerTransaction wct, Point position,
             Consumer<SurfaceControl.Transaction> onAnimationEndCallback) {
         mPosition = position;
         mOnAnimationFinishedCallback = onAnimationEndCallback;
-        final IBinder token = mTransitions.startTransition(type, wct, this);
+        final IBinder token = mTransitions.startTransition(getExitTransitionType(transitionSource),
+                wct, this);
         mPendingTransitionTokens.add(token);
     }
 
@@ -121,7 +128,7 @@
     @VisibleForTesting
     boolean startChangeTransition(
             @NonNull IBinder transition,
-            @WindowManager.TransitionType int type,
+            @TransitionType int type,
             @NonNull TransitionInfo.Change change,
             @NonNull SurfaceControl.Transaction startT,
             @NonNull SurfaceControl.Transaction finishT,
@@ -130,7 +137,7 @@
             return false;
         }
         final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
-        if (type == Transitions.TRANSIT_EXIT_DESKTOP_MODE
+        if (isExitDesktopModeTransition(type)
                 && taskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN) {
             // This Transition animates a task to fullscreen after being dragged to status bar
             final Resources resources = mContext.getResources();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopMode.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopMode.aidl
index c36f8de..a7ec203 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopMode.aidl
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopMode.aidl
@@ -18,6 +18,7 @@
 
 import android.app.ActivityManager.RunningTaskInfo;
 import android.window.RemoteTransition;
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.desktopmode.IDesktopTaskListener;
 
 /**
@@ -47,5 +48,5 @@
     oneway void setTaskListener(IDesktopTaskListener listener);
 
     /** Move a task with given `taskId` to desktop */
-    void moveToDesktop(int taskId);
+    void moveToDesktop(int taskId, in DesktopModeTransitionSource transitionSource);
 }
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
index 9aa5f4f..0acc7df 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
@@ -54,8 +54,8 @@
   extend `ExternalInterfaceBinder` and implement `invalidate()` to ensure it doesn't hold long
   references to the outer controller
 - Make the controller implement `RemoteCallable<T>`, and have all incoming calls use one of
-  the `ExecutorUtils.executeRemoteCallWithTaskPermission()` calls to verify the caller's identity
-  and ensure the call happens on the main shell thread and not the binder thread
+  the `executeRemoteCallWithTaskPermission()` calls to verify the caller's identity and ensure the
+  call happens on the main shell thread and not the binder thread
 - Inject `ShellController` and add the instance of the implementation as external interface
 - In Launcher, update `TouchInteractionService` to pass the interface to `SystemUIProxy`, and then
   call the SystemUIProxy method as needed in that code
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
index 7e70d6a..c374eb8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
@@ -32,7 +32,6 @@
 import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
 
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_DRAG_AND_DROP;
 
 import android.app.ActivityManager;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
index 39b9000..962309f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
@@ -19,7 +19,6 @@
 import static android.os.UserHandle.myUserId;
 import static android.view.Display.DEFAULT_DISPLAY;
 
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.onehanded.OneHandedState.STATE_ACTIVE;
 import static com.android.wm.shell.onehanded.OneHandedState.STATE_ENTERING;
 import static com.android.wm.shell.onehanded.OneHandedState.STATE_EXITING;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java
index eb845db..57c0732 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java
@@ -583,7 +583,7 @@
         }
 
         static PipTransitionAnimator<Rect> ofBounds(TaskInfo taskInfo, SurfaceControl leash,
-                Rect baseValue, Rect startValue, Rect endValue, Rect sourceHintRect,
+                Rect baseValue, Rect startValue, Rect endValue, Rect sourceRectHint,
                 @PipAnimationController.TransitionDirection int direction, float startingAngle,
                 @Surface.Rotation int rotationDelta) {
             final boolean isOutPipDirection = isOutPipDirection(direction);
@@ -613,14 +613,36 @@
                 initialContainerRect = initialSourceValue;
             }
 
-            final Rect sourceHintRectInsets;
-            if (sourceHintRect == null) {
-                sourceHintRectInsets = null;
+            final Rect adjustedSourceRectHint = new Rect();
+            if (sourceRectHint == null || sourceRectHint.isEmpty()) {
+                // Crop a Rect matches the aspect ratio and pivots at the center point.
+                // This is done for entering case only.
+                if (isInPipDirection(direction)) {
+                    final float aspectRatio = endValue.width() / (float) endValue.height();
+                    if ((startValue.width() / (float) startValue.height()) > aspectRatio) {
+                        // use the full height.
+                        adjustedSourceRectHint.set(0, 0,
+                                (int) (startValue.height() * aspectRatio), startValue.height());
+                        adjustedSourceRectHint.offset(
+                                (startValue.width() - adjustedSourceRectHint.width()) / 2, 0);
+                    } else {
+                        // use the full width.
+                        adjustedSourceRectHint.set(0, 0,
+                                startValue.width(), (int) (startValue.width() / aspectRatio));
+                        adjustedSourceRectHint.offset(
+                                0, (startValue.height() - adjustedSourceRectHint.height()) / 2);
+                    }
+                }
             } else {
-                sourceHintRectInsets = new Rect(sourceHintRect.left - initialContainerRect.left,
-                        sourceHintRect.top - initialContainerRect.top,
-                        initialContainerRect.right - sourceHintRect.right,
-                        initialContainerRect.bottom - sourceHintRect.bottom);
+                adjustedSourceRectHint.set(sourceRectHint);
+            }
+            final Rect sourceHintRectInsets = new Rect();
+            if (!adjustedSourceRectHint.isEmpty()) {
+                sourceHintRectInsets.set(
+                        adjustedSourceRectHint.left - initialContainerRect.left,
+                        adjustedSourceRectHint.top - initialContainerRect.top,
+                        initialContainerRect.right - adjustedSourceRectHint.right,
+                        initialContainerRect.bottom - adjustedSourceRectHint.bottom);
             }
             final Rect zeroInsets = new Rect(0, 0, 0, 0);
 
@@ -648,7 +670,7 @@
                     }
                     float angle = (1.0f - fraction) * startingAngle;
                     setCurrentValue(bounds);
-                    if (inScaleTransition() || sourceHintRect == null) {
+                    if (inScaleTransition() || adjustedSourceRectHint.isEmpty()) {
                         if (isOutPipDirection) {
                             getSurfaceTransactionHelper().crop(tx, leash, end)
                                     .scale(tx, leash, end, bounds);
@@ -661,7 +683,7 @@
                     } else {
                         final Rect insets = computeInsets(fraction);
                         getSurfaceTransactionHelper().scaleAndCrop(tx, leash,
-                                sourceHintRect, initialSourceValue, bounds, insets,
+                                adjustedSourceRectHint, initialSourceValue, bounds, insets,
                                 isInPipDirection, fraction);
                         if (shouldApplyCornerRadius()) {
                             final Rect sourceBounds = new Rect(initialContainerRect);
@@ -729,9 +751,6 @@
                 }
 
                 private Rect computeInsets(float fraction) {
-                    if (sourceHintRectInsets == null) {
-                        return zeroInsets;
-                    }
                     final Rect startRect = isOutPipDirection ? sourceHintRectInsets : zeroInsets;
                     final Rect endRect = isOutPipDirection ? zeroInsets : sourceHintRectInsets;
                     return mInsetsEvaluator.evaluate(fraction, startRect, endRect);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java
index e11e859..ff2d46e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java
@@ -226,11 +226,10 @@
                     appBoundsCenterX - mOverlayHalfSize,
                     appBoundsCenterY - mOverlayHalfSize);
             // Scale back the bitmap with the pivot point at center.
-            mTmpTransform.postScale(
+            final float scale = Math.min(
                     (float) mAppBounds.width() / currentBounds.width(),
-                    (float) mAppBounds.height() / currentBounds.height(),
-                    appBoundsCenterX,
-                    appBoundsCenterY);
+                    (float) mAppBounds.height() / currentBounds.height());
+            mTmpTransform.postScale(scale, scale, appBoundsCenterX, appBoundsCenterY);
             atomicTx.setMatrix(mLeash, mTmpTransform, mTmpFloat9)
                     .setAlpha(mLeash, fraction < 0.5f ? 0 : (fraction - 0.5f) * 2);
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
index a58d94e..202f60d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java
@@ -137,7 +137,7 @@
         mTmpDestinationRect.inset(insets);
         // Scale to the bounds no smaller than the destination and offset such that the top/left
         // of the scaled inset source rect aligns with the top/left of the destination bounds
-        final float scale;
+        final float scale, left, top;
         if (isInPipDirection
                 && sourceRectHint != null && sourceRectHint.width() < sourceBounds.width()) {
             // scale by sourceRectHint if it's not edge-to-edge, for entering PiP transition only.
@@ -148,12 +148,15 @@
                     ? (float) destinationBounds.width() / sourceBounds.width()
                     : (float) destinationBounds.height() / sourceBounds.height();
             scale = (1 - fraction) * startScale + fraction * endScale;
+            left = destinationBounds.left - insets.left * scale;
+            top = destinationBounds.top - insets.top * scale;
         } else {
             scale = Math.max((float) destinationBounds.width() / sourceBounds.width(),
                     (float) destinationBounds.height() / sourceBounds.height());
+            // Work around the rounding error by fix the position at very beginning.
+            left = scale == 1 ? 0 : destinationBounds.left - insets.left * scale;
+            top = scale == 1 ? 0 : destinationBounds.top - insets.top * scale;
         }
-        final float left = destinationBounds.left - insets.left * scale;
-        final float top = destinationBounds.top - insets.top * scale;
         mTmpTransform.setScale(scale, scale);
         tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
                 .setCrop(leash, mTmpDestinationRect)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
index e1657f9..04dd0ef 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
@@ -603,6 +603,8 @@
             // the end of the enter animation and reschedule exitPip to run after enter-PiP
             // has finished its transition and allowed the client to draw in PiP mode.
             mPipTransitionController.end(() -> {
+                // TODO(341627042): force set to entered state to avoid potential stack overflow.
+                mPipTransitionState.setTransitionState(PipTransitionState.ENTERED_PIP);
                 exitPip(animationDurationMs, requestEnterSplit);
             });
             return;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
index b52b0d8..5ee6f6b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
@@ -200,9 +200,6 @@
             animator.cancel();
         }
         mExitTransition = mTransitions.startTransition(type, out, this);
-        if (mPipOrganizer.getOutPipWindowingMode() == WINDOWING_MODE_UNDEFINED) {
-            mHomeTransitionObserver.notifyHomeVisibilityChanged(false /* isVisible */);
-        }
     }
 
     @Override
@@ -659,6 +656,9 @@
             startTransaction.remove(mPipOrganizer.mPipOverlay);
             mPipOrganizer.clearContentOverlay();
         }
+        if (mPipOrganizer.getOutPipWindowingMode() == WINDOWING_MODE_UNDEFINED) {
+            mHomeTransitionObserver.notifyHomeVisibilityChanged(false /* isVisible */);
+        }
         if (pipChange == null) {
             ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
                     "%s: No window of exiting PIP is found. Can't play expand animation", TAG);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
index 85f9194..de105c0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
@@ -22,7 +22,6 @@
 import static android.view.WindowManager.INPUT_CONSUMER_PIP;
 
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_PIP_TRANSITION;
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.pip.PipAnimationController.ANIM_TYPE_ALPHA;
 import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_EXPAND_OR_UNEXPAND;
 import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_LEAVE_PIP;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java
new file mode 100644
index 0000000..3e298e5
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.pip2.animation;
+
+import android.animation.Animator;
+import android.animation.ValueAnimator;
+import android.annotation.IntDef;
+import android.view.SurfaceControl;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.wm.shell.pip2.PipSurfaceTransactionHelper;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Animator that handles the alpha animation for entering PIP
+ */
+public class PipAlphaAnimator extends ValueAnimator implements ValueAnimator.AnimatorUpdateListener,
+        ValueAnimator.AnimatorListener {
+    @IntDef(prefix = {"FADE_"}, value = {
+            FADE_IN,
+            FADE_OUT
+    })
+
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface Fade {}
+
+    public static final int FADE_IN = 0;
+    public static final int FADE_OUT = 1;
+
+    private final SurfaceControl mLeash;
+    private final SurfaceControl.Transaction mStartTransaction;
+
+    // optional callbacks for tracking animation start and end
+    @Nullable private Runnable mAnimationStartCallback;
+    @Nullable private Runnable mAnimationEndCallback;
+
+    private final PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
+            mSurfaceControlTransactionFactory;
+
+    public PipAlphaAnimator(SurfaceControl leash,
+            SurfaceControl.Transaction tx,
+            @Fade int direction) {
+        mLeash = leash;
+        mStartTransaction = tx;
+        if (direction == FADE_IN) {
+            setFloatValues(0f, 1f);
+        } else { // direction == FADE_OUT
+            setFloatValues(1f, 0f);
+        }
+        mSurfaceControlTransactionFactory =
+                new PipSurfaceTransactionHelper.VsyncSurfaceControlTransactionFactory();
+        addListener(this);
+        addUpdateListener(this);
+    }
+
+    public void setAnimationStartCallback(@NonNull Runnable runnable) {
+        mAnimationStartCallback = runnable;
+    }
+
+    public void setAnimationEndCallback(@NonNull Runnable runnable) {
+        mAnimationEndCallback = runnable;
+    }
+
+    @Override
+    public void onAnimationStart(@NonNull Animator animation) {
+        if (mAnimationStartCallback != null) {
+            mAnimationStartCallback.run();
+        }
+        if (mStartTransaction != null) {
+            mStartTransaction.apply();
+        }
+    }
+
+    @Override
+    public void onAnimationUpdate(@NonNull ValueAnimator animation) {
+        final float alpha = (Float) animation.getAnimatedValue();
+        mSurfaceControlTransactionFactory.getTransaction().setAlpha(mLeash, alpha).apply();
+    }
+
+    @Override
+    public void onAnimationEnd(@NonNull Animator animation) {
+        if (mAnimationEndCallback != null) {
+            mAnimationEndCallback.run();
+        }
+    }
+
+    @Override
+    public void onAnimationCancel(@NonNull Animator animation) {}
+
+    @Override
+    public void onAnimationRepeat(@NonNull Animator animation) {}
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
index f5afeea..1846720 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java
@@ -19,7 +19,6 @@
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
 import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
 
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_PIP;
 
 import android.app.ActivityManager;
@@ -391,6 +390,7 @@
         @Override
         public void invalidate() {
             mController = null;
+            // Unregister the listener to ensure any registered binder death recipients are unlinked
             mListener.unregister();
         }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
index 7dddd27..3e215d9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
@@ -52,6 +52,7 @@
 import com.android.wm.shell.common.pip.PipUtils;
 import com.android.wm.shell.pip.PipContentOverlay;
 import com.android.wm.shell.pip.PipTransitionController;
+import com.android.wm.shell.pip2.animation.PipAlphaAnimator;
 import com.android.wm.shell.sysui.ShellInit;
 import com.android.wm.shell.transition.Transitions;
 
@@ -392,8 +393,14 @@
         // cache the PiP task token and leash
         WindowContainerToken pipTaskToken = pipChange.getContainer();
 
-        startTransaction.apply();
-        finishCallback.onTransitionFinished(null);
+        Preconditions.checkNotNull(mPipLeash, "Leash is null for alpha transition.");
+        // start transition with 0 alpha
+        startTransaction.setAlpha(mPipLeash, 0f);
+        PipAlphaAnimator animator = new PipAlphaAnimator(mPipLeash,
+                startTransaction, PipAlphaAnimator.FADE_IN);
+        animator.setAnimationEndCallback(() -> finishCallback.onTransitionFinished(null));
+
+        animator.start();
         return true;
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/OWNERS
new file mode 100644
index 0000000..3f3308c
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/OWNERS
@@ -0,0 +1 @@
+include platform/development:/tools/winscope/OWNERS
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java
index 19af3d5..497c3f7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java
@@ -18,6 +18,8 @@
 
 import com.android.internal.protolog.common.IProtoLogGroup;
 
+import java.util.UUID;
+
 /**
  * Defines logging groups for ProtoLog.
  *
@@ -116,6 +118,11 @@
         this.mLogToLogcat = logToLogcat;
     }
 
+    @Override
+    public int getId() {
+        return Consts.START_ID + this.ordinal();
+    }
+
     private static class Consts {
         private static final String TAG_WM_SHELL = "WindowManagerShell";
         private static final String TAG_WM_STARTING_WINDOW = "ShellStartingWindow";
@@ -124,5 +131,9 @@
 
         private static final boolean ENABLE_DEBUG = true;
         private static final boolean ENABLE_LOG_TO_PROTO_DEBUG = true;
+
+        private static final int START_ID = (int) (
+                UUID.nameUUIDFromBytes(ShellProtoLogGroup.class.getName().getBytes())
+                        .getMostSignificantBits() % Integer.MAX_VALUE);
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
index 863202d..9d16246 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
@@ -20,7 +20,6 @@
 import static android.content.pm.PackageManager.FEATURE_PC;
 
 import static com.android.window.flags.Flags.enableDesktopWindowingTaskbarRunningApps;
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_RECENT_TASKS;
 
 import android.app.ActivityManager;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index b9d70e1..dd219d3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -24,7 +24,6 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.RemoteAnimationTarget.MODE_OPENING;
 
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.common.MultiInstanceHelper.getComponent;
 import static com.android.wm.shell.common.MultiInstanceHelper.getShortcutComponent;
 import static com.android.wm.shell.common.MultiInstanceHelper.samePackage;
@@ -1241,8 +1240,9 @@
         @Override
         public void invalidate() {
             mController = null;
-            // Unregister the listener to ensure any registered binder death recipients are unlinked
+            // Unregister the listeners to ensure any binder death recipients are unlinked
             mListener.unregister();
+            mSelectListener.unregister();
         }
 
         @Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 82ef422..cc995ea 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -1846,7 +1846,7 @@
 
     void finishEnterSplitScreen(SurfaceControl.Transaction finishT) {
         ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "finishEnterSplitScreen");
-        mSplitLayout.update(finishT, true /* resetImePosition */);
+        mSplitLayout.update(null, true /* resetImePosition */);
         mMainStage.getSplitDecorManager().inflate(mContext, mMainStage.mRootLeash);
         mSideStage.getSplitDecorManager().inflate(mContext, mSideStage.mRootLeash);
         setDividerVisibility(true, finishT);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
index bec4ba3..fa084c58 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
@@ -23,7 +23,6 @@
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_WINDOWLESS;
 
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_STARTING_WINDOW;
 
 import android.app.ActivityManager.RunningTaskInfo;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
index 2d6ba6e..018c904 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
@@ -103,6 +103,7 @@
 import com.android.internal.policy.ScreenDecorationsUtils;
 import com.android.internal.policy.TransitionAnimation;
 import com.android.internal.protolog.common.ProtoLog;
+import com.android.window.flags.Flags;
 import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.common.DisplayLayout;
@@ -543,7 +544,13 @@
                         mTransactionPool, mMainExecutor, animRelOffset, cornerRadius,
                         clipRect);
 
-                if (info.getAnimationOptions() != null) {
+                final TransitionInfo.AnimationOptions options;
+                if (Flags.moveAnimationOptionsToChange()) {
+                    options = info.getAnimationOptions();
+                } else {
+                    options = change.getAnimationOptions();
+                }
+                if (options != null) {
                     attachThumbnail(animations, onAnimFinish, change, info.getAnimationOptions(),
                             cornerRadius);
                 }
@@ -725,7 +732,12 @@
         final boolean isOpeningType = TransitionUtil.isOpeningType(type);
         final boolean enter = TransitionUtil.isOpeningType(changeMode);
         final boolean isTask = change.getTaskInfo() != null;
-        final TransitionInfo.AnimationOptions options = info.getAnimationOptions();
+        final TransitionInfo.AnimationOptions options;
+        if (Flags.moveAnimationOptionsToChange()) {
+            options = change.getAnimationOptions();
+        } else {
+            options = info.getAnimationOptions();
+        }
         final int overrideType = options != null ? options.getType() : ANIM_NONE;
         final Rect endBounds = TransitionUtil.isClosingType(changeMode)
                 ? mRotator.getEndBoundsInStartRotation(change)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
index b1a1e59..299da13 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
@@ -133,5 +133,7 @@
      */
     public void invalidate(Transitions transitions) {
         transitions.unregisterObserver(this);
+        // Unregister the listener to ensure any registered binder death recipients are unlinked
+        mListener.unregister();
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
index ad4f02d..2047b5a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
@@ -55,6 +55,7 @@
 import com.android.internal.R;
 import com.android.internal.policy.TransitionAnimation;
 import com.android.internal.protolog.common.ProtoLog;
+import com.android.window.flags.Flags;
 import com.android.wm.shell.protolog.ShellProtoLogGroup;
 import com.android.wm.shell.shared.TransitionUtil;
 
@@ -71,7 +72,12 @@
         final int changeFlags = change.getFlags();
         final boolean enter = TransitionUtil.isOpeningType(changeMode);
         final boolean isTask = change.getTaskInfo() != null;
-        final TransitionInfo.AnimationOptions options = info.getAnimationOptions();
+        final TransitionInfo.AnimationOptions options;
+        if (Flags.moveAnimationOptionsToChange()) {
+            options = change.getAnimationOptions();
+        } else {
+            options = info.getAnimationOptions();
+        }
         final int overrideType = options != null ? options.getType() : ANIM_NONE;
         int animAttr = 0;
         boolean translucent = false;
@@ -246,7 +252,7 @@
         if (!a.getShowBackdrop()) {
             return defaultColor;
         }
-        if (info.getAnimationOptions() != null
+        if (!Flags.moveAnimationOptionsToChange() && info.getAnimationOptions() != null
                 && info.getAnimationOptions().getBackgroundColor() != 0) {
             // If available use the background color provided through AnimationOptions
             return info.getAnimationOptions().getBackgroundColor();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index 6ade81c..f257e20 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -35,7 +35,6 @@
 import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT;
 
 import static com.android.systemui.shared.Flags.returnAnimationFrameworkLibrary;
-import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 import static com.android.wm.shell.shared.TransitionUtil.isClosingType;
 import static com.android.wm.shell.shared.TransitionUtil.isOpeningType;
 import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_SHELL_TRANSITIONS;
@@ -54,6 +53,7 @@
 import android.os.RemoteException;
 import android.os.SystemProperties;
 import android.provider.Settings;
+import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Pair;
 import android.view.SurfaceControl;
@@ -166,9 +166,6 @@
     public static final int TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP =
             WindowManager.TRANSIT_FIRST_CUSTOM + 11;
 
-    /** Transition type to fullscreen from desktop mode. */
-    public static final int TRANSIT_EXIT_DESKTOP_MODE = WindowManager.TRANSIT_FIRST_CUSTOM + 12;
-
     /** Transition type to cancel the drag to desktop mode. */
     public static final int TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP =
             WindowManager.TRANSIT_FIRST_CUSTOM + 13;
@@ -177,9 +174,6 @@
     public static final int TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE =
             WindowManager.TRANSIT_FIRST_CUSTOM + 14;
 
-    /** Transition to animate task to desktop. */
-    public static final int TRANSIT_MOVE_TO_DESKTOP = WindowManager.TRANSIT_FIRST_CUSTOM + 15;
-
     /** Transition to resize PiP task. */
     public static final int TRANSIT_RESIZE_PIP = TRANSIT_FIRST_CUSTOM + 16;
 
@@ -190,6 +184,10 @@
             // TRANSIT_FIRST_CUSTOM + 17
             TaskFragmentOrganizer.TASK_FRAGMENT_TRANSIT_DRAG_RESIZE;
 
+    /** Transition type for desktop mode transitions. */
+    public static final int TRANSIT_DESKTOP_MODE_TYPES =
+            WindowManager.TRANSIT_FIRST_CUSTOM + 100;
+
     private final ShellTaskOrganizer mOrganizer;
     private final Context mContext;
     private final ShellExecutor mMainExecutor;
@@ -229,7 +227,8 @@
     private boolean mDisableForceSync = false;
 
     private static final class ActiveTransition {
-        IBinder mToken;
+        final IBinder mToken;
+
         TransitionHandler mHandler;
         boolean mAborted;
         TransitionInfo mInfo;
@@ -239,6 +238,10 @@
         /** Ordered list of transitions which have been merged into this one. */
         private ArrayList<ActiveTransition> mMerged;
 
+        ActiveTransition(IBinder token) {
+            mToken = token;
+        }
+
         boolean isSync() {
             return (mInfo.getFlags() & TransitionInfo.FLAG_SYNC) != 0;
         }
@@ -268,6 +271,9 @@
         }
     }
 
+    /** All transitions that we have created, but not yet finished. */
+    private final ArrayMap<IBinder, ActiveTransition> mKnownTransitions = new ArrayMap<>();
+
     /** Keeps track of transitions which have been started, but aren't ready yet. */
     private final ArrayList<ActiveTransition> mPendingTransitions = new ArrayList<>();
 
@@ -657,8 +663,10 @@
             }
             if (change.hasFlags(FLAG_NO_ANIMATION)) {
                 hasNoAnimation = true;
-            } else {
-                // at-least one relevant participant *is* animated, so we need to animate.
+            } else if (!TransitionUtil.isOrderOnly(change) && !change.hasFlags(FLAG_IS_OCCLUDED)) {
+                // Ignore the order only or occluded changes since they shouldn't be visible during
+                // animation. For anything else, we need to animate if at-least one relevant
+                // participant *is* animated,
                 return false;
             }
         }
@@ -690,7 +698,7 @@
                 info.getDebugId(), transitionToken, info);
         int activeIdx = findByToken(mPendingTransitions, transitionToken);
         if (activeIdx < 0) {
-            final ActiveTransition existing = getKnownTransition(transitionToken);
+            final ActiveTransition existing = mKnownTransitions.get(transitionToken);
             if (existing != null) {
                 Log.e(TAG, "Got duplicate transitionReady for " + transitionToken);
                 // The transition is already somewhere else in the pipeline, so just return here.
@@ -705,8 +713,8 @@
                     + transitionToken + ". expecting one of "
                     + Arrays.toString(mPendingTransitions.stream().map(
                             activeTransition -> activeTransition.mToken).toArray()));
-            final ActiveTransition fallback = new ActiveTransition();
-            fallback.mToken = transitionToken;
+            final ActiveTransition fallback = new ActiveTransition(transitionToken);
+            mKnownTransitions.put(transitionToken, fallback);
             mPendingTransitions.add(fallback);
             activeIdx = mPendingTransitions.size() - 1;
         }
@@ -746,7 +754,7 @@
                 // Sleep starts a process of forcing all prior transitions to finish immediately
                 ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS,
                         "Start finish-for-sync track %d", i);
-                finishForSync(active, i, null /* forceFinish */);
+                finishForSync(active.mToken, i, null /* forceFinish */);
             }
             if (hadPreceding) {
                 return false;
@@ -864,6 +872,7 @@
                     } else if (mPendingTransitions.isEmpty()) {
                         ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "All active transition "
                                 + "animations finished");
+                        mKnownTransitions.clear();
                         // Run all runnables from the run-when-idle queue.
                         for (int i = 0; i < mRunWhenIdleQueue.size(); i++) {
                             mRunWhenIdleQueue.get(i).run();
@@ -884,7 +893,7 @@
                     ready.mStartT.apply();
                 }
                 // finish now since there's nothing to animate. Calls back into processReadyQueue
-                onFinish(ready, null);
+                onFinish(ready.mToken, null);
                 return;
             }
             playTransition(ready);
@@ -943,8 +952,10 @@
 
     private void playTransition(@NonNull ActiveTransition active) {
         ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Playing animation for %s", active);
+        final var token = active.mToken;
+
         for (int i = 0; i < mObservers.size(); ++i) {
-            mObservers.get(i).onTransitionStarting(active.mToken);
+            mObservers.get(i).onTransitionStarting(token);
         }
 
         setupAnimHierarchy(active.mInfo, active.mStartT, active.mFinishT);
@@ -953,8 +964,8 @@
         if (active.mHandler != null) {
             ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " try firstHandler %s",
                     active.mHandler);
-            boolean consumed = active.mHandler.startAnimation(active.mToken, active.mInfo,
-                    active.mStartT, active.mFinishT, (wct) -> onFinish(active, wct));
+            boolean consumed = active.mHandler.startAnimation(token, active.mInfo,
+                    active.mStartT, active.mFinishT, (wct) -> onFinish(token, wct));
             if (consumed) {
                 ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " animated by firstHandler");
                 mTransitionTracer.logDispatched(active.mInfo.getDebugId(), active.mHandler);
@@ -962,8 +973,8 @@
             }
         }
         // Otherwise give every other handler a chance
-        active.mHandler = dispatchTransition(active.mToken, active.mInfo, active.mStartT,
-                active.mFinishT, (wct) -> onFinish(active, wct), active.mHandler);
+        active.mHandler = dispatchTransition(token, active.mInfo, active.mStartT,
+                active.mFinishT, (wct) -> onFinish(token, wct), active.mHandler);
     }
 
     /**
@@ -1039,10 +1050,15 @@
         info.releaseAnimSurfaces();
     }
 
-    private void onFinish(ActiveTransition active,
+    private void onFinish(IBinder token,
             @Nullable WindowContainerTransaction wct) {
+        final ActiveTransition active = mKnownTransitions.get(token);
+        if (active == null) {
+            Log.e(TAG, "Trying to finish a non-existent transition: " + token);
+            return;
+        }
         final Track track = mTracks.get(active.getTrack());
-        if (track.mActiveTransition != active) {
+        if (track == null || track.mActiveTransition != active) {
             Log.e(TAG, "Trying to finish a non-running transition. Either remote crashed or "
                     + " a handler didn't properly deal with a merge. " + active,
                     new RuntimeException());
@@ -1095,54 +1111,25 @@
                 ActiveTransition merged = active.mMerged.get(iM);
                 mOrganizer.finishTransition(merged.mToken, null /* wct */);
                 releaseSurfaces(merged.mInfo);
+                mKnownTransitions.remove(merged.mToken);
             }
             active.mMerged.clear();
         }
+        mKnownTransitions.remove(token);
 
         // Now that this is done, check the ready queue for more work.
         processReadyQueue(track);
     }
 
-    /**
-     * Checks to see if the transition specified by `token` is already known. If so, it will be
-     * returned.
-     */
-    @Nullable
-    private ActiveTransition getKnownTransition(IBinder token) {
-        for (int i = 0; i < mPendingTransitions.size(); ++i) {
-            final ActiveTransition active = mPendingTransitions.get(i);
-            if (active.mToken == token) return active;
-        }
-        for (int i = 0; i < mReadyDuringSync.size(); ++i) {
-            final ActiveTransition active = mReadyDuringSync.get(i);
-            if (active.mToken == token) return active;
-        }
-        for (int t = 0; t < mTracks.size(); ++t) {
-            final Track tr = mTracks.get(t);
-            for (int i = 0; i < tr.mReadyTransitions.size(); ++i) {
-                final ActiveTransition active = tr.mReadyTransitions.get(i);
-                if (active.mToken == token) return active;
-            }
-            final ActiveTransition active = tr.mActiveTransition;
-            if (active == null) continue;
-            if (active.mToken == token) return active;
-            if (active.mMerged == null) continue;
-            for (int m = 0; m < active.mMerged.size(); ++m) {
-                final ActiveTransition merged = active.mMerged.get(m);
-                if (merged.mToken == token) return merged;
-            }
-        }
-        return null;
-    }
-
     void requestStartTransition(@NonNull IBinder transitionToken,
             @Nullable TransitionRequestInfo request) {
         ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Transition requested (#%d): %s %s",
                 request.getDebugId(), transitionToken, request);
-        if (getKnownTransition(transitionToken) != null) {
+        if (mKnownTransitions.containsKey(transitionToken)) {
             throw new RuntimeException("Transition already started " + transitionToken);
         }
-        final ActiveTransition active = new ActiveTransition();
+        final ActiveTransition active = new ActiveTransition(transitionToken);
+        mKnownTransitions.put(transitionToken, active);
         WindowContainerTransaction wct = null;
 
         // If we have sleep, we use a special handler and we try to finish everything ASAP.
@@ -1182,7 +1169,6 @@
             wct.setBounds(request.getTriggerTask().token, null);
         }
         mOrganizer.startTransition(transitionToken, wct != null && wct.isEmpty() ? null : wct);
-        active.mToken = transitionToken;
         // Currently, WMCore only does one transition at a time. If it makes a requestStart, it
         // is already collecting that transition on core-side, so it will be the next one to
         // become ready. There may already be pending transitions added as part of direct
@@ -1201,9 +1187,10 @@
             @NonNull WindowContainerTransaction wct, @Nullable TransitionHandler handler) {
         ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Directly starting a new transition "
                 + "type=%d wct=%s handler=%s", type, wct, handler);
-        final ActiveTransition active = new ActiveTransition();
+        final ActiveTransition active =
+                new ActiveTransition(mOrganizer.startNewTransition(type, wct));
         active.mHandler = handler;
-        active.mToken = mOrganizer.startNewTransition(type, wct);
+        mKnownTransitions.put(active.mToken, active);
         mPendingTransitions.add(active);
         return active.mToken;
     }
@@ -1243,14 +1230,14 @@
      *
      * This is then repeated until there are no more pending sleep transitions.
      *
-     * @param reason The SLEEP transition that triggered this round of finishes. We will continue
-     *               looping round finishing transitions as long as this is still waiting.
+     * @param reason The token for the SLEEP transition that triggered this round of finishes.
+     *               We will continue looping round finishing transitions until this is ready.
      * @param forceFinish When non-null, this is the transition that we last sent the SLEEP merge
      *                    signal to -- so it will be force-finished if it's still running.
      */
-    private void finishForSync(ActiveTransition reason,
+    private void finishForSync(IBinder reason,
             int trackIdx, @Nullable ActiveTransition forceFinish) {
-        if (getKnownTransition(reason.mToken) == null) {
+        if (!mKnownTransitions.containsKey(reason)) {
             Log.d(TAG, "finishForSleep: already played sync transition " + reason);
             return;
         }
@@ -1270,7 +1257,7 @@
                     forceFinish.mHandler.onTransitionConsumed(
                             forceFinish.mToken, true /* aborted */, null /* finishTransaction */);
                 }
-                onFinish(forceFinish, null);
+                onFinish(forceFinish.mToken, null);
             }
         }
         if (track.isIdle() || mReadyDuringSync.isEmpty()) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
index 37cdbb4..eeb3662 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
@@ -83,6 +83,7 @@
 import com.android.wm.shell.common.DisplayLayout;
 import com.android.wm.shell.common.ShellExecutor;
 import com.android.wm.shell.common.SyncTransactionQueue;
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.common.split.SplitScreenConstants.SplitPosition;
 import com.android.wm.shell.desktopmode.DesktopModeVisualIndicator;
 import com.android.wm.shell.desktopmode.DesktopTasksController;
@@ -438,7 +439,7 @@
             } else if (id == R.id.caption_handle || id == R.id.open_menu_button) {
                 if (!decoration.isHandleMenuActive()) {
                     moveTaskToFront(decoration.mTaskInfo);
-                    decoration.createHandleMenu();
+                    decoration.createHandleMenu(mSplitScreenController);
                 } else {
                     decoration.closeHandleMenu();
                 }
@@ -447,7 +448,8 @@
                 // App sometimes draws before the insets from WindowDecoration#relayout have
                 // been added, so they must be added here
                 mWindowDecorByTaskId.get(mTaskId).addCaptionInset(wct);
-                mDesktopTasksController.moveToDesktop(mTaskId, wct);
+                mDesktopTasksController.moveToDesktop(mTaskId, wct,
+                        DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON);
                 decoration.closeHandleMenu();
             } else if (id == R.id.fullscreen_button) {
                 decoration.closeHandleMenu();
@@ -455,7 +457,8 @@
                     mSplitScreenController.moveTaskToFullscreen(mTaskId,
                             SplitScreenController.EXIT_REASON_DESKTOP_MODE);
                 } else {
-                    mDesktopTasksController.moveToFullscreen(mTaskId);
+                    mDesktopTasksController.moveToFullscreen(mTaskId,
+                            DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON);
                 }
             } else if (id == R.id.split_screen_button) {
                 decoration.closeHandleMenu();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
index eced078..a4ade1b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
@@ -68,10 +68,11 @@
 import com.android.wm.shell.common.DisplayLayout;
 import com.android.wm.shell.common.SyncTransactionQueue;
 import com.android.wm.shell.shared.DesktopModeStatus;
+import com.android.wm.shell.splitscreen.SplitScreenController;
 import com.android.wm.shell.windowdecor.extension.TaskInfoKt;
-import com.android.wm.shell.windowdecor.viewholder.DesktopModeAppControlsWindowDecorationViewHolder;
-import com.android.wm.shell.windowdecor.viewholder.DesktopModeFocusedWindowDecorationViewHolder;
-import com.android.wm.shell.windowdecor.viewholder.DesktopModeWindowDecorationViewHolder;
+import com.android.wm.shell.windowdecor.viewholder.AppHandleViewHolder;
+import com.android.wm.shell.windowdecor.viewholder.AppHeaderViewHolder;
+import com.android.wm.shell.windowdecor.viewholder.WindowDecorationViewHolder;
 
 import kotlin.Unit;
 
@@ -90,7 +91,7 @@
     private final Choreographer mChoreographer;
     private final SyncTransactionQueue mSyncQueue;
 
-    private DesktopModeWindowDecorationViewHolder mWindowDecorViewHolder;
+    private WindowDecorationViewHolder mWindowDecorViewHolder;
     private View.OnClickListener mOnCaptionButtonClickListener;
     private View.OnTouchListener mOnCaptionTouchListener;
     private View.OnLongClickListener mOnCaptionLongClickListener;
@@ -232,16 +233,16 @@
         }
 
         if (oldRootView != mResult.mRootView) {
-            if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_focused_window_decor) {
-                mWindowDecorViewHolder = new DesktopModeFocusedWindowDecorationViewHolder(
+            if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_app_handle) {
+                mWindowDecorViewHolder = new AppHandleViewHolder(
                         mResult.mRootView,
                         mOnCaptionTouchListener,
                         mOnCaptionButtonClickListener
                 );
             } else if (mRelayoutParams.mLayoutResId
-                    == R.layout.desktop_mode_app_controls_window_decor) {
+                    == R.layout.desktop_mode_app_header) {
                 loadAppInfoIfNeeded();
-                mWindowDecorViewHolder = new DesktopModeAppControlsWindowDecorationViewHolder(
+                mWindowDecorViewHolder = new AppHeaderViewHolder(
                         mResult.mRootView,
                         mOnCaptionTouchListener,
                         mOnCaptionButtonClickListener,
@@ -331,8 +332,8 @@
             boolean shouldSetTaskPositionAndCrop) {
         final int captionLayoutId = getDesktopModeWindowDecorLayoutId(taskInfo.getWindowingMode());
         final boolean isAppHeader =
-                captionLayoutId == R.layout.desktop_mode_app_controls_window_decor;
-        final boolean isAppHandle = captionLayoutId == R.layout.desktop_mode_focused_window_decor;
+                captionLayoutId == R.layout.desktop_mode_app_header;
+        final boolean isAppHandle = captionLayoutId == R.layout.desktop_mode_app_handle;
         relayoutParams.reset();
         relayoutParams.mRunningTaskInfo = taskInfo;
         relayoutParams.mLayoutResId = captionLayoutId;
@@ -385,7 +386,7 @@
             // Should match the density of the task. The task may have had its density overridden
             // to be different that SysUI's.
             windowDecorConfig.setTo(taskInfo.configuration);
-        } else if (DesktopModeStatus.isDesktopDensityOverrideSet()) {
+        } else if (DesktopModeStatus.useDesktopOverrideDensity()) {
             // The task has had its density overridden, but keep using the system's density to
             // layout the header.
             windowDecorConfig.setTo(context.getResources().getConfiguration());
@@ -405,7 +406,7 @@
      * resource. Otherwise, return ID_NULL and caption width be set to task width.
      */
     private static int getCaptionWidthId(int layoutResId) {
-        if (layoutResId == R.layout.desktop_mode_focused_window_decor) {
+        if (layoutResId == R.layout.desktop_mode_app_handle) {
             return R.dimen.desktop_mode_fullscreen_decor_caption_width;
         }
         return Resources.ID_NULL;
@@ -515,8 +516,8 @@
     private void createResizeVeilIfNeeded() {
         if (mResizeVeil != null) return;
         loadAppInfoIfNeeded();
-        mResizeVeil = new ResizeVeil(mContext, mDisplayController, mResizeVeilBitmap, mTaskInfo,
-                mTaskSurface, mSurfaceControlTransactionSupplier);
+        mResizeVeil = new ResizeVeil(mContext, mDisplayController, mResizeVeilBitmap,
+                mTaskSurface, mSurfaceControlTransactionSupplier, mTaskInfo);
     }
 
     /**
@@ -524,7 +525,7 @@
      */
     public void showResizeVeil(Rect taskBounds) {
         createResizeVeilIfNeeded();
-        mResizeVeil.showVeil(mTaskSurface, taskBounds);
+        mResizeVeil.showVeil(mTaskSurface, taskBounds, mTaskInfo);
     }
 
     /**
@@ -532,7 +533,7 @@
      */
     public void showResizeVeil(SurfaceControl.Transaction tx, Rect taskBounds) {
         createResizeVeilIfNeeded();
-        mResizeVeil.showVeil(tx, mTaskSurface, taskBounds, false /* fadeIn */);
+        mResizeVeil.showVeil(tx, mTaskSurface, taskBounds, mTaskInfo, false /* fadeIn */);
     }
 
     /**
@@ -568,7 +569,7 @@
     @Override
     @NonNull
     Rect calculateValidDragArea() {
-        final int appTextWidth = ((DesktopModeAppControlsWindowDecorationViewHolder)
+        final int appTextWidth = ((AppHeaderViewHolder)
                 mWindowDecorViewHolder).getAppNameTextWidth();
         final int leftButtonsWidth = loadDimensionPixelSize(mContext.getResources(),
                 R.dimen.desktop_mode_app_details_width_minus_text) + appTextWidth;
@@ -650,7 +651,7 @@
     /**
      * Create and display handle menu window.
      */
-    void createHandleMenu() {
+    void createHandleMenu(SplitScreenController splitScreenController) {
         loadAppInfoIfNeeded();
         mHandleMenu = new HandleMenu.Builder(this)
                 .setAppIcon(mAppIconBitmap)
@@ -660,6 +661,8 @@
                 .setLayoutId(mRelayoutParams.mLayoutResId)
                 .setWindowingButtonsVisible(DesktopModeStatus.canEnterDesktopMode(mContext))
                 .setCaptionHeight(mResult.mCaptionHeight)
+                .setDisplayController(mDisplayController)
+                .setSplitScreenController(splitScreenController)
                 .build();
         mWindowDecorViewHolder.onHandleMenuOpened();
         mHandleMenu.show();
@@ -747,7 +750,7 @@
      */
     boolean checkTouchEventInFocusedCaptionHandle(MotionEvent ev) {
         if (isHandleMenuActive() || !(mWindowDecorViewHolder
-                instanceof DesktopModeFocusedWindowDecorationViewHolder)) {
+                instanceof AppHandleViewHolder)) {
             return false;
         }
 
@@ -815,11 +818,15 @@
         // We want handle to remain pressed if the pointer moves outside of it during a drag.
         handle.setPressed((inHandle && action == ACTION_DOWN)
                 || (handle.isPressed() && action != ACTION_UP && action != ACTION_CANCEL));
-        if (isHandleMenuActive()) {
+        if (isHandleMenuActive() && !isMenuAboveStatusBar()) {
             mHandleMenu.checkMotionEvent(ev);
         }
     }
 
+    private boolean isMenuAboveStatusBar() {
+        return Flags.enableAdditionalWindowsAboveStatusBar() && !mTaskInfo.isFreeform();
+    }
+
     private boolean pointInView(View v, float x, float y) {
         return v != null && v.getLeft() <= x && v.getRight() >= x
                 && v.getTop() <= y && v.getBottom() >= y;
@@ -836,8 +843,8 @@
 
     private static int getDesktopModeWindowDecorLayoutId(@WindowingMode int windowingMode) {
         return windowingMode == WINDOWING_MODE_FREEFORM
-                ? R.layout.desktop_mode_app_controls_window_decor
-                : R.layout.desktop_mode_focused_window_decor;
+                ? R.layout.desktop_mode_app_header
+                : R.layout.desktop_mode_app_handle;
     }
 
     private void updatePositionInParent() {
@@ -868,6 +875,10 @@
         return exclusionRegion;
     }
 
+    int getCaptionX() {
+        return mResult.mCaptionX;
+    }
+
     @Override
     int getCaptionHeightId(@WindowingMode int windowingMode) {
         return getCaptionHeightIdStatic(windowingMode);
@@ -889,20 +900,20 @@
     }
 
     void setAnimatingTaskResize(boolean animatingTaskResize) {
-        if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_focused_window_decor) return;
-        ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder)
+        if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_app_handle) return;
+        ((AppHeaderViewHolder) mWindowDecorViewHolder)
                 .setAnimatingTaskResize(animatingTaskResize);
     }
 
     /** Called when there is a {@Link ACTION_HOVER_EXIT} on the maximize window button. */
     void onMaximizeWindowHoverExit() {
-        ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder)
+        ((AppHeaderViewHolder) mWindowDecorViewHolder)
                 .onMaximizeWindowHoverExit();
     }
 
     /** Called when there is a {@Link ACTION_HOVER_ENTER} on the maximize window button. */
     void onMaximizeWindowHoverEnter() {
-        ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder)
+        ((AppHeaderViewHolder) mWindowDecorViewHolder)
                 .onMaximizeWindowHoverEnter();
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java
index badce6e..635f96b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java
@@ -285,6 +285,9 @@
         private boolean mShouldHandleEvents;
         private int mLastCursorType = PointerIcon.TYPE_DEFAULT;
         private Rect mDragStartTaskBounds;
+        // The id of the particular pointer in a MotionEvent that we are listening to for drag
+        // resize events. For example, if multiple fingers are touching the screen, then each one
+        // has a separate pointer id, but we only accept drag input from one.
         private int mDragPointerId = -1;
 
         private TaskResizeInputEventReceiver(@NonNull Context context,
@@ -395,6 +398,8 @@
                     mShouldHandleEvents = mDragResizeWindowGeometry.shouldHandleEvent(e, isTouch,
                             new Point() /* offset */);
                     if (mShouldHandleEvents) {
+                        // Save the id of the pointer for this drag interaction; we will use the
+                        // same pointer for all subsequent MotionEvents in this interaction.
                         mDragPointerId = e.getPointerId(0);
                         float x = e.getX(0);
                         float y = e.getY(0);
@@ -420,9 +425,16 @@
                         break;
                     }
                     mInputManager.pilferPointers(mInputChannel.getToken());
-                    int dragPointerIndex = e.findPointerIndex(mDragPointerId);
-                    float rawX = e.getRawX(dragPointerIndex);
-                    float rawY = e.getRawY(dragPointerIndex);
+                    final int dragPointerIndex = e.findPointerIndex(mDragPointerId);
+                    if (dragPointerIndex < 0) {
+                        ProtoLog.d(WM_SHELL_DESKTOP_MODE,
+                                "%s: Handling action move, but ignore event due to invalid "
+                                        + "pointer index",
+                                TAG);
+                        break;
+                    }
+                    final float rawX = e.getRawX(dragPointerIndex);
+                    final float rawY = e.getRawY(dragPointerIndex);
                     final Rect taskBounds = mCallback.onDragPositioningMove(rawX, rawY);
                     updateInputSinkRegionForDrag(taskBounds);
                     result = true;
@@ -431,7 +443,14 @@
                 case MotionEvent.ACTION_UP:
                 case MotionEvent.ACTION_CANCEL: {
                     if (mShouldHandleEvents) {
-                        int dragPointerIndex = e.findPointerIndex(mDragPointerId);
+                        final int dragPointerIndex = e.findPointerIndex(mDragPointerId);
+                        if (dragPointerIndex < 0) {
+                            ProtoLog.d(WM_SHELL_DESKTOP_MODE,
+                                    "%s: Handling action %d, but ignore event due to invalid "
+                                            + "pointer index",
+                                    TAG, e.getActionMasked());
+                            break;
+                        }
                         final Rect taskBounds = mCallback.onDragPositioningEnd(
                                 e.getRawX(dragPointerIndex), e.getRawY(dragPointerIndex));
                         // If taskBounds has changed, setGeometry will be called and update the
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java
index 65adcee..bfc4e0d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java
@@ -23,6 +23,8 @@
 import static android.view.MotionEvent.ACTION_DOWN;
 import static android.view.MotionEvent.ACTION_UP;
 
+import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager.RunningTaskInfo;
@@ -34,6 +36,7 @@
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.PointF;
+import android.graphics.Rect;
 import android.view.MotionEvent;
 import android.view.SurfaceControl;
 import android.view.View;
@@ -42,7 +45,15 @@
 import android.widget.TextView;
 import android.window.SurfaceSyncGroup;
 
+import androidx.annotation.VisibleForTesting;
+
+import com.android.window.flags.Flags;
 import com.android.wm.shell.R;
+import com.android.wm.shell.common.DisplayController;
+import com.android.wm.shell.common.DisplayLayout;
+import com.android.wm.shell.splitscreen.SplitScreenController;
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalSystemViewContainer;
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewContainer;
 
 /**
  * Handle menu opened when the appropriate button is clicked on.
@@ -56,15 +67,19 @@
     private static final String TAG = "HandleMenu";
     private static final boolean SHOULD_SHOW_MORE_ACTIONS_PILL = false;
     private final Context mContext;
-    private final WindowDecoration mParentDecor;
-    private WindowDecoration.AdditionalWindow mHandleMenuWindow;
-    private final PointF mHandleMenuPosition = new PointF();
+    private final DesktopModeWindowDecoration mParentDecor;
+    @VisibleForTesting
+    AdditionalViewContainer mHandleMenuViewContainer;
+    @VisibleForTesting
+    final PointF mHandleMenuPosition = new PointF();
     private final boolean mShouldShowWindowingPill;
     private final Bitmap mAppIconBitmap;
     private final CharSequence mAppName;
     private final View.OnClickListener mOnClickListener;
     private final View.OnTouchListener mOnTouchListener;
     private final RunningTaskInfo mTaskInfo;
+    private final DisplayController mDisplayController;
+    private final SplitScreenController mSplitScreenController;
     private final int mLayoutResId;
     private int mMarginMenuTop;
     private int mMarginMenuStart;
@@ -74,12 +89,16 @@
     private HandleMenuAnimator mHandleMenuAnimator;
 
 
-    HandleMenu(WindowDecoration parentDecor, int layoutResId, View.OnClickListener onClickListener,
-            View.OnTouchListener onTouchListener, Bitmap appIcon, CharSequence appName,
-            boolean shouldShowWindowingPill, int captionHeight) {
+    HandleMenu(DesktopModeWindowDecoration parentDecor, int layoutResId,
+            View.OnClickListener onClickListener, View.OnTouchListener onTouchListener,
+            Bitmap appIcon, CharSequence appName, DisplayController displayController,
+            SplitScreenController splitScreenController, boolean shouldShowWindowingPill,
+            int captionHeight) {
         mParentDecor = parentDecor;
         mContext = mParentDecor.mDecorWindowContext;
         mTaskInfo = mParentDecor.mTaskInfo;
+        mDisplayController = displayController;
+        mSplitScreenController = splitScreenController;
         mLayoutResId = layoutResId;
         mOnClickListener = onClickListener;
         mOnTouchListener = onTouchListener;
@@ -95,20 +114,27 @@
         final SurfaceSyncGroup ssg = new SurfaceSyncGroup(TAG);
         SurfaceControl.Transaction t = new SurfaceControl.Transaction();
 
-        createHandleMenuWindow(t, ssg);
+        createHandleMenuViewContainer(t, ssg);
         ssg.addTransaction(t);
         ssg.markSyncReady();
         setupHandleMenu();
         animateHandleMenu();
     }
 
-    private void createHandleMenuWindow(SurfaceControl.Transaction t, SurfaceSyncGroup ssg) {
+    private void createHandleMenuViewContainer(SurfaceControl.Transaction t,
+            SurfaceSyncGroup ssg) {
         final int x = (int) mHandleMenuPosition.x;
         final int y = (int) mHandleMenuPosition.y;
-        mHandleMenuWindow = mParentDecor.addWindow(
-                R.layout.desktop_mode_window_decor_handle_menu, "Handle Menu",
-                t, ssg, x, y, mMenuWidth, mMenuHeight);
-        final View handleMenuView = mHandleMenuWindow.mWindowViewHost.getView();
+        if (!mTaskInfo.isFreeform() && Flags.enableAdditionalWindowsAboveStatusBar()) {
+            mHandleMenuViewContainer = new AdditionalSystemViewContainer(mContext,
+                    R.layout.desktop_mode_window_decor_handle_menu, mTaskInfo.taskId,
+                    x, y, mMenuWidth, mMenuHeight);
+        } else {
+            mHandleMenuViewContainer = mParentDecor.addWindow(
+                    R.layout.desktop_mode_window_decor_handle_menu, "Handle Menu",
+                    t, ssg, x, y, mMenuWidth, mMenuHeight);
+        }
+        final View handleMenuView = mHandleMenuViewContainer.getView();
         mHandleMenuAnimator = new HandleMenuAnimator(handleMenuView, mMenuWidth, mCaptionHeight);
     }
 
@@ -129,7 +155,7 @@
      * pill.
      */
     private void setupHandleMenu() {
-        final View handleMenu = mHandleMenuWindow.mWindowViewHost.getView();
+        final View handleMenu = mHandleMenuViewContainer.getView();
         handleMenu.setOnTouchListener(mOnTouchListener);
         setupAppInfoPill(handleMenu);
         if (mShouldShowWindowingPill) {
@@ -147,6 +173,7 @@
         final ImageView appIcon = handleMenu.findViewById(R.id.application_icon);
         final TextView appName = handleMenu.findViewById(R.id.application_name);
         collapseBtn.setOnClickListener(mOnClickListener);
+        collapseBtn.setTaskInfo(mTaskInfo);
         appIcon.setImageBitmap(mAppIconBitmap);
         appName.setText(mAppName);
     }
@@ -215,33 +242,55 @@
      * Updates handle menu's position variables to reflect its next position.
      */
     private void updateHandleMenuPillPositions() {
-        final int menuX, menuY;
-        final int captionWidth = mTaskInfo.getConfiguration()
-                .windowConfiguration.getBounds().width();
-        if (mLayoutResId
-                == R.layout.desktop_mode_app_controls_window_decor) {
-            // Align the handle menu to the left of the caption.
+        int menuX;
+        final int menuY;
+        if (mLayoutResId == R.layout.desktop_mode_app_header) {
+            // Align the handle menu to the left side of the caption.
             menuX = mMarginMenuStart;
             menuY = mMarginMenuTop;
         } else {
-            // Position the handle menu at the center of the caption.
-            menuX = (captionWidth / 2) - (mMenuWidth / 2);
-            menuY = mMarginMenuStart;
+            final int handleWidth = loadDimensionPixelSize(mContext.getResources(),
+                    R.dimen.desktop_mode_fullscreen_decor_caption_width);
+            final int handleOffset = (mMenuWidth / 2) - (handleWidth / 2);
+            final int captionX = mParentDecor.getCaptionX();
+            // TODO(b/343561161): This needs to be calculated differently if the task is in
+            //  top/bottom split.
+            if (Flags.enableAdditionalWindowsAboveStatusBar()) {
+                final Rect leftOrTopStageBounds = new Rect();
+                if (mSplitScreenController.getSplitPosition(mTaskInfo.taskId)
+                        == SPLIT_POSITION_BOTTOM_OR_RIGHT) {
+                    mSplitScreenController.getStageBounds(leftOrTopStageBounds, new Rect());
+                }
+                // In a focused decor, we use global coordinates for handle menu. Therefore we
+                // need to account for other factors like split stage and menu/handle width to
+                // center the menu.
+                final DisplayLayout layout = mDisplayController
+                        .getDisplayLayout(mTaskInfo.displayId);
+                menuX = captionX + handleOffset - (layout.width() / 2);
+                if (mSplitScreenController.getSplitPosition(mTaskInfo.taskId)
+                        == SPLIT_POSITION_BOTTOM_OR_RIGHT && layout.isLandscape()) {
+                    // If this task in the right stage, we need to offset by left stage's width
+                    menuX += leftOrTopStageBounds.width();
+                }
+                menuY = mMarginMenuStart - ((layout.height() - mMenuHeight) / 2);
+            } else {
+                final int captionWidth = mTaskInfo.getConfiguration()
+                        .windowConfiguration.getBounds().width();
+                menuX = (captionWidth / 2) - (mMenuWidth / 2);
+                menuY = mMarginMenuTop;
+            }
         }
-
         // Handle Menu position setup.
         mHandleMenuPosition.set(menuX, menuY);
-
     }
 
     /**
      * Update pill layout, in case task changes have caused positioning to change.
      */
     void relayout(SurfaceControl.Transaction t) {
-        if (mHandleMenuWindow != null) {
+        if (mHandleMenuViewContainer != null) {
             updateHandleMenuPillPositions();
-            t.setPosition(mHandleMenuWindow.mWindowSurface,
-                    mHandleMenuPosition.x, mHandleMenuPosition.y);
+            mHandleMenuViewContainer.setPosition(t, mHandleMenuPosition.x, mHandleMenuPosition.y);
         }
     }
 
@@ -253,7 +302,7 @@
      * @param ev the MotionEvent to compare against.
      */
     void checkMotionEvent(MotionEvent ev) {
-        final View handleMenu = mHandleMenuWindow.mWindowViewHost.getView();
+        final View handleMenu = mHandleMenuViewContainer.getView();
         final HandleMenuImageButton collapse = handleMenu.findViewById(R.id.collapse_menu_button);
         final PointF inputPoint = translateInputToLocalSpace(ev);
         final boolean inputInCollapseButton = pointInView(collapse, inputPoint.x, inputPoint.y);
@@ -281,7 +330,7 @@
     boolean isValidMenuInput(PointF inputPoint) {
         if (!viewsLaidOut()) return true;
         return pointInView(
-                mHandleMenuWindow.mWindowViewHost.getView(),
+                mHandleMenuViewContainer.getView(),
                 inputPoint.x - mHandleMenuPosition.x,
                 inputPoint.y - mHandleMenuPosition.y);
     }
@@ -295,7 +344,7 @@
      * Check if the views for handle menu can be seen.
      */
     private boolean viewsLaidOut() {
-        return mHandleMenuWindow.mWindowViewHost.getView().isLaidOut();
+        return mHandleMenuViewContainer.getView().isLaidOut();
     }
 
     private void loadHandleMenuDimensions() {
@@ -334,8 +383,8 @@
 
     void close() {
         final Runnable after = () -> {
-            mHandleMenuWindow.releaseView();
-            mHandleMenuWindow = null;
+            mHandleMenuViewContainer.releaseView();
+            mHandleMenuViewContainer = null;
         };
         if (mTaskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN
                 || mTaskInfo.getWindowingMode() == WINDOWING_MODE_MULTI_WINDOW) {
@@ -346,7 +395,7 @@
     }
 
     static final class Builder {
-        private final WindowDecoration mParent;
+        private final DesktopModeWindowDecoration mParent;
         private CharSequence mName;
         private Bitmap mAppIcon;
         private View.OnClickListener mOnClickListener;
@@ -354,9 +403,10 @@
         private int mLayoutId;
         private boolean mShowWindowingPill;
         private int mCaptionHeight;
+        private DisplayController mDisplayController;
+        private SplitScreenController mSplitScreenController;
 
-
-        Builder(@NonNull WindowDecoration parent) {
+        Builder(@NonNull DesktopModeWindowDecoration parent) {
             mParent = parent;
         }
 
@@ -395,9 +445,20 @@
             return this;
         }
 
+        Builder setDisplayController(DisplayController displayController) {
+            mDisplayController = displayController;
+            return this;
+        }
+
+        Builder setSplitScreenController(SplitScreenController splitScreenController) {
+            mSplitScreenController = splitScreenController;
+            return this;
+        }
+
         HandleMenu build() {
-            return new HandleMenu(mParent, mLayoutId, mOnClickListener, mOnTouchListener,
-                    mAppIcon, mName, mShowWindowingPill, mCaptionHeight);
+            return new HandleMenu(mParent, mLayoutId, mOnClickListener,
+                    mOnTouchListener, mAppIcon, mName, mDisplayController, mSplitScreenController,
+                    mShowWindowingPill, mCaptionHeight);
         }
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenuImageButton.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenuImageButton.kt
index 7898567..18757ef 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenuImageButton.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenuImageButton.kt
@@ -15,6 +15,10 @@
  */
 package com.android.wm.shell.windowdecor
 
+import android.app.ActivityManager.RunningTaskInfo
+import com.android.window.flags.Flags
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalSystemViewContainer
+
 import android.content.Context
 import android.util.AttributeSet
 import android.view.MotionEvent
@@ -25,10 +29,20 @@
  * This is due to the hover events being handled by [DesktopModeWindowDecorViewModel]
  * in order to take the status bar layer into account. Handling it in both classes results in a
  * flicker when the hover moves from outside to inside status bar layer.
+ * TODO(b/342229481): Remove this and all uses of it once [AdditionalSystemViewContainer] is no longer
+ *  guarded by a flag.
  */
-class HandleMenuImageButton(context: Context?, attrs: AttributeSet?) :
-    ImageButton(context, attrs) {
+class HandleMenuImageButton(
+    context: Context?,
+    attrs: AttributeSet?
+) : ImageButton(context, attrs) {
+    lateinit var taskInfo: RunningTaskInfo
+
     override fun onHoverEvent(motionEvent: MotionEvent): Boolean {
-        return false
+        if (Flags.enableAdditionalWindowsAboveStatusBar() || taskInfo.isFreeform) {
+            return super.onHoverEvent(motionEvent)
+        } else {
+            return false
+        }
     }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
index 22f0adc..c903d3b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
@@ -50,7 +50,7 @@
 import com.android.wm.shell.animation.Interpolators.EMPHASIZED_DECELERATE
 import com.android.wm.shell.common.DisplayController
 import com.android.wm.shell.common.SyncTransactionQueue
-import com.android.wm.shell.windowdecor.WindowDecoration.AdditionalWindow
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewHostViewContainer
 import java.util.function.Supplier
 
 
@@ -70,7 +70,7 @@
         private val menuPosition: PointF,
         private val transactionSupplier: Supplier<Transaction> = Supplier { Transaction() }
 ) {
-    private var maximizeMenu: AdditionalWindow? = null
+    private var maximizeMenu: AdditionalViewHostViewContainer? = null
     private lateinit var viewHost: SurfaceControlViewHost
     private lateinit var leash: SurfaceControl
     private val openMenuAnimatorSet = AnimatorSet()
@@ -145,7 +145,8 @@
                 .setPosition(leash, menuPosition.x, menuPosition.y)
                 .setCornerRadius(leash, cornerRadius)
                 .show(leash)
-        maximizeMenu = AdditionalWindow(leash, viewHost, transactionSupplier)
+        maximizeMenu =
+            AdditionalViewHostViewContainer(leash, viewHost, transactionSupplier)
 
         syncQueue.runInSync { transaction ->
             transaction.merge(t)
@@ -154,8 +155,7 @@
     }
 
     private fun animateOpenMenu() {
-        val viewHost = maximizeMenu?.mWindowViewHost
-        val maximizeMenuView = viewHost?.view ?: return
+        val maximizeMenuView = maximizeMenu?.view ?: return
         val maximizeWindowText = maximizeMenuView.requireViewById<TextView>(
                 R.id.maximize_menu_maximize_window_text)
         val snapWindowText = maximizeMenuView.requireViewById<TextView>(
@@ -233,7 +233,7 @@
     }
 
     private fun setupMaximizeMenu() {
-        val maximizeMenuView = maximizeMenu?.mWindowViewHost?.view ?: return
+        val maximizeMenuView = maximizeMenu?.view ?: return
 
         maximizeMenuView.setOnGenericMotionListener(onGenericMotionListener)
         maximizeMenuView.setOnTouchListener(onTouchListener)
@@ -275,7 +275,7 @@
      * Check if the views for maximize menu can be seen.
      */
     private fun viewsLaidOut(): Boolean {
-        return maximizeMenu?.mWindowViewHost?.view?.isLaidOut ?: false
+        return maximizeMenu?.view?.isLaidOut ?: false
     }
 
     fun onMaximizeMenuHoverEnter(viewId: Int, ev: MotionEvent) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
index 4f2d945..cd2dac8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
@@ -20,7 +20,6 @@
 import android.animation.ValueAnimator
 import android.app.ActivityManager.RunningTaskInfo
 import android.content.Context
-import android.content.res.Configuration
 import android.graphics.Bitmap
 import android.graphics.Color
 import android.graphics.PixelFormat
@@ -36,10 +35,15 @@
 import android.view.WindowlessWindowManager
 import android.widget.ImageView
 import android.window.TaskConstants
+import androidx.compose.material3.dynamicDarkColorScheme
+import androidx.compose.material3.dynamicLightColorScheme
+import androidx.compose.ui.graphics.toArgb
 import com.android.wm.shell.R
 import com.android.wm.shell.common.DisplayController
 import com.android.wm.shell.common.DisplayController.OnDisplaysChangedListener
 import com.android.wm.shell.windowdecor.WindowDecoration.SurfaceControlViewHostFactory
+import com.android.wm.shell.windowdecor.common.DecorThemeUtil
+import com.android.wm.shell.windowdecor.common.Theme
 import java.util.function.Supplier
 
 /**
@@ -49,14 +53,18 @@
         private val context: Context,
         private val displayController: DisplayController,
         private val appIcon: Bitmap,
-        private val taskInfo: RunningTaskInfo,
         private var parentSurface: SurfaceControl,
         private val surfaceControlTransactionSupplier: Supplier<SurfaceControl.Transaction>,
         private val surfaceControlBuilderFactory: SurfaceControlBuilderFactory =
                 object : SurfaceControlBuilderFactory {},
         private val surfaceControlViewHostFactory: SurfaceControlViewHostFactory =
-                object : SurfaceControlViewHostFactory {}
+                object : SurfaceControlViewHostFactory {},
+        taskInfo: RunningTaskInfo,
 ) {
+    private val decorThemeUtil = DecorThemeUtil(context)
+    private val lightColors = dynamicLightColorScheme(context)
+    private val darkColors = dynamicDarkColorScheme(context)
+
     private val surfaceSession = SurfaceSession()
     private lateinit var iconView: ImageView
     private var iconSize = 0
@@ -86,21 +94,10 @@
                         return
                     }
                     displayController.removeDisplayWindowListener(this)
-                    setupResizeVeil()
+                    setupResizeVeil(taskInfo)
                 }
             }
 
-    private val backgroundColorId: Int
-        get() {
-            val configuration = context.resources.configuration
-            return if (configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
-                    == Configuration.UI_MODE_NIGHT_YES) {
-                R.color.desktop_mode_resize_veil_dark
-            } else {
-                R.color.desktop_mode_resize_veil_light
-            }
-        }
-
     /**
      * Whether the resize veil is ready to be shown.
      */
@@ -108,14 +105,14 @@
         get() = viewHost != null
 
     init {
-        setupResizeVeil()
+        setupResizeVeil(taskInfo)
     }
 
     /**
      * Create the veil in its default invisible state.
      */
-    private fun setupResizeVeil() {
-        if (!obtainDisplayOrRegisterListener()) {
+    private fun setupResizeVeil(taskInfo: RunningTaskInfo) {
+        if (!obtainDisplayOrRegisterListener(taskInfo.displayId)) {
             // Display may not be available yet, skip this until then.
             return
         }
@@ -162,8 +159,8 @@
         Trace.endSection()
     }
 
-    private fun obtainDisplayOrRegisterListener(): Boolean {
-        display = displayController.getDisplay(taskInfo.displayId)
+    private fun obtainDisplayOrRegisterListener(displayId: Int): Boolean {
+        display = displayController.getDisplay(displayId)
         if (display == null) {
             displayController.addDisplayWindowListener(onDisplaysChangedListener)
             return false
@@ -184,7 +181,8 @@
             t: SurfaceControl.Transaction,
             parent: SurfaceControl,
             taskBounds: Rect,
-            fadeIn: Boolean
+            taskInfo: RunningTaskInfo,
+            fadeIn: Boolean,
     ) {
         if (!isReady || isVisible) {
             t.apply()
@@ -202,13 +200,15 @@
             parentSurface = parent
         }
 
-
+        val backgroundColor = when (decorThemeUtil.getAppTheme(taskInfo)) {
+            Theme.LIGHT -> lightColors.surfaceContainer
+            Theme.DARK -> darkColors.surfaceContainer
+        }
         t.show(veil)
                 .setLayer(veil, VEIL_CONTAINER_LAYER)
                 .setLayer(icon, VEIL_ICON_LAYER)
                 .setLayer(background, VEIL_BACKGROUND_LAYER)
-                .setColor(background,
-                        Color.valueOf(context.getColor(backgroundColorId)).components)
+                .setColor(background, Color.valueOf(backgroundColor.toArgb()).components)
         relayout(taskBounds, t)
         if (fadeIn) {
             cancelAnimation()
@@ -270,12 +270,12 @@
     /**
      * Animate veil's alpha to 1, fading it in.
      */
-    fun showVeil(parentSurface: SurfaceControl, taskBounds: Rect) {
+    fun showVeil(parentSurface: SurfaceControl, taskBounds: Rect, taskInfo: RunningTaskInfo) {
         if (!isReady || isVisible) {
             return
         }
         val t = surfaceControlTransactionSupplier.get()
-        showVeil(t, parentSurface, taskBounds, true /* fadeIn */)
+        showVeil(t, parentSurface, taskBounds, taskInfo, true /* fadeIn */)
     }
 
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
index 2ae3cb9..a08f97c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
@@ -22,6 +22,7 @@
 import static android.view.WindowInsets.Type.captionBar;
 import static android.view.WindowInsets.Type.mandatorySystemGestures;
 import static android.view.WindowInsets.Type.statusBars;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -56,6 +57,7 @@
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.shared.DesktopModeStatus;
 import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams.OccludingCaptionElement;
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewHostViewContainer;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -402,7 +404,7 @@
         mCaptionWindowManager.setConfiguration(taskConfig);
         final WindowManager.LayoutParams lp =
                 new WindowManager.LayoutParams(outResult.mCaptionWidth, outResult.mCaptionHeight,
-                        WindowManager.LayoutParams.TYPE_APPLICATION,
+                        TYPE_APPLICATION,
                         WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSPARENT);
         lp.setTitle("Caption of Task=" + mTaskInfo.taskId);
         lp.setTrustedOverlay();
@@ -569,10 +571,11 @@
      * @param yPos         y position of new window
      * @param width        width of new window
      * @param height       height of new window
-     * @return the {@link AdditionalWindow} that was added.
+     * @return the {@link AdditionalViewHostViewContainer} that was added.
      */
-    AdditionalWindow addWindow(int layoutId, String namePrefix, SurfaceControl.Transaction t,
-            SurfaceSyncGroup ssg, int xPos, int yPos, int width, int height) {
+    AdditionalViewHostViewContainer addWindow(int layoutId, String namePrefix,
+            SurfaceControl.Transaction t, SurfaceSyncGroup ssg, int xPos, int yPos,
+            int width, int height) {
         final SurfaceControl.Builder builder = mSurfaceControlBuilderSupplier.get();
         SurfaceControl windowSurfaceControl = builder
                 .setName(namePrefix + " of Task=" + mTaskInfo.taskId)
@@ -586,9 +589,9 @@
                 .setWindowCrop(windowSurfaceControl, width, height)
                 .show(windowSurfaceControl);
         final WindowManager.LayoutParams lp =
-                new WindowManager.LayoutParams(width, height,
-                        WindowManager.LayoutParams.TYPE_APPLICATION,
-                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSPARENT);
+                new WindowManager.LayoutParams(width, height, TYPE_APPLICATION,
+                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+                        PixelFormat.TRANSPARENT);
         lp.setTitle("Additional window of Task=" + mTaskInfo.taskId);
         lp.setTrustedOverlay();
         WindowlessWindowManager windowManager = new WindowlessWindowManager(mTaskInfo.configuration,
@@ -596,7 +599,7 @@
         SurfaceControlViewHost viewHost = mSurfaceControlViewHostFactory
                 .create(mDecorWindowContext, mDisplay, windowManager);
         ssg.add(viewHost.getSurfacePackage(), () -> viewHost.setView(v, lp));
-        return new AdditionalWindow(windowSurfaceControl, viewHost,
+        return new AdditionalViewHostViewContainer(windowSurfaceControl, viewHost,
                 mSurfaceControlTransactionSupplier);
     }
 
@@ -739,41 +742,4 @@
             return Objects.hash(mToken, mOwner, mFrame, Arrays.hashCode(mBoundingRects));
         }
     }
-
-    /**
-     * Subclass for additional windows associated with this WindowDecoration
-     */
-    static class AdditionalWindow {
-        SurfaceControl mWindowSurface;
-        SurfaceControlViewHost mWindowViewHost;
-        Supplier<SurfaceControl.Transaction> mTransactionSupplier;
-
-        AdditionalWindow(SurfaceControl surfaceControl,
-                SurfaceControlViewHost surfaceControlViewHost,
-                Supplier<SurfaceControl.Transaction> transactionSupplier) {
-            mWindowSurface = surfaceControl;
-            mWindowViewHost = surfaceControlViewHost;
-            mTransactionSupplier = transactionSupplier;
-        }
-
-        void releaseView() {
-            WindowlessWindowManager windowManager = mWindowViewHost.getWindowlessWM();
-
-            if (mWindowViewHost != null) {
-                mWindowViewHost.release();
-                mWindowViewHost = null;
-            }
-            windowManager = null;
-            final SurfaceControl.Transaction t = mTransactionSupplier.get();
-            boolean released = false;
-            if (mWindowSurface != null) {
-                t.remove(mWindowSurface);
-                mWindowSurface = null;
-                released = true;
-            }
-            if (released) {
-                t.apply();
-            }
-        }
-    }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainer.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainer.kt
new file mode 100644
index 0000000..6c2c8fd
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainer.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor.additionalviewcontainer
+
+import android.content.Context
+import android.graphics.PixelFormat
+import android.view.LayoutInflater
+import android.view.SurfaceControl
+import android.view.View
+import android.view.WindowManager
+
+/**
+ * An [AdditionalViewContainer] that uses the system [WindowManager] instance. Intended
+ * for view containers that should be above the status bar layer.
+ */
+class AdditionalSystemViewContainer(
+    private val context: Context,
+    layoutId: Int,
+    taskId: Int,
+    x: Int,
+    y: Int,
+    width: Int,
+    height: Int
+) : AdditionalViewContainer() {
+    override val view: View
+
+    init {
+        view = LayoutInflater.from(context).inflate(layoutId, null)
+        val lp = WindowManager.LayoutParams(
+            width, height, x, y,
+            WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL,
+            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+            PixelFormat.TRANSPARENT
+        )
+        lp.title = "Additional view container of Task=$taskId"
+        lp.setTrustedOverlay()
+        val wm: WindowManager? = context.getSystemService(WindowManager::class.java)
+        wm?.addView(view, lp)
+    }
+
+    override fun releaseView() {
+        context.getSystemService(WindowManager::class.java)?.removeViewImmediate(view)
+    }
+
+    override fun setPosition(t: SurfaceControl.Transaction, x: Float, y: Float) {
+        val lp = (view.layoutParams as WindowManager.LayoutParams).apply {
+            this.x = x.toInt()
+            this.y = y.toInt()
+        }
+        view.layoutParams = lp
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewContainer.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewContainer.kt
new file mode 100644
index 0000000..2650648
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewContainer.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor.additionalviewcontainer
+
+import android.view.SurfaceControl
+import android.view.View
+import com.android.wm.shell.windowdecor.WindowDecoration
+
+/**
+ * Class for additional view containers associated with a [WindowDecoration].
+ */
+abstract class AdditionalViewContainer internal constructor(
+) {
+    abstract val view: View?
+
+    /** Release the view associated with this container and perform needed cleanup. */
+    abstract fun releaseView()
+
+    /** Reposition the view container using provided coordinates. */
+    abstract fun setPosition(t: SurfaceControl.Transaction, x: Float, y: Float)
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainer.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainer.kt
new file mode 100644
index 0000000..2227612
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainer.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor.additionalviewcontainer
+
+import android.view.SurfaceControl
+import android.view.SurfaceControlViewHost
+import java.util.function.Supplier
+
+/**
+ * An [AdditionalViewContainer] that uses a [SurfaceControlViewHost] to show the window.
+ * Intended for view containers in freeform tasks that do not extend beyond task bounds.
+ */
+class AdditionalViewHostViewContainer(
+    private val windowSurface: SurfaceControl,
+    private val windowViewHost: SurfaceControlViewHost,
+    private val transactionSupplier: Supplier<SurfaceControl.Transaction>,
+) : AdditionalViewContainer() {
+
+    override val view
+        get() = windowViewHost.view
+
+    override fun releaseView() {
+        windowViewHost.release()
+        val t = transactionSupplier.get()
+        t.remove(windowSurface)
+        t.apply()
+    }
+
+    override fun setPosition(t: SurfaceControl.Transaction, x: Float, y: Float) {
+        t.setPosition(windowSurface, x, y)
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ThemeUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ThemeUtils.kt
new file mode 100644
index 0000000..8e6d1ee9
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ThemeUtils.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.android.wm.shell.windowdecor.common
+
+import android.app.ActivityManager.RunningTaskInfo
+import android.content.Context
+import android.content.res.Configuration
+import android.content.res.Configuration.UI_MODE_NIGHT_MASK
+import android.graphics.Color
+
+/** The theme of a window decoration. */
+internal enum class Theme { LIGHT, DARK }
+
+/** Whether a [Theme] is light. */
+internal fun Theme.isLight(): Boolean = this == Theme.LIGHT
+
+/** Whether a [Theme] is dark. */
+internal fun Theme.isDark(): Boolean = this == Theme.DARK
+
+/**
+ * Utility class for determining themes based on system settings and app's [RunningTaskInfo].
+ */
+internal class DecorThemeUtil(private val context: Context) {
+
+    private val systemTheme: Theme
+        get() = if ((context.resources.configuration.uiMode and UI_MODE_NIGHT_MASK) ==
+            Configuration.UI_MODE_NIGHT_YES) {
+            Theme.DARK
+        } else {
+            Theme.LIGHT
+        }
+
+    /**
+     * Returns the [Theme] used by the app with the given [RunningTaskInfo].
+     */
+    fun getAppTheme(task: RunningTaskInfo): Theme {
+        // TODO: use app's uiMode to find its actual light/dark value. It needs to be added to the
+        //   TaskInfo/TaskDescription.
+        val backgroundColor = task.taskDescription?.backgroundColor ?: return systemTheme
+        return if (Color.valueOf(backgroundColor).luminance() < 0.5) {
+            Theme.DARK
+        } else {
+            Theme.LIGHT
+        }
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
similarity index 78%
rename from libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt
rename to libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
index 96bc4a1..8d822c2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
@@ -1,3 +1,18 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
 package com.android.wm.shell.windowdecor.viewholder
 
 import android.animation.ObjectAnimator
@@ -12,14 +27,14 @@
 import com.android.wm.shell.animation.Interpolators
 
 /**
- * A desktop mode window decoration used when the window is in full "focus" (i.e. fullscreen). It
- * hosts a simple handle bar from which to initiate a drag motion to enter desktop mode.
+ * A desktop mode window decoration used when the window is in full "focus" (i.e. fullscreen/split).
+ * It hosts a simple handle bar from which to initiate a drag motion to enter desktop mode.
  */
-internal class DesktopModeFocusedWindowDecorationViewHolder(
+internal class AppHandleViewHolder(
         rootView: View,
         onCaptionTouchListener: View.OnTouchListener,
         onCaptionButtonClickListener: View.OnClickListener
-) : DesktopModeWindowDecorationViewHolder(rootView) {
+) : WindowDecorationViewHolder(rootView) {
 
     companion object {
         private const val CAPTION_HANDLE_ANIMATION_DURATION: Long = 100
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
new file mode 100644
index 0000000..0650154
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
@@ -0,0 +1,501 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.android.wm.shell.windowdecor.viewholder
+
+import android.annotation.ColorInt
+import android.app.ActivityManager.RunningTaskInfo
+import android.content.res.ColorStateList
+import android.content.res.Configuration
+import android.graphics.Bitmap
+import android.graphics.Color
+import android.graphics.drawable.LayerDrawable
+import android.graphics.drawable.RippleDrawable
+import android.graphics.drawable.ShapeDrawable
+import android.graphics.drawable.shapes.RoundRectShape
+import android.view.View
+import android.view.View.OnLongClickListener
+import android.widget.ImageButton
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.compose.material3.dynamicDarkColorScheme
+import androidx.compose.material3.dynamicLightColorScheme
+import androidx.compose.ui.graphics.toArgb
+import androidx.core.content.withStyledAttributes
+import androidx.core.view.isVisible
+import com.android.internal.R.attr.materialColorOnSecondaryContainer
+import com.android.internal.R.attr.materialColorOnSurface
+import com.android.internal.R.attr.materialColorSecondaryContainer
+import com.android.internal.R.attr.materialColorSurfaceContainerHigh
+import com.android.internal.R.attr.materialColorSurfaceContainerLow
+import com.android.internal.R.attr.materialColorSurfaceDim
+import com.android.window.flags.Flags
+import com.android.wm.shell.R
+import com.android.wm.shell.windowdecor.MaximizeButtonView
+import com.android.wm.shell.windowdecor.common.DecorThemeUtil
+import com.android.wm.shell.windowdecor.common.Theme
+import com.android.wm.shell.windowdecor.extension.isLightCaptionBarAppearance
+import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppearance
+
+/**
+ * A desktop mode window decoration used when the window is floating (i.e. freeform). It hosts
+ * finer controls such as a close window button and an "app info" section to pull up additional
+ * controls.
+ */
+internal class AppHeaderViewHolder(
+        rootView: View,
+        onCaptionTouchListener: View.OnTouchListener,
+        onCaptionButtonClickListener: View.OnClickListener,
+        onLongClickListener: OnLongClickListener,
+        onCaptionGenericMotionListener: View.OnGenericMotionListener,
+        appName: CharSequence,
+        appIconBitmap: Bitmap,
+        onMaximizeHoverAnimationFinishedListener: () -> Unit
+) : WindowDecorationViewHolder(rootView) {
+
+    private val decorThemeUtil = DecorThemeUtil(context)
+    private val lightColors = dynamicLightColorScheme(context)
+    private val darkColors = dynamicDarkColorScheme(context)
+
+    /**
+     * The corner radius to apply to the app chip, maximize and close button's background drawable.
+     **/
+    private val headerButtonsRippleRadius = context.resources
+        .getDimensionPixelSize(R.dimen.desktop_mode_header_buttons_ripple_radius)
+
+    /**
+     * The app chip, maximize and close button's height extends to the top & bottom edges of the
+     * header, and their width may be larger than their height. This is by design to increase the
+     * clickable and hover-able bounds of the view as much as possible. However, to prevent the
+     * ripple drawable from being as large as the views (and asymmetrical), insets are applied to
+     * the background ripple drawable itself to give the appearance of a smaller button
+     * (with padding between itself and the header edges / sibling buttons) but without affecting
+     * its touchable region.
+     */
+    private val appChipDrawableInsets = DrawableInsets(
+        vertical = context.resources
+            .getDimensionPixelSize(R.dimen.desktop_mode_header_app_chip_ripple_inset_vertical)
+    )
+    private val maximizeDrawableInsets = DrawableInsets(
+        vertical = context.resources
+            .getDimensionPixelSize(R.dimen.desktop_mode_header_maximize_ripple_inset_vertical),
+        horizontal = context.resources
+            .getDimensionPixelSize(R.dimen.desktop_mode_header_maximize_ripple_inset_horizontal)
+    )
+    private val closeDrawableInsets = DrawableInsets(
+        vertical = context.resources
+            .getDimensionPixelSize(R.dimen.desktop_mode_header_close_ripple_inset_vertical),
+        horizontal = context.resources
+            .getDimensionPixelSize(R.dimen.desktop_mode_header_close_ripple_inset_horizontal)
+    )
+
+    private val captionView: View = rootView.requireViewById(R.id.desktop_mode_caption)
+    private val captionHandle: View = rootView.requireViewById(R.id.caption_handle)
+    private val openMenuButton: View = rootView.requireViewById(R.id.open_menu_button)
+    private val closeWindowButton: ImageButton = rootView.requireViewById(R.id.close_window)
+    private val expandMenuButton: ImageButton = rootView.requireViewById(R.id.expand_menu_button)
+    private val maximizeButtonView: MaximizeButtonView =
+            rootView.requireViewById(R.id.maximize_button_view)
+    private val maximizeWindowButton: ImageButton = rootView.requireViewById(R.id.maximize_window)
+    private val appNameTextView: TextView = rootView.requireViewById(R.id.application_name)
+    private val appIconImageView: ImageView = rootView.requireViewById(R.id.application_icon)
+    val appNameTextWidth: Int
+        get() = appNameTextView.width
+
+    init {
+        captionView.setOnTouchListener(onCaptionTouchListener)
+        captionHandle.setOnTouchListener(onCaptionTouchListener)
+        openMenuButton.setOnClickListener(onCaptionButtonClickListener)
+        openMenuButton.setOnTouchListener(onCaptionTouchListener)
+        closeWindowButton.setOnClickListener(onCaptionButtonClickListener)
+        maximizeWindowButton.setOnClickListener(onCaptionButtonClickListener)
+        maximizeWindowButton.setOnTouchListener(onCaptionTouchListener)
+        maximizeWindowButton.setOnGenericMotionListener(onCaptionGenericMotionListener)
+        maximizeWindowButton.onLongClickListener = onLongClickListener
+        closeWindowButton.setOnTouchListener(onCaptionTouchListener)
+        appNameTextView.text = appName
+        appIconImageView.setImageBitmap(appIconBitmap)
+        maximizeButtonView.onHoverAnimationFinishedListener =
+                onMaximizeHoverAnimationFinishedListener
+    }
+
+    override fun bindData(taskInfo: RunningTaskInfo) {
+        if (Flags.enableThemedAppHeaders()) {
+            bindDataWithThemedHeaders(taskInfo)
+        } else {
+            bindDataLegacy(taskInfo)
+        }
+    }
+
+    private fun bindDataLegacy(taskInfo: RunningTaskInfo) {
+        captionView.setBackgroundColor(getCaptionBackgroundColor(taskInfo))
+        val color = getAppNameAndButtonColor(taskInfo)
+        val alpha = Color.alpha(color)
+        closeWindowButton.imageTintList = ColorStateList.valueOf(color)
+        maximizeWindowButton.imageTintList = ColorStateList.valueOf(color)
+        expandMenuButton.imageTintList = ColorStateList.valueOf(color)
+        appNameTextView.isVisible = !taskInfo.isTransparentCaptionBarAppearance
+        appNameTextView.setTextColor(color)
+        appIconImageView.imageAlpha = alpha
+        maximizeWindowButton.imageAlpha = alpha
+        closeWindowButton.imageAlpha = alpha
+        expandMenuButton.imageAlpha = alpha
+        context.withStyledAttributes(
+            set = null,
+            attrs = intArrayOf(
+                android.R.attr.selectableItemBackground,
+                android.R.attr.selectableItemBackgroundBorderless
+            ),
+            defStyleAttr = 0,
+            defStyleRes = 0
+        ) {
+            openMenuButton.background = getDrawable(0)
+            maximizeWindowButton.background = getDrawable(1)
+            closeWindowButton.background = getDrawable(1)
+        }
+        maximizeButtonView.setAnimationTints(isDarkMode())
+    }
+
+    private fun bindDataWithThemedHeaders(taskInfo: RunningTaskInfo) {
+        val header = fillHeaderInfo(taskInfo)
+        val headerStyle = getHeaderStyle(header)
+
+        // Caption Background
+        when (headerStyle.background) {
+            is HeaderStyle.Background.Opaque -> {
+                captionView.setBackgroundColor(headerStyle.background.color)
+            }
+            HeaderStyle.Background.Transparent -> {
+                captionView.setBackgroundColor(Color.TRANSPARENT)
+            }
+        }
+
+        // Caption Foreground
+        val foregroundColor = headerStyle.foreground.color
+        val foregroundAlpha = headerStyle.foreground.opacity
+        val colorStateList = ColorStateList.valueOf(foregroundColor).withAlpha(foregroundAlpha)
+        // App chip.
+        openMenuButton.apply {
+            background = createRippleDrawable(
+                color = foregroundColor,
+                cornerRadius = headerButtonsRippleRadius,
+                drawableInsets = appChipDrawableInsets,
+            )
+            expandMenuButton.imageTintList = colorStateList
+            appNameTextView.apply {
+                isVisible = header.type == Header.Type.DEFAULT
+                setTextColor(colorStateList)
+            }
+            appIconImageView.imageAlpha = foregroundAlpha
+        }
+        // Maximize button.
+        maximizeButtonView.setAnimationTints(
+            darkMode = header.appTheme == Theme.DARK,
+            iconForegroundColor = colorStateList,
+            baseForegroundColor = foregroundColor,
+            rippleDrawable = createRippleDrawable(
+                color = foregroundColor,
+                cornerRadius = headerButtonsRippleRadius,
+                drawableInsets = maximizeDrawableInsets
+            )
+        )
+        // Close button.
+        closeWindowButton.apply {
+            imageTintList = colorStateList
+            background = createRippleDrawable(
+                color = foregroundColor,
+                cornerRadius = headerButtonsRippleRadius,
+                drawableInsets = closeDrawableInsets
+            )
+        }
+    }
+
+    override fun onHandleMenuOpened() {}
+
+    override fun onHandleMenuClosed() {}
+
+    fun setAnimatingTaskResize(animatingTaskResize: Boolean) {
+        // If animating a task resize, cancel any running hover animations
+        if (animatingTaskResize) {
+            maximizeButtonView.cancelHoverAnimation()
+        }
+        maximizeButtonView.hoverDisabled = animatingTaskResize
+    }
+
+    fun onMaximizeWindowHoverExit() {
+        maximizeButtonView.cancelHoverAnimation()
+    }
+
+    fun onMaximizeWindowHoverEnter() {
+        maximizeButtonView.startHoverAnimation()
+    }
+
+    private fun getHeaderStyle(header: Header): HeaderStyle {
+        return HeaderStyle(
+            background = getHeaderBackground(header),
+            foreground = getHeaderForeground(header)
+        )
+    }
+
+    private fun getHeaderBackground(header: Header): HeaderStyle.Background {
+        return when (header.type) {
+            Header.Type.DEFAULT -> {
+                when (header.appTheme) {
+                    Theme.LIGHT -> {
+                        if (header.isFocused) {
+                            HeaderStyle.Background.Opaque(lightColors.secondaryContainer.toArgb())
+                        } else {
+                            HeaderStyle.Background.Opaque(lightColors.surfaceContainerLow.toArgb())
+                        }
+                    }
+                    Theme.DARK -> {
+                        if (header.isFocused) {
+                            HeaderStyle.Background.Opaque(darkColors.surfaceContainerHigh.toArgb())
+                        } else {
+                            HeaderStyle.Background.Opaque(darkColors.surfaceDim.toArgb())
+                        }
+                    }
+                }
+            }
+            Header.Type.CUSTOM -> HeaderStyle.Background.Transparent
+        }
+    }
+
+    private fun getHeaderForeground(header: Header): HeaderStyle.Foreground {
+        return when (header.type) {
+            Header.Type.DEFAULT -> {
+                when (header.appTheme) {
+                    Theme.LIGHT -> {
+                        if (header.isFocused) {
+                            HeaderStyle.Foreground(
+                                color = lightColors.onSecondaryContainer.toArgb(),
+                                opacity = OPACITY_100
+                            )
+                        } else {
+                            HeaderStyle.Foreground(
+                                color = lightColors.onSecondaryContainer.toArgb(),
+                                opacity = OPACITY_65
+                            )
+                        }
+                    }
+                    Theme.DARK -> {
+                        if (header.isFocused) {
+                            HeaderStyle.Foreground(
+                                color = darkColors.onSurface.toArgb(),
+                                opacity = OPACITY_100
+                            )
+                        } else {
+                            HeaderStyle.Foreground(
+                                color = darkColors.onSurface.toArgb(),
+                                opacity = OPACITY_55
+                            )
+                        }
+                    }
+                }
+            }
+            Header.Type.CUSTOM -> when {
+                header.isAppearanceCaptionLight && header.isFocused -> {
+                    HeaderStyle.Foreground(
+                        color = lightColors.onSecondaryContainer.toArgb(),
+                        opacity = OPACITY_100
+                    )
+                }
+                header.isAppearanceCaptionLight && !header.isFocused -> {
+                    HeaderStyle.Foreground(
+                        color = lightColors.onSecondaryContainer.toArgb(),
+                        opacity = OPACITY_65
+                    )
+                }
+                !header.isAppearanceCaptionLight && header.isFocused -> {
+                    HeaderStyle.Foreground(
+                        color = darkColors.onSurface.toArgb(),
+                        opacity = OPACITY_100
+                    )
+                }
+                !header.isAppearanceCaptionLight && !header.isFocused -> {
+                    HeaderStyle.Foreground(
+                        color = darkColors.onSurface.toArgb(),
+                        opacity = OPACITY_55
+                    )
+                }
+                else -> error("No other combination expected header=$header")
+            }
+        }
+    }
+
+    private fun fillHeaderInfo(taskInfo: RunningTaskInfo): Header {
+        return Header(
+            type = if (taskInfo.isTransparentCaptionBarAppearance) {
+                Header.Type.CUSTOM
+            } else {
+                Header.Type.DEFAULT
+            },
+            appTheme = decorThemeUtil.getAppTheme(taskInfo),
+            isFocused = taskInfo.isFocused,
+            isAppearanceCaptionLight = taskInfo.isLightCaptionBarAppearance
+        )
+    }
+
+    @ColorInt
+    private fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int {
+        return Color.argb(
+            alpha,
+            Color.red(color),
+            Color.green(color),
+            Color.blue(color)
+        )
+    }
+
+    private fun createRippleDrawable(
+        @ColorInt color: Int,
+        cornerRadius: Int,
+        drawableInsets: DrawableInsets,
+    ): RippleDrawable {
+        return RippleDrawable(
+            ColorStateList(
+                arrayOf(
+                    intArrayOf(android.R.attr.state_hovered),
+                    intArrayOf(android.R.attr.state_pressed),
+                    intArrayOf(),
+                ),
+                intArrayOf(
+                    replaceColorAlpha(color, OPACITY_11),
+                    replaceColorAlpha(color, OPACITY_15),
+                    Color.TRANSPARENT
+                )
+            ),
+            null /* content */,
+            LayerDrawable(arrayOf(
+                ShapeDrawable().apply {
+                    shape = RoundRectShape(
+                        FloatArray(8) { cornerRadius.toFloat() },
+                        null /* inset */,
+                        null /* innerRadii */
+                    )
+                    paint.color = Color.WHITE
+                }
+            )).apply {
+                require(numberOfLayers == 1) { "Must only contain one layer" }
+                setLayerInset(0 /* index */,
+                    drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b)
+            }
+        )
+    }
+
+    private data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) {
+        constructor(vertical: Int = 0, horizontal: Int = 0) :
+                this(horizontal, vertical, horizontal, vertical)
+    }
+
+    private data class Header(
+        val type: Type,
+        val appTheme: Theme,
+        val isFocused: Boolean,
+        val isAppearanceCaptionLight: Boolean,
+    ) {
+        enum class Type { DEFAULT, CUSTOM }
+    }
+
+    private data class HeaderStyle(
+        val background: Background,
+        val foreground: Foreground
+    ) {
+        data class Foreground(
+            @ColorInt val color: Int,
+            val opacity: Int
+        )
+
+        sealed class Background {
+            data object Transparent : Background()
+            data class Opaque(@ColorInt val color: Int) : Background()
+        }
+    }
+
+    @ColorInt
+    private fun getCaptionBackgroundColor(taskInfo: RunningTaskInfo): Int {
+        if (taskInfo.isTransparentCaptionBarAppearance) {
+            return Color.TRANSPARENT
+        }
+        val materialColorAttr: Int =
+            if (isDarkMode()) {
+                if (!taskInfo.isFocused) {
+                    materialColorSurfaceContainerHigh
+                } else {
+                    materialColorSurfaceDim
+                }
+            } else {
+                if (!taskInfo.isFocused) {
+                    materialColorSurfaceContainerLow
+                } else {
+                    materialColorSecondaryContainer
+                }
+        }
+        context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
+            return getColor(0, 0)
+        }
+        return 0
+    }
+
+    @ColorInt
+    private fun getAppNameAndButtonColor(taskInfo: RunningTaskInfo): Int {
+        val materialColorAttr = when {
+            taskInfo.isTransparentCaptionBarAppearance &&
+                    taskInfo.isLightCaptionBarAppearance -> materialColorOnSecondaryContainer
+            taskInfo.isTransparentCaptionBarAppearance &&
+                    !taskInfo.isLightCaptionBarAppearance -> materialColorOnSurface
+            isDarkMode() -> materialColorOnSurface
+            else -> materialColorOnSecondaryContainer
+        }
+        val appDetailsOpacity = when {
+            isDarkMode() && !taskInfo.isFocused -> DARK_THEME_UNFOCUSED_OPACITY
+            !isDarkMode() && !taskInfo.isFocused -> LIGHT_THEME_UNFOCUSED_OPACITY
+            else -> FOCUSED_OPACITY
+        }
+        context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
+            val color = getColor(0, 0)
+            return if (appDetailsOpacity == FOCUSED_OPACITY) {
+                color
+            } else {
+                Color.argb(
+                    appDetailsOpacity,
+                    Color.red(color),
+                    Color.green(color),
+                    Color.blue(color)
+                )
+            }
+        }
+        return 0
+    }
+
+    private fun isDarkMode(): Boolean {
+        return context.resources.configuration.uiMode and
+                Configuration.UI_MODE_NIGHT_MASK ==
+                Configuration.UI_MODE_NIGHT_YES
+    }
+
+    companion object {
+        private const val TAG = "DesktopModeAppControlsWindowDecorationViewHolder"
+
+        private const val DARK_THEME_UNFOCUSED_OPACITY = 140 // 55%
+        private const val LIGHT_THEME_UNFOCUSED_OPACITY = 166 // 65%
+        private const val FOCUSED_OPACITY = 255
+
+        private const val OPACITY_100 = 255
+        private const val OPACITY_11 = 28
+        private const val OPACITY_15 = 38
+        private const val OPACITY_55 = 140
+        private const val OPACITY_65 = 166
+    }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
deleted file mode 100644
index 3c12da2..0000000
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
+++ /dev/null
@@ -1,627 +0,0 @@
-package com.android.wm.shell.windowdecor.viewholder
-
-import android.annotation.ColorInt
-import android.app.ActivityManager.RunningTaskInfo
-import android.content.res.ColorStateList
-import android.content.res.Configuration
-import android.content.res.Configuration.UI_MODE_NIGHT_MASK
-import android.graphics.Bitmap
-import android.graphics.Color
-import android.graphics.drawable.GradientDrawable
-import android.graphics.drawable.LayerDrawable
-import android.graphics.drawable.RippleDrawable
-import android.graphics.drawable.ShapeDrawable
-import android.graphics.drawable.shapes.RoundRectShape
-import android.view.View
-import android.view.View.OnLongClickListener
-import android.widget.ImageButton
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.core.content.withStyledAttributes
-import androidx.core.view.isVisible
-import com.android.internal.R.attr.materialColorOnSecondaryContainer
-import com.android.internal.R.attr.materialColorOnSurface
-import com.android.internal.R.attr.materialColorOnSurfaceInverse
-import com.android.internal.R.attr.materialColorSecondaryContainer
-import com.android.internal.R.attr.materialColorSurfaceContainerHigh
-import com.android.internal.R.attr.materialColorSurfaceContainerLow
-import com.android.internal.R.attr.materialColorSurfaceDim
-import com.android.internal.R.attr.materialColorSurfaceInverse
-import com.android.window.flags.Flags
-import com.android.wm.shell.R
-import com.android.wm.shell.windowdecor.MaximizeButtonView
-import com.android.wm.shell.windowdecor.extension.isLightCaptionBarAppearance
-import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppearance
-
-/**
- * A desktop mode window decoration used when the window is floating (i.e. freeform). It hosts
- * finer controls such as a close window button and an "app info" section to pull up additional
- * controls.
- */
-internal class DesktopModeAppControlsWindowDecorationViewHolder(
-        rootView: View,
-        onCaptionTouchListener: View.OnTouchListener,
-        onCaptionButtonClickListener: View.OnClickListener,
-        onLongClickListener: OnLongClickListener,
-        onCaptionGenericMotionListener: View.OnGenericMotionListener,
-        appName: CharSequence,
-        appIconBitmap: Bitmap,
-        onMaximizeHoverAnimationFinishedListener: () -> Unit
-) : DesktopModeWindowDecorationViewHolder(rootView) {
-
-    /**
-     * The corner radius to apply to the app chip, maximize and close button's background drawable.
-     **/
-    private val headerButtonsRippleRadius = context.resources
-        .getDimensionPixelSize(R.dimen.desktop_mode_header_buttons_ripple_radius)
-
-    /**
-     * The app chip, maximize and close button's height extends to the top & bottom edges of the
-     * header, and their width may be larger than their height. This is by design to increase the
-     * clickable and hover-able bounds of the view as much as possible. However, to prevent the
-     * ripple drawable from being as large as the views (and asymmetrical), insets are applied to
-     * the background ripple drawable itself to give the appearance of a smaller button
-     * (with padding between itself and the header edges / sibling buttons) but without affecting
-     * its touchable region.
-     */
-    private val appChipDrawableInsets = DrawableInsets(
-        vertical = context.resources
-            .getDimensionPixelSize(R.dimen.desktop_mode_header_app_chip_ripple_inset_vertical)
-    )
-    private val maximizeDrawableInsets = DrawableInsets(
-        vertical = context.resources
-            .getDimensionPixelSize(R.dimen.desktop_mode_header_maximize_ripple_inset_vertical),
-        horizontal = context.resources
-            .getDimensionPixelSize(R.dimen.desktop_mode_header_maximize_ripple_inset_horizontal)
-    )
-    private val closeDrawableInsets = DrawableInsets(
-        vertical = context.resources
-            .getDimensionPixelSize(R.dimen.desktop_mode_header_close_ripple_inset_vertical),
-        horizontal = context.resources
-            .getDimensionPixelSize(R.dimen.desktop_mode_header_close_ripple_inset_horizontal)
-    )
-
-    private val captionView: View = rootView.requireViewById(R.id.desktop_mode_caption)
-    private val captionHandle: View = rootView.requireViewById(R.id.caption_handle)
-    private val openMenuButton: View = rootView.requireViewById(R.id.open_menu_button)
-    private val closeWindowButton: ImageButton = rootView.requireViewById(R.id.close_window)
-    private val expandMenuButton: ImageButton = rootView.requireViewById(R.id.expand_menu_button)
-    private val maximizeButtonView: MaximizeButtonView =
-            rootView.requireViewById(R.id.maximize_button_view)
-    private val maximizeWindowButton: ImageButton = rootView.requireViewById(R.id.maximize_window)
-    private val appNameTextView: TextView = rootView.requireViewById(R.id.application_name)
-    private val appIconImageView: ImageView = rootView.requireViewById(R.id.application_icon)
-    val appNameTextWidth: Int
-        get() = appNameTextView.width
-
-    init {
-        captionView.setOnTouchListener(onCaptionTouchListener)
-        captionHandle.setOnTouchListener(onCaptionTouchListener)
-        openMenuButton.setOnClickListener(onCaptionButtonClickListener)
-        openMenuButton.setOnTouchListener(onCaptionTouchListener)
-        closeWindowButton.setOnClickListener(onCaptionButtonClickListener)
-        maximizeWindowButton.setOnClickListener(onCaptionButtonClickListener)
-        maximizeWindowButton.setOnTouchListener(onCaptionTouchListener)
-        maximizeWindowButton.setOnGenericMotionListener(onCaptionGenericMotionListener)
-        maximizeWindowButton.onLongClickListener = onLongClickListener
-        closeWindowButton.setOnTouchListener(onCaptionTouchListener)
-        appNameTextView.text = appName
-        appIconImageView.setImageBitmap(appIconBitmap)
-        maximizeButtonView.onHoverAnimationFinishedListener =
-                onMaximizeHoverAnimationFinishedListener
-    }
-
-    override fun bindData(taskInfo: RunningTaskInfo) {
-        if (Flags.enableThemedAppHeaders()) {
-            bindDataWithThemedHeaders(taskInfo)
-        } else {
-            bindDataLegacy(taskInfo)
-        }
-    }
-
-    private fun bindDataLegacy(taskInfo: RunningTaskInfo) {
-        captionView.setBackgroundColor(getCaptionBackgroundColor(taskInfo))
-        val color = getAppNameAndButtonColor(taskInfo)
-        val alpha = Color.alpha(color)
-        closeWindowButton.imageTintList = ColorStateList.valueOf(color)
-        maximizeWindowButton.imageTintList = ColorStateList.valueOf(color)
-        expandMenuButton.imageTintList = ColorStateList.valueOf(color)
-        appNameTextView.isVisible = !taskInfo.isTransparentCaptionBarAppearance
-        appNameTextView.setTextColor(color)
-        appIconImageView.imageAlpha = alpha
-        maximizeWindowButton.imageAlpha = alpha
-        closeWindowButton.imageAlpha = alpha
-        expandMenuButton.imageAlpha = alpha
-        context.withStyledAttributes(
-            set = null,
-            attrs = intArrayOf(
-                android.R.attr.selectableItemBackground,
-                android.R.attr.selectableItemBackgroundBorderless
-            ),
-            defStyleAttr = 0,
-            defStyleRes = 0
-        ) {
-            openMenuButton.background = getDrawable(0)
-            maximizeWindowButton.background = getDrawable(1)
-            closeWindowButton.background = getDrawable(1)
-        }
-        maximizeButtonView.setAnimationTints(isDarkMode())
-    }
-
-    private fun bindDataWithThemedHeaders(taskInfo: RunningTaskInfo) {
-        val header = fillHeaderInfo(taskInfo)
-        val headerStyle = getHeaderStyle(header)
-
-        // Caption Background
-        val headerBackground = captionView.background as LayerDrawable
-        val backLayer = headerBackground.findDrawableByLayerId(R.id.backLayer) as GradientDrawable
-        val frontLayer = headerBackground.findDrawableByLayerId(R.id.frontLayer) as GradientDrawable
-        when (headerStyle.background) {
-            is HeaderStyle.Background.Opaque -> {
-                backLayer.setColor(headerStyle.background.backLayerColor ?: Color.BLACK)
-                frontLayer.setColor(headerStyle.background.frontLayerColor)
-                frontLayer.alpha = headerStyle.background.frontLayerOpacity
-            }
-            HeaderStyle.Background.Transparent -> {
-                backLayer.setColor(Color.TRANSPARENT)
-                frontLayer.setColor(Color.TRANSPARENT)
-                frontLayer.alpha = OPACITY_100
-            }
-        }
-
-        // Caption Foreground
-        val foregroundColor = headerStyle.foreground.color
-        val foregroundAlpha = headerStyle.foreground.opacity
-        val colorStateList = ColorStateList.valueOf(foregroundColor).withAlpha(foregroundAlpha)
-        // App chip.
-        openMenuButton.apply {
-            background = createRippleDrawable(
-                color = foregroundColor,
-                cornerRadius = headerButtonsRippleRadius,
-                drawableInsets = appChipDrawableInsets,
-            )
-            expandMenuButton.imageTintList = colorStateList
-            appNameTextView.apply {
-                isVisible = header.type == Header.Type.DEFAULT
-                setTextColor(colorStateList)
-            }
-            appIconImageView.imageAlpha = foregroundAlpha
-        }
-        // Maximize button.
-        maximizeButtonView.setAnimationTints(
-            darkMode = header.appTheme == Header.Theme.DARK,
-            iconForegroundColor = colorStateList,
-            baseForegroundColor = foregroundColor,
-            rippleDrawable = createRippleDrawable(
-                color = foregroundColor,
-                cornerRadius = headerButtonsRippleRadius,
-                drawableInsets = maximizeDrawableInsets
-            )
-        )
-        // Close button.
-        closeWindowButton.apply {
-            imageTintList = colorStateList
-            background = createRippleDrawable(
-                color = foregroundColor,
-                cornerRadius = headerButtonsRippleRadius,
-                drawableInsets = closeDrawableInsets
-            )
-        }
-    }
-
-    override fun onHandleMenuOpened() {}
-
-    override fun onHandleMenuClosed() {}
-
-    fun setAnimatingTaskResize(animatingTaskResize: Boolean) {
-        // If animating a task resize, cancel any running hover animations
-        if (animatingTaskResize) {
-            maximizeButtonView.cancelHoverAnimation()
-        }
-        maximizeButtonView.hoverDisabled = animatingTaskResize
-    }
-
-    fun onMaximizeWindowHoverExit() {
-        maximizeButtonView.cancelHoverAnimation()
-    }
-
-    fun onMaximizeWindowHoverEnter() {
-        maximizeButtonView.startHoverAnimation()
-    }
-
-    private fun getHeaderStyle(header: Header): HeaderStyle {
-        return HeaderStyle(
-            background = getHeaderBackground(header),
-            foreground = getHeaderForeground(header)
-        )
-    }
-
-    private fun getHeaderBackground(
-        header: Header
-    ): HeaderStyle.Background {
-        when (header.type) {
-            Header.Type.DEFAULT -> {
-                if (header.systemTheme.isLight() && header.appTheme.isLight() && header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSecondaryContainer),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isLight() &&
-                    !header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceContainerLow),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isDark() && header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceContainerHigh),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isDark() && !header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceDim),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isDark() && header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceInverse),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isDark() && !header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceInverse),
-                        frontLayerOpacity = OPACITY_30,
-                        backLayerColor = Color.BLACK
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isLight() && header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceInverse),
-                        frontLayerOpacity = OPACITY_100,
-                        backLayerColor = null
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isLight() && !header.isFocused) {
-                    return HeaderStyle.Background.Opaque(
-                        frontLayerColor = attrToColor(materialColorSurfaceInverse),
-                        frontLayerOpacity = OPACITY_55,
-                        backLayerColor = Color.WHITE
-                    )
-                }
-                error("No other combination expected header=$header")
-            }
-            Header.Type.CUSTOM -> return HeaderStyle.Background.Transparent
-        }
-    }
-
-    private fun getHeaderForeground(header: Header): HeaderStyle.Foreground {
-        when (header.type) {
-            Header.Type.DEFAULT -> {
-                if (header.systemTheme.isLight() && header.appTheme.isLight() && header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSecondaryContainer),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isLight() &&
-                    !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSecondaryContainer),
-                        opacity = OPACITY_65
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isDark() && header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurface),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isDark() && !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurface),
-                        opacity = OPACITY_55
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isDark() && header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isLight() && header.appTheme.isDark() && !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_65
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isLight() && header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isDark() && header.appTheme.isLight() && !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_70
-                    )
-                }
-                error("No other combination expected header=$header")
-            }
-            Header.Type.CUSTOM -> {
-                if (header.systemTheme.isLight() && header.isAppearanceCaptionLight &&
-                    header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSecondaryContainer),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isLight() && header.isAppearanceCaptionLight &&
-                    !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSecondaryContainer),
-                        opacity = OPACITY_65
-                    )
-                }
-                if (header.systemTheme.isDark() && !header.isAppearanceCaptionLight &&
-                    header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurface),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isDark() && !header.isAppearanceCaptionLight &&
-                    !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurface),
-                        opacity = OPACITY_55
-                    )
-                }
-                if (header.systemTheme.isLight() && !header.isAppearanceCaptionLight &&
-                    header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isLight() && !header.isAppearanceCaptionLight &&
-                    !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_65
-                    )
-                }
-                if (header.systemTheme.isDark() && header.isAppearanceCaptionLight &&
-                    header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_100
-                    )
-                }
-                if (header.systemTheme.isDark() && header.isAppearanceCaptionLight &&
-                    !header.isFocused) {
-                    return HeaderStyle.Foreground(
-                        color = attrToColor(materialColorOnSurfaceInverse),
-                        opacity = OPACITY_70
-                    )
-                }
-                error("No other combination expected header=$header")
-            }
-        }
-    }
-
-    private fun fillHeaderInfo(taskInfo: RunningTaskInfo): Header {
-        return Header(
-            type = if (taskInfo.isTransparentCaptionBarAppearance) {
-                Header.Type.CUSTOM
-            } else {
-                Header.Type.DEFAULT
-            },
-            systemTheme = getSystemTheme(),
-            appTheme = getAppTheme(taskInfo),
-            isFocused = taskInfo.isFocused,
-            isAppearanceCaptionLight = taskInfo.isLightCaptionBarAppearance
-        )
-    }
-
-    private fun getSystemTheme(): Header.Theme {
-        return if ((context.resources.configuration.uiMode and UI_MODE_NIGHT_MASK) ==
-            Configuration.UI_MODE_NIGHT_YES) {
-            Header.Theme.DARK
-        } else {
-            Header.Theme.LIGHT
-        }
-    }
-
-    private fun getAppTheme(taskInfo: RunningTaskInfo): Header.Theme {
-        // TODO: use app's uiMode to find its actual light/dark value. It needs to be added to the
-        //   TaskInfo/TaskDescription.
-        val backgroundColor = taskInfo.taskDescription?.backgroundColor ?: return getSystemTheme()
-        return if (Color.valueOf(backgroundColor).luminance() < 0.5) {
-            Header.Theme.DARK
-        } else {
-            Header.Theme.LIGHT
-        }
-    }
-
-    @ColorInt
-    private fun attrToColor(attr: Int): Int {
-        context.withStyledAttributes(null, intArrayOf(attr), 0, 0) {
-            return getColor(0, 0)
-        }
-        return Color.WHITE
-    }
-
-    @ColorInt
-    private fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int {
-        return Color.argb(
-            alpha,
-            Color.red(color),
-            Color.green(color),
-            Color.blue(color)
-        )
-    }
-
-    private fun createRippleDrawable(
-        @ColorInt color: Int,
-        cornerRadius: Int,
-        drawableInsets: DrawableInsets,
-    ): RippleDrawable {
-        return RippleDrawable(
-            ColorStateList(
-                arrayOf(
-                    intArrayOf(android.R.attr.state_hovered),
-                    intArrayOf(android.R.attr.state_pressed),
-                    intArrayOf(),
-                ),
-                intArrayOf(
-                    replaceColorAlpha(color, OPACITY_11),
-                    replaceColorAlpha(color, OPACITY_15),
-                    Color.TRANSPARENT
-                )
-            ),
-            null /* content */,
-            LayerDrawable(arrayOf(
-                ShapeDrawable().apply {
-                    shape = RoundRectShape(
-                        FloatArray(8) { cornerRadius.toFloat() },
-                        null /* inset */,
-                        null /* innerRadii */
-                    )
-                    paint.color = Color.WHITE
-                }
-            )).apply {
-                require(numberOfLayers == 1) { "Must only contain one layer" }
-                setLayerInset(0 /* index */,
-                    drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b)
-            }
-        )
-    }
-
-    private data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) {
-        constructor(vertical: Int = 0, horizontal: Int = 0) :
-                this(horizontal, vertical, horizontal, vertical)
-    }
-
-    private data class Header(
-        val type: Type,
-        val systemTheme: Theme,
-        val appTheme: Theme,
-        val isFocused: Boolean,
-        val isAppearanceCaptionLight: Boolean,
-    ) {
-        enum class Type { DEFAULT, CUSTOM }
-        enum class Theme { LIGHT, DARK }
-    }
-
-    private fun Header.Theme.isLight(): Boolean = this == Header.Theme.LIGHT
-
-    private fun Header.Theme.isDark(): Boolean = this == Header.Theme.DARK
-
-    private data class HeaderStyle(
-        val background: Background,
-        val foreground: Foreground
-    ) {
-        data class Foreground(
-            @ColorInt val color: Int,
-            val opacity: Int
-        )
-
-        sealed class Background {
-            data object Transparent : Background()
-            data class Opaque(
-                @ColorInt val frontLayerColor: Int,
-                val frontLayerOpacity: Int,
-                @ColorInt val backLayerColor: Int?
-            ) : Background()
-        }
-    }
-
-    @ColorInt
-    private fun getCaptionBackgroundColor(taskInfo: RunningTaskInfo): Int {
-        if (taskInfo.isTransparentCaptionBarAppearance) {
-            return Color.TRANSPARENT
-        }
-        val materialColorAttr: Int =
-            if (isDarkMode()) {
-                if (!taskInfo.isFocused) {
-                    materialColorSurfaceContainerHigh
-                } else {
-                    materialColorSurfaceDim
-                }
-            } else {
-                if (!taskInfo.isFocused) {
-                    materialColorSurfaceContainerLow
-                } else {
-                    materialColorSecondaryContainer
-                }
-        }
-        context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
-            return getColor(0, 0)
-        }
-        return 0
-    }
-
-    @ColorInt
-    private fun getAppNameAndButtonColor(taskInfo: RunningTaskInfo): Int {
-        val materialColorAttr = when {
-            taskInfo.isTransparentCaptionBarAppearance &&
-                    taskInfo.isLightCaptionBarAppearance -> materialColorOnSecondaryContainer
-            taskInfo.isTransparentCaptionBarAppearance &&
-                    !taskInfo.isLightCaptionBarAppearance -> materialColorOnSurface
-            isDarkMode() -> materialColorOnSurface
-            else -> materialColorOnSecondaryContainer
-        }
-        val appDetailsOpacity = when {
-            isDarkMode() && !taskInfo.isFocused -> DARK_THEME_UNFOCUSED_OPACITY
-            !isDarkMode() && !taskInfo.isFocused -> LIGHT_THEME_UNFOCUSED_OPACITY
-            else -> FOCUSED_OPACITY
-        }
-        context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
-            val color = getColor(0, 0)
-            return if (appDetailsOpacity == FOCUSED_OPACITY) {
-                color
-            } else {
-                Color.argb(
-                    appDetailsOpacity,
-                    Color.red(color),
-                    Color.green(color),
-                    Color.blue(color)
-                )
-            }
-        }
-        return 0
-    }
-
-    private fun isDarkMode(): Boolean {
-        return context.resources.configuration.uiMode and
-                Configuration.UI_MODE_NIGHT_MASK ==
-                Configuration.UI_MODE_NIGHT_YES
-    }
-
-    companion object {
-        private const val TAG = "DesktopModeAppControlsWindowDecorationViewHolder"
-
-        private const val DARK_THEME_UNFOCUSED_OPACITY = 140 // 55%
-        private const val LIGHT_THEME_UNFOCUSED_OPACITY = 166 // 65%
-        private const val FOCUSED_OPACITY = 255
-
-        private const val OPACITY_100 = 255
-        private const val OPACITY_11 = 28
-        private const val OPACITY_15 = 38
-        private const val OPACITY_30 = 77
-        private const val OPACITY_55 = 140
-        private const val OPACITY_65 = 166
-        private const val OPACITY_70 = 179
-    }
-}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
deleted file mode 100644
index 81bc34c..0000000
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.android.wm.shell.windowdecor.viewholder
-
-import android.app.ActivityManager.RunningTaskInfo
-import android.content.Context
-import android.view.View
-
-/**
- * Encapsulates the root [View] of a window decoration and its children to facilitate looking up
- * children (via findViewById) and updating to the latest data from [RunningTaskInfo].
- */
-internal abstract class DesktopModeWindowDecorationViewHolder(rootView: View) {
-  val context: Context = rootView.context
-
-  /**
-   * A signal to the view holder that new data is available and that the views should be updated to
-   * reflect it.
-   */
-  abstract fun bindData(taskInfo: RunningTaskInfo)
-
-  /** Callback when the handle menu is opened. */
-  abstract fun onHandleMenuOpened()
-
-  /** Callback when the handle menu is closed. */
-  abstract fun onHandleMenuClosed()
-}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt
new file mode 100644
index 0000000..5ae8d25
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.android.wm.shell.windowdecor.viewholder
+
+import android.app.ActivityManager.RunningTaskInfo
+import android.content.Context
+import android.view.View
+
+/**
+ * Encapsulates the root [View] of a window decoration and its children to facilitate looking up
+ * children (via findViewById) and updating to the latest data from [RunningTaskInfo].
+ */
+internal abstract class WindowDecorationViewHolder(rootView: View) {
+  val context: Context = rootView.context
+
+  /**
+   * A signal to the view holder that new data is available and that the views should be updated to
+   * reflect it.
+   */
+  abstract fun bindData(taskInfo: RunningTaskInfo)
+
+  /** Callback when the handle menu is opened. */
+  abstract fun onHandleMenuOpened()
+
+  /** Callback when the handle menu is closed. */
+  abstract fun onHandleMenuClosed()
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
index ea522cd..bd20c11 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
@@ -32,14 +32,19 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
 import android.animation.Animator;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.window.TransitionInfo;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
+import com.android.window.flags.Flags;
 import com.android.wm.shell.transition.TransitionInfoBuilder;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -56,12 +61,16 @@
 @RunWith(AndroidJUnit4.class)
 public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnimationTestBase {
 
+    @Rule
+    public SetFlagsRule mRule = new SetFlagsRule();
+
     @Before
     public void setup() {
         super.setUp();
         doNothing().when(mController).onAnimationFinished(any());
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -87,6 +96,7 @@
         verify(mController).onAnimationFinished(mTransition);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testChangesBehindStartingWindow() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -101,6 +111,7 @@
         assertEquals(0, animator.getDuration());
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testTransitionTypeDragResize() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_TASK_FRAGMENT_DRAG_RESIZE, 0)
@@ -115,8 +126,9 @@
         assertEquals(0, animator.getDuration());
     }
 
+    @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
-    public void testInvalidCustomAnimation() {
+    public void testInvalidCustomAnimation_disableAnimationOptionsPerChange() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
                 .addChange(createChange(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY))
                 .build();
@@ -131,4 +143,22 @@
         // An invalid custom animation is equivalent to jump-cut.
         assertEquals(0, animator.getDuration());
     }
+
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+    @Test
+    public void testInvalidCustomAnimation_enableAnimationOptionsPerChange() {
+        final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
+                .addChange(createChange(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY))
+                .build();
+        info.getChanges().getFirst().setAnimationOptions(TransitionInfo.AnimationOptions
+                .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
+                        0 /* backgroundColor */, false /* overrideTaskTransition */));
+        final Animator animator = mAnimRunner.createAnimator(
+                info, mStartTransaction, mFinishTransaction,
+                () -> mFinishCallback.onTransitionFinished(null /* wct */),
+                new ArrayList<>());
+
+        // An invalid custom animation is equivalent to jump-cut.
+        assertEquals(0, animator.getDuration());
+    }
 }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
index 974d69b..39d5507 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
@@ -32,6 +32,9 @@
 import android.animation.Animator;
 import android.animation.ValueAnimator;
 import android.graphics.Rect;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.view.SurfaceControl;
 import android.window.TransitionInfo;
 
@@ -39,9 +42,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
+import com.android.window.flags.Flags;
 import com.android.wm.shell.transition.TransitionInfoBuilder;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -59,6 +64,9 @@
     private static final Rect EMBEDDED_LEFT_BOUNDS = new Rect(0, 0, 500, 500);
     private static final Rect EMBEDDED_RIGHT_BOUNDS = new Rect(500, 0, 1000, 500);
 
+    @Rule
+    public SetFlagsRule mRule = new SetFlagsRule();
+
     @Before
     public void setup() {
         super.setUp();
@@ -66,11 +74,13 @@
                 any());
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testInstantiate() {
         verify(mShellInit).addInitCallback(any(), any());
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testOnInit() {
         mController.onInit();
@@ -78,6 +88,7 @@
         verify(mTransitions).addHandler(mController);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testSetAnimScaleSetting() {
         mController.setAnimScaleSetting(1.0f);
@@ -86,6 +97,7 @@
         verify(mAnimSpec).setAnimScaleSetting(1.0f);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation_containsNonActivityEmbeddingChange() {
         final TransitionInfo.Change nonEmbeddedOpen = createChange(0 /* flags */);
@@ -122,6 +134,7 @@
         assertFalse(info2.getChanges().contains(nonEmbeddedClose));
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation_containsOnlyFillTaskActivityEmbeddingChange() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -138,6 +151,7 @@
         verifyNoMoreInteractions(mFinishCallback);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation_containsActivityEmbeddingSplitChange() {
         // Change that occupies only part of the Task.
@@ -155,6 +169,7 @@
         verifyNoMoreInteractions(mFinishTransaction);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation_containsChangeEnterActivityEmbeddingSplit() {
         // Change that is entering ActivityEmbedding split.
@@ -171,6 +186,7 @@
         verifyNoMoreInteractions(mFinishTransaction);
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testStartAnimation_containsChangeExitActivityEmbeddingSplit() {
         // Change that is exiting ActivityEmbedding split.
@@ -187,8 +203,9 @@
         verifyNoMoreInteractions(mFinishTransaction);
     }
 
+    @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
-    public void testShouldAnimate_containsAnimationOptions() {
+    public void testShouldAnimate_containsAnimationOptions_disableAnimOptionsPerChange() {
         final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
                 .addChange(createEmbeddedChange(EMBEDDED_RIGHT_BOUNDS, TASK_BOUNDS, TASK_BOUNDS))
                 .build();
@@ -206,6 +223,28 @@
         assertFalse(mController.shouldAnimate(info));
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+    @Test
+    public void testShouldAnimate_containsAnimationOptions_enableAnimOptionsPerChange() {
+        final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
+                .addChange(createEmbeddedChange(EMBEDDED_RIGHT_BOUNDS, TASK_BOUNDS, TASK_BOUNDS))
+                .build();
+        final TransitionInfo.Change change = info.getChanges().getFirst();
+
+        change.setAnimationOptions(TransitionInfo.AnimationOptions
+                .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
+                        0 /* backgroundColor */, false /* overrideTaskTransition */));
+        assertTrue(mController.shouldAnimate(info));
+
+        change.setAnimationOptions(TransitionInfo.AnimationOptions
+                .makeSceneTransitionAnimOptions());
+        assertFalse(mController.shouldAnimate(info));
+
+        change.setAnimationOptions(TransitionInfo.AnimationOptions.makeCrossProfileAnimOptions());
+        assertFalse(mController.shouldAnimate(info));
+    }
+
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @UiThreadTest
     @Test
     public void testMergeAnimation() {
@@ -242,6 +281,7 @@
         verify(mFinishCallback).onTransitionFinished(any());
     }
 
+    @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
     @Test
     public void testOnAnimationFinished() {
         // Should not call finish when there is no transition.
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
index 8932e60..4d0348b 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
@@ -19,6 +19,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import android.os.Handler;
 import android.os.Looper;
@@ -95,16 +96,33 @@
         // Trigger animation cancel, the target progress should be 0.
         mTargetProgress = 0;
         mTargetProgressCalled = new CountDownLatch(1);
-        CountDownLatch cancelCallbackCalled = new CountDownLatch(1);
+        CountDownLatch finishCallbackCalled = new CountDownLatch(1);
         mMainThreadHandler.post(
-                () -> mProgressAnimator.onBackCancelled(() -> cancelCallbackCalled.countDown()));
-        cancelCallbackCalled.await(1, TimeUnit.SECONDS);
+                () -> mProgressAnimator.onBackCancelled(finishCallbackCalled::countDown));
+        finishCallbackCalled.await(1, TimeUnit.SECONDS);
         mTargetProgressCalled.await(1, TimeUnit.SECONDS);
         assertNotNull(mReceivedBackEvent);
         assertEquals(mReceivedBackEvent.getProgress(), mTargetProgress, 0 /* delta */);
     }
 
     @Test
+    public void testBackInvoked() throws InterruptedException {
+        // Give the animator some progress.
+        final BackMotionEvent backEvent = backMotionEventFrom(100, mTargetProgress);
+        mMainThreadHandler.post(
+                () -> mProgressAnimator.onBackProgressed(backEvent));
+        mTargetProgressCalled.await(1, TimeUnit.SECONDS);
+        assertNotNull(mReceivedBackEvent);
+
+        // Trigger back invoked animation
+        CountDownLatch finishCallbackCalled = new CountDownLatch(1);
+        mMainThreadHandler.post(
+                () -> mProgressAnimator.onBackInvoked(finishCallbackCalled::countDown));
+        assertTrue("onBackInvoked finishCallback never called",
+                finishCallbackCalled.await(1, TimeUnit.SECONDS));
+    }
+
+    @Test
     public void testResetCallsCancelCallbackImmediately() throws InterruptedException {
         // Give the animator some progress.
         final BackMotionEvent backEvent = backMotionEventFrom(100, mTargetProgress);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
index 0f43377..f55c96c 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
@@ -1203,6 +1203,25 @@
         assertThat(update.currentBubbleList.get(0).getKey()).isEqualTo(mEntryA2.getKey());
         assertThat(update.currentBubbleList.get(1).getKey()).isEqualTo(mEntryA1.getKey());
         assertThat(update.bubbleBarLocation).isEqualTo(BubbleBarLocation.LEFT);
+        assertThat(update.expandedChanged).isFalse();
+        assertThat(update.selectedBubbleKey).isEqualTo(mEntryA2.getKey());
+    }
+
+    @Test
+    public void test_getInitialStateForBubbleBar_includesExpandedState() {
+        sendUpdatedEntryAtTime(mEntryA1, 1000);
+        sendUpdatedEntryAtTime(mEntryA2, 2000);
+        mPositioner.setBubbleBarLocation(BubbleBarLocation.LEFT);
+        mBubbleData.setExpanded(true);
+
+        BubbleBarUpdate update = mBubbleData.getInitialStateForBubbleBar();
+        assertThat(update.currentBubbleList).hasSize(2);
+        assertThat(update.currentBubbleList.get(0).getKey()).isEqualTo(mEntryA2.getKey());
+        assertThat(update.currentBubbleList.get(1).getKey()).isEqualTo(mEntryA1.getKey());
+        assertThat(update.bubbleBarLocation).isEqualTo(BubbleBarLocation.LEFT);
+        assertThat(update.expandedChanged).isTrue();
+        assertThat(update.expanded).isTrue();
+        assertThat(update.selectedBubbleKey).isEqualTo(mEntryA2.getKey());
     }
 
     @Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt
index 432909f..5b22edd 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt
@@ -32,7 +32,17 @@
     @Test
     fun bubbleInfo() {
         val bubbleInfo =
-            BubbleInfo("key", 0, "shortcut id", null, 6, "com.some.package", "title", true)
+            BubbleInfo(
+                "key",
+                0,
+                "shortcut id",
+                null,
+                6,
+                "com.some.package",
+                "title",
+                "Some app",
+                true
+            )
         val parcel = Parcel.obtain()
         bubbleInfo.writeToParcel(parcel, PARCELABLE_WRITE_RETURN_VALUE)
         parcel.setDataPosition(0)
@@ -46,6 +56,7 @@
         assertThat(bubbleInfo.userId).isEqualTo(bubbleInfoFromParcel.userId)
         assertThat(bubbleInfo.packageName).isEqualTo(bubbleInfoFromParcel.packageName)
         assertThat(bubbleInfo.title).isEqualTo(bubbleInfoFromParcel.title)
+        assertThat(bubbleInfo.appName).isEqualTo(bubbleInfoFromParcel.appName)
         assertThat(bubbleInfo.isImportantConversation)
             .isEqualTo(bubbleInfoFromParcel.isImportantConversation)
     }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
index 2a2483d..7122181 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
@@ -22,7 +22,6 @@
 import android.os.IBinder
 import android.testing.AndroidTestingRunner
 import android.view.SurfaceControl
-import android.view.WindowManager.TRANSIT_CHANGE
 import android.view.WindowManager.TRANSIT_CLOSE
 import android.view.WindowManager.TRANSIT_FLAG_IS_RECENTS
 import android.view.WindowManager.TRANSIT_NONE
@@ -41,6 +40,14 @@
 import com.android.wm.shell.common.ShellExecutor
 import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason
 import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN
 import com.android.wm.shell.shared.DesktopModeStatus
 import com.android.wm.shell.sysui.ShellInit
 import com.android.wm.shell.transition.TransitionInfoBuilder
@@ -60,6 +67,7 @@
 import org.mockito.kotlin.never
 import org.mockito.kotlin.same
 import org.mockito.kotlin.times
+import org.mockito.kotlin.verifyZeroInteractions
 
 /**
  * Test class for {@link DesktopModeLoggerTransitionObserver}
@@ -72,18 +80,16 @@
 
     @JvmField
     @Rule
-    val extendedMockitoRule = ExtendedMockitoRule.Builder(this)
+    val extendedMockitoRule =
+        ExtendedMockitoRule.Builder(this)
             .mockStatic(DesktopModeEventLogger::class.java)
-            .mockStatic(DesktopModeStatus::class.java).build()!!
+            .mockStatic(DesktopModeStatus::class.java)
+            .build()!!
 
-    @Mock
-    lateinit var testExecutor: ShellExecutor
-    @Mock
-    private lateinit var mockShellInit: ShellInit
-    @Mock
-    private lateinit var transitions: Transitions
-    @Mock
-    private lateinit var context: Context
+    @Mock lateinit var testExecutor: ShellExecutor
+    @Mock private lateinit var mockShellInit: ShellInit
+    @Mock private lateinit var transitions: Transitions
+    @Mock private lateinit var context: Context
 
     private lateinit var transitionObserver: DesktopModeLoggerTransitionObserver
     private lateinit var shellInit: ShellInit
@@ -91,17 +97,21 @@
 
     @Before
     fun setup() {
-        doReturn(true).`when`{ DesktopModeStatus.canEnterDesktopMode(any()) }
+        doReturn(true).`when` { DesktopModeStatus.canEnterDesktopMode(any()) }
         shellInit = Mockito.spy(ShellInit(testExecutor))
         desktopModeEventLogger = mock(DesktopModeEventLogger::class.java)
 
-        transitionObserver = DesktopModeLoggerTransitionObserver(
-            context, mockShellInit, transitions, desktopModeEventLogger)
+        transitionObserver =
+            DesktopModeLoggerTransitionObserver(
+                context,
+                mockShellInit,
+                transitions,
+                desktopModeEventLogger
+            )
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            val initRunnableCaptor = ArgumentCaptor.forClass(
-                Runnable::class.java)
-            verify(mockShellInit).addInitCallback(initRunnableCaptor.capture(),
-                same(transitionObserver))
+            val initRunnableCaptor = ArgumentCaptor.forClass(Runnable::class.java)
+            verify(mockShellInit)
+                .addInitCallback(initRunnableCaptor.capture(), same(transitionObserver))
             initRunnableCaptor.value.run()
         } else {
             transitionObserver.onInit()
@@ -110,13 +120,11 @@
 
     @Test
     fun testRegistersObserverAtInit() {
-        verify(transitions)
-                .registerObserver(same(
-                    transitionObserver))
+        verify(transitions).registerObserver(same(transitionObserver))
     }
 
     @Test
-    fun taskCreated_notFreeformWindow_doesNotLogSessionEnterOrTaskAdded() {
+    fun transitOpen_notFreeformWindow_doesNotLogTaskAddedOrSessionEnter() {
         val change = createChange(TRANSIT_OPEN, createTaskInfo(1, WINDOWING_MODE_FULLSCREEN))
         val transitionInfo = TransitionInfoBuilder(TRANSIT_OPEN, 0).addChange(change).build()
 
@@ -127,7 +135,7 @@
     }
 
     @Test
-    fun taskCreated_FreeformWindowOpen_logSessionEnterAndTaskAdded() {
+    fun transitOpen_logTaskAddedAndEnterReasonAppFreeformIntent() {
         val change = createChange(TRANSIT_OPEN, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
         val transitionInfo = TransitionInfoBuilder(TRANSIT_OPEN, 0).addChange(change).build()
 
@@ -135,76 +143,119 @@
         val sessionId = transitionObserver.getLoggerSessionId()
 
         assertThat(sessionId).isNotNull()
-        verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!),
-            eq(EnterReason.APP_FREEFORM_INTENT))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.APP_FREEFORM_INTENT))
         verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
     }
 
     @Test
-    fun taskChanged_taskMovedToDesktopByDrag_logSessionEnterAndTaskAdded() {
+    fun transitEndDragToDesktop_logTaskAddedAndEnterReasonAppHandleDrag() {
         val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
         // task change is finalised when drag ends
-        val transitionInfo = TransitionInfoBuilder(
-            Transitions.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP, 0).addChange(change).build()
+        val transitionInfo =
+            TransitionInfoBuilder(Transitions.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP, 0)
+                .addChange(change)
+                .build()
 
         callOnTransitionReady(transitionInfo)
         val sessionId = transitionObserver.getLoggerSessionId()
 
         assertThat(sessionId).isNotNull()
-        verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!),
-            eq(EnterReason.APP_HANDLE_DRAG))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.APP_HANDLE_DRAG))
         verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
     }
 
     @Test
-    fun taskChanged_taskMovedToDesktopByButtonTap_logSessionEnterAndTaskAdded() {
+    fun transitEnterDesktopByButtonTap_logTaskAddedAndEnterReasonButtonTap() {
         val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
-        val transitionInfo = TransitionInfoBuilder(Transitions.TRANSIT_MOVE_TO_DESKTOP, 0)
-                .addChange(change).build()
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON, 0)
+                .addChange(change)
+                .build()
 
         callOnTransitionReady(transitionInfo)
         val sessionId = transitionObserver.getLoggerSessionId()
 
         assertThat(sessionId).isNotNull()
-        verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!),
-            eq(EnterReason.APP_HANDLE_MENU_BUTTON))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.APP_HANDLE_MENU_BUTTON))
         verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
     }
 
     @Test
-    fun taskChanged_existingFreeformTaskMadeVisible_logSessionEnterAndTaskAdded() {
-        val taskInfo = createTaskInfo(1, WINDOWING_MODE_FREEFORM)
-        taskInfo.isVisibleRequested = true
-        val change = createChange(TRANSIT_CHANGE, taskInfo)
-        val transitionInfo = TransitionInfoBuilder(Transitions.TRANSIT_MOVE_TO_DESKTOP, 0)
-                .addChange(change).build()
-
-        callOnTransitionReady(transitionInfo)
-        val sessionId = transitionObserver.getLoggerSessionId()
-
-        assertThat(sessionId).isNotNull()
-        verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!),
-            eq(EnterReason.APP_HANDLE_MENU_BUTTON))
-        verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
-    }
-
-    @Test
-    fun taskToFront_screenWake_logSessionStartedAndTaskAdded() {
+    // TODO(b/344822506): Update test when we add enter reason for app from overview
+    fun transitEnterDesktopFromAppFromOverview_logTaskAddedAndEnterReasonUnknown() {
         val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
-        val transitionInfo = TransitionInfoBuilder(TRANSIT_WAKE, 0)
-                .addChange(change).build()
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW, 0)
+                .addChange(change)
+                .build()
 
         callOnTransitionReady(transitionInfo)
         val sessionId = transitionObserver.getLoggerSessionId()
 
         assertThat(sessionId).isNotNull()
-        verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!),
-            eq(EnterReason.SCREEN_ON))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.UNKNOWN_ENTER))
         verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
     }
 
     @Test
-    fun freeformTaskVisible_screenTurnOff_logSessionExitAndTaskRemoved_sessionIdNull() {
+    fun transitEnterDesktopFromKeyboardShortcut_logTaskAddedAndEnterReasonKeyboardShortcut() {
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT, 0)
+                .addChange(change)
+                .build()
+
+        callOnTransitionReady(transitionInfo)
+        val sessionId = transitionObserver.getLoggerSessionId()
+
+        assertThat(sessionId).isNotNull()
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.KEYBOARD_SHORTCUT_ENTER))
+        verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
+    }
+
+    @Test
+    fun transitEnterDesktopFromUnknown_logTaskAddedAndEnterReasonUnknown() {
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN, 0).addChange(change).build()
+
+        callOnTransitionReady(transitionInfo)
+        val sessionId = transitionObserver.getLoggerSessionId()
+
+        assertThat(sessionId).isNotNull()
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.UNKNOWN_ENTER))
+        verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
+    }
+
+    @Test
+    fun transitWake_logTaskAddedAndEnterReasonScreenOn() {
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        val transitionInfo = TransitionInfoBuilder(TRANSIT_WAKE, 0).addChange(change).build()
+
+        callOnTransitionReady(transitionInfo)
+        val sessionId = transitionObserver.getLoggerSessionId()
+
+        assertThat(sessionId).isNotNull()
+        verify(desktopModeEventLogger, times(1))
+            .logSessionEnter(eq(sessionId!!), eq(EnterReason.SCREEN_ON))
+        verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), any())
+        verifyZeroInteractions(desktopModeEventLogger)
+    }
+
+    @Test
+    fun transitSleep_logTaskAddedAndExitReasonScreenOff_sessionIdNull() {
         val sessionId = 1
         // add a freeform task
         transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
@@ -214,13 +265,14 @@
         callOnTransitionReady(transitionInfo)
 
         verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
-        verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId),
-            eq(ExitReason.SCREEN_OFF))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.SCREEN_OFF))
+        verifyZeroInteractions(desktopModeEventLogger)
         assertThat(transitionObserver.getLoggerSessionId()).isNull()
     }
 
     @Test
-    fun freeformTaskVisible_exitDesktopUsingDrag_logSessionExitAndTaskRemoved_sessionIdNull() {
+    fun transitExitDesktopTaskDrag_logTaskRemovedAndExitReasonDragToExit_sessionIdNull() {
         val sessionId = 1
         // add a freeform task
         transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
@@ -228,18 +280,83 @@
 
         // window mode changing from FREEFORM to FULLSCREEN
         val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FULLSCREEN))
-        val transitionInfo = TransitionInfoBuilder(Transitions.TRANSIT_EXIT_DESKTOP_MODE)
-                .addChange(change).build()
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG).addChange(change).build()
         callOnTransitionReady(transitionInfo)
 
         verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
-        verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId),
-            eq(ExitReason.DRAG_TO_EXIT))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.DRAG_TO_EXIT))
+        verifyZeroInteractions(desktopModeEventLogger)
         assertThat(transitionObserver.getLoggerSessionId()).isNull()
     }
 
     @Test
-    fun freeformTaskVisible_exitDesktopBySwipeUp_logSessionExitAndTaskRemoved_sessionIdNull() {
+    fun transitExitDesktopAppHandleButton_logTaskRemovedAndExitReasonButton_sessionIdNull() {
+        val sessionId = 1
+        // add a freeform task
+        transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        transitionObserver.setLoggerSessionId(sessionId)
+
+        // window mode changing from FREEFORM to FULLSCREEN
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FULLSCREEN))
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON)
+                .addChange(change)
+                .build()
+        callOnTransitionReady(transitionInfo)
+
+        verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.APP_HANDLE_MENU_BUTTON_EXIT))
+        verifyZeroInteractions(desktopModeEventLogger)
+        assertThat(transitionObserver.getLoggerSessionId()).isNull()
+    }
+
+    @Test
+    fun transitExitDesktopUsingKeyboard_logTaskRemovedAndExitReasonKeyboard_sessionIdNull() {
+        val sessionId = 1
+        // add a freeform task
+        transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        transitionObserver.setLoggerSessionId(sessionId)
+
+        // window mode changing from FREEFORM to FULLSCREEN
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FULLSCREEN))
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT)
+                .addChange(change)
+                .build()
+        callOnTransitionReady(transitionInfo)
+
+        verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.KEYBOARD_SHORTCUT_EXIT))
+        verifyZeroInteractions(desktopModeEventLogger)
+        assertThat(transitionObserver.getLoggerSessionId()).isNull()
+    }
+
+    @Test
+    fun transitExitDesktopUnknown_logTaskRemovedAndExitReasonUnknown_sessionIdNull() {
+        val sessionId = 1
+        // add a freeform task
+        transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
+        transitionObserver.setLoggerSessionId(sessionId)
+
+        // window mode changing from FREEFORM to FULLSCREEN
+        val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(1, WINDOWING_MODE_FULLSCREEN))
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN).addChange(change).build()
+        callOnTransitionReady(transitionInfo)
+
+        verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.UNKNOWN_EXIT))
+        verifyZeroInteractions(desktopModeEventLogger)
+        assertThat(transitionObserver.getLoggerSessionId()).isNull()
+    }
+
+    @Test
+    fun transitToFrontWithFlagRecents_logTaskRemovedAndExitReasonOverview_sessionIdNull() {
         val sessionId = 1
         // add a freeform task
         transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
@@ -247,18 +364,21 @@
 
         // recents transition
         val change = createChange(TRANSIT_TO_BACK, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
-        val transitionInfo = TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
-                .addChange(change).build()
+        val transitionInfo =
+            TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
+                .addChange(change)
+                .build()
         callOnTransitionReady(transitionInfo)
 
         verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
-        verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId),
-            eq(ExitReason.RETURN_HOME_OR_OVERVIEW))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.RETURN_HOME_OR_OVERVIEW))
+        verifyZeroInteractions(desktopModeEventLogger)
         assertThat(transitionObserver.getLoggerSessionId()).isNull()
     }
 
     @Test
-    fun freeformTaskVisible_taskFinished_logSessionExitAndTaskRemoved_sessionIdNull() {
+    fun transitClose_logTaskRemovedAndExitReasonTaskFinished_sessionIdNull() {
         val sessionId = 1
         // add a freeform task
         transitionObserver.addTaskInfosToCachedMap(createTaskInfo(1, WINDOWING_MODE_FREEFORM))
@@ -270,8 +390,9 @@
         callOnTransitionReady(transitionInfo)
 
         verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
-        verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId),
-            eq(ExitReason.TASK_FINISHED))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.TASK_FINISHED))
+        verifyZeroInteractions(desktopModeEventLogger)
         assertThat(transitionObserver.getLoggerSessionId()).isNull()
     }
 
@@ -285,12 +406,13 @@
         // recents transition sent freeform window to back
         val change = createChange(TRANSIT_TO_BACK, createTaskInfo(1, WINDOWING_MODE_FREEFORM))
         val transitionInfo1 =
-            TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS).addChange(change)
-                    .build()
+            TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
+                .addChange(change)
+                .build()
         callOnTransitionReady(transitionInfo1)
         verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), any())
-        verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId),
-            eq(ExitReason.RETURN_HOME_OR_OVERVIEW))
+        verify(desktopModeEventLogger, times(1))
+            .logSessionExit(eq(sessionId), eq(ExitReason.RETURN_HOME_OR_OVERVIEW))
         assertThat(transitionObserver.getLoggerSessionId()).isNull()
 
         val transitionInfo2 = TransitionInfoBuilder(TRANSIT_NONE).build()
@@ -333,15 +455,11 @@
         verify(desktopModeEventLogger, never()).logSessionExit(any(), any())
     }
 
-    /**
-     * Simulate calling the onTransitionReady() method
-     */
+    /** Simulate calling the onTransitionReady() method */
     private fun callOnTransitionReady(transitionInfo: TransitionInfo) {
         val transition = mock(IBinder::class.java)
-        val startT = mock(
-            SurfaceControl.Transaction::class.java)
-        val finishT = mock(
-            SurfaceControl.Transaction::class.java)
+        val startT = mock(SurfaceControl.Transaction::class.java)
+        val finishT = mock(SurfaceControl.Transaction::class.java)
 
         transitionObserver.onTransitionReady(transition, transitionInfo, startT, finishT)
     }
@@ -356,13 +474,14 @@
         }
 
         fun createChange(mode: Int, taskInfo: ActivityManager.RunningTaskInfo): Change {
-            val change = Change(
-                WindowContainerToken(mock(
-                    IWindowContainerToken::class.java)),
-                mock(SurfaceControl::class.java))
+            val change =
+                Change(
+                    WindowContainerToken(mock(IWindowContainerToken::class.java)),
+                    mock(SurfaceControl::class.java)
+                )
             change.mode = mode
             change.taskInfo = taskInfo
             return change
         }
     }
-}
\ No newline at end of file
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypesTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypesTest.kt
new file mode 100644
index 0000000..518c00d
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTransitionTypesTest.kt
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.desktopmode
+
+import android.testing.AndroidTestingRunner
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.APP_FROM_OVERVIEW
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.KEYBOARD_SHORTCUT
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.TASK_DRAG
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.UNKNOWN
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.getEnterTransitionType
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.getExitTransitionType
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Test class for [DesktopModeTransitionTypes]
+ *
+ * Usage: atest WMShellUnitTests:DesktopModeTransitionTypesTest
+ */
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+class DesktopModeTransitionTypesTest {
+
+    @Test
+    fun testGetEnterTransitionType() {
+        assertThat(UNKNOWN.getEnterTransitionType()).isEqualTo(TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN)
+        assertThat(APP_HANDLE_MENU_BUTTON.getEnterTransitionType())
+            .isEqualTo(TRANSIT_ENTER_DESKTOP_FROM_APP_HANDLE_MENU_BUTTON)
+        assertThat(APP_FROM_OVERVIEW.getEnterTransitionType())
+            .isEqualTo(TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW)
+        assertThat(TASK_DRAG.getEnterTransitionType())
+            .isEqualTo(TRANSIT_ENTER_DESKTOP_FROM_UNKNOWN)
+        assertThat(KEYBOARD_SHORTCUT.getEnterTransitionType())
+            .isEqualTo(TRANSIT_ENTER_DESKTOP_FROM_KEYBOARD_SHORTCUT)
+    }
+
+    @Test
+    fun testGetExitTransitionType() {
+        assertThat(UNKNOWN.getExitTransitionType()).isEqualTo(TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN)
+        assertThat(APP_HANDLE_MENU_BUTTON.getExitTransitionType())
+            .isEqualTo(TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON)
+        assertThat(APP_FROM_OVERVIEW.getExitTransitionType())
+            .isEqualTo(TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN)
+        assertThat(TASK_DRAG.getExitTransitionType()).isEqualTo(TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG)
+        assertThat(KEYBOARD_SHORTCUT.getExitTransitionType())
+            .isEqualTo(TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT)
+    }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index cf6cea2..748ad31 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -76,6 +76,7 @@
 import com.android.wm.shell.common.MultiInstanceHelper
 import com.android.wm.shell.common.ShellExecutor
 import com.android.wm.shell.common.SyncTransactionQueue
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource.UNKNOWN
 import com.android.wm.shell.common.split.SplitScreenConstants
 import com.android.wm.shell.desktopmode.DesktopTestHelpers.Companion.createFreeformTask
 import com.android.wm.shell.desktopmode.DesktopTestHelpers.Companion.createFullscreenTask
@@ -94,11 +95,12 @@
 import com.android.wm.shell.transition.TestRemoteTransition
 import com.android.wm.shell.transition.Transitions
 import com.android.wm.shell.transition.Transitions.ENABLE_SHELL_TRANSITIONS
-import com.android.wm.shell.transition.Transitions.TRANSIT_EXIT_DESKTOP_MODE
 import com.android.wm.shell.transition.Transitions.TransitionHandler
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import java.util.Optional
+import junit.framework.Assert.assertFalse
+import junit.framework.Assert.assertTrue
 import org.junit.After
 import org.junit.Assume.assumeTrue
 import org.junit.Before
@@ -117,13 +119,11 @@
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when` as whenever
 import org.mockito.kotlin.anyOrNull
 import org.mockito.kotlin.atLeastOnce
 import org.mockito.kotlin.capture
 import org.mockito.quality.Strictness
-import junit.framework.Assert.assertFalse
-import junit.framework.Assert.assertTrue
-import org.mockito.Mockito.`when` as whenever
 
 /**
  * Test class for {@link DesktopTasksController}
@@ -134,1725 +134,1711 @@
 @RunWith(AndroidTestingRunner::class)
 class DesktopTasksControllerTest : ShellTestCase() {
 
-    @JvmField
-    @Rule
-    val setFlagsRule = SetFlagsRule()
+  @JvmField @Rule val setFlagsRule = SetFlagsRule()
 
-    @Mock lateinit var testExecutor: ShellExecutor
-    @Mock lateinit var shellCommandHandler: ShellCommandHandler
-    @Mock lateinit var shellController: ShellController
-    @Mock lateinit var displayController: DisplayController
-    @Mock lateinit var displayLayout: DisplayLayout
-    @Mock lateinit var shellTaskOrganizer: ShellTaskOrganizer
-    @Mock lateinit var syncQueue: SyncTransactionQueue
-    @Mock lateinit var rootTaskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer
-    @Mock lateinit var transitions: Transitions
-    @Mock lateinit var exitDesktopTransitionHandler: ExitDesktopTaskTransitionHandler
-    @Mock lateinit var enterDesktopTransitionHandler: EnterDesktopTaskTransitionHandler
-    @Mock lateinit var toggleResizeDesktopTaskTransitionHandler:
-            ToggleResizeDesktopTaskTransitionHandler
-    @Mock lateinit var dragToDesktopTransitionHandler: DragToDesktopTransitionHandler
-    @Mock lateinit var launchAdjacentController: LaunchAdjacentController
-    @Mock lateinit var splitScreenController: SplitScreenController
-    @Mock lateinit var recentsTransitionHandler: RecentsTransitionHandler
-    @Mock lateinit var dragAndDropController: DragAndDropController
-    @Mock lateinit var multiInstanceHelper: MultiInstanceHelper
-    @Mock lateinit var desktopModeLoggerTransitionObserver: DesktopModeLoggerTransitionObserver
-    @Mock lateinit var desktopModeVisualIndicator: DesktopModeVisualIndicator
-    @Mock lateinit var recentTasksController: RecentTasksController
+  @Mock lateinit var testExecutor: ShellExecutor
+  @Mock lateinit var shellCommandHandler: ShellCommandHandler
+  @Mock lateinit var shellController: ShellController
+  @Mock lateinit var displayController: DisplayController
+  @Mock lateinit var displayLayout: DisplayLayout
+  @Mock lateinit var shellTaskOrganizer: ShellTaskOrganizer
+  @Mock lateinit var syncQueue: SyncTransactionQueue
+  @Mock lateinit var rootTaskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer
+  @Mock lateinit var transitions: Transitions
+  @Mock lateinit var exitDesktopTransitionHandler: ExitDesktopTaskTransitionHandler
+  @Mock lateinit var enterDesktopTransitionHandler: EnterDesktopTaskTransitionHandler
+  @Mock
+  lateinit var toggleResizeDesktopTaskTransitionHandler: ToggleResizeDesktopTaskTransitionHandler
+  @Mock lateinit var dragToDesktopTransitionHandler: DragToDesktopTransitionHandler
+  @Mock lateinit var launchAdjacentController: LaunchAdjacentController
+  @Mock lateinit var splitScreenController: SplitScreenController
+  @Mock lateinit var recentsTransitionHandler: RecentsTransitionHandler
+  @Mock lateinit var dragAndDropController: DragAndDropController
+  @Mock lateinit var multiInstanceHelper: MultiInstanceHelper
+  @Mock lateinit var desktopModeLoggerTransitionObserver: DesktopModeLoggerTransitionObserver
+  @Mock lateinit var desktopModeVisualIndicator: DesktopModeVisualIndicator
+  @Mock lateinit var recentTasksController: RecentTasksController
 
-    private lateinit var mockitoSession: StaticMockitoSession
-    private lateinit var controller: DesktopTasksController
-    private lateinit var shellInit: ShellInit
-    private lateinit var desktopModeTaskRepository: DesktopModeTaskRepository
-    private lateinit var desktopTasksLimiter: DesktopTasksLimiter
-    private lateinit var recentsTransitionStateListener: RecentsTransitionStateListener
+  private lateinit var mockitoSession: StaticMockitoSession
+  private lateinit var controller: DesktopTasksController
+  private lateinit var shellInit: ShellInit
+  private lateinit var desktopModeTaskRepository: DesktopModeTaskRepository
+  private lateinit var desktopTasksLimiter: DesktopTasksLimiter
+  private lateinit var recentsTransitionStateListener: RecentsTransitionStateListener
 
-    private val shellExecutor = TestShellExecutor()
+  private val shellExecutor = TestShellExecutor()
 
-    // Mock running tasks are registered here so we can get the list from mock shell task organizer
-    private val runningTasks = mutableListOf<RunningTaskInfo>()
+  // Mock running tasks are registered here so we can get the list from mock shell task organizer
+  private val runningTasks = mutableListOf<RunningTaskInfo>()
 
-    private val DISPLAY_DIMENSION_SHORT = 1600
-    private val DISPLAY_DIMENSION_LONG = 2560
-    private val DEFAULT_LANDSCAPE_BOUNDS = Rect(320, 200, 2240, 1400)
-    private val DEFAULT_PORTRAIT_BOUNDS = Rect(200, 320, 1400, 2240)
-    private val RESIZABLE_LANDSCAPE_BOUNDS = Rect(25, 680, 1575, 1880)
-    private val RESIZABLE_PORTRAIT_BOUNDS = Rect(680, 200, 1880, 1400)
-    private val UNRESIZABLE_LANDSCAPE_BOUNDS = Rect(25, 699, 1575, 1861)
-    private val UNRESIZABLE_PORTRAIT_BOUNDS = Rect(830, 200, 1730, 1400)
+  private val DISPLAY_DIMENSION_SHORT = 1600
+  private val DISPLAY_DIMENSION_LONG = 2560
+  private val DEFAULT_LANDSCAPE_BOUNDS = Rect(320, 200, 2240, 1400)
+  private val DEFAULT_PORTRAIT_BOUNDS = Rect(200, 320, 1400, 2240)
+  private val RESIZABLE_LANDSCAPE_BOUNDS = Rect(25, 680, 1575, 1880)
+  private val RESIZABLE_PORTRAIT_BOUNDS = Rect(680, 200, 1880, 1400)
+  private val UNRESIZABLE_LANDSCAPE_BOUNDS = Rect(25, 699, 1575, 1861)
+  private val UNRESIZABLE_PORTRAIT_BOUNDS = Rect(830, 200, 1730, 1400)
 
-    @Before
-    fun setUp() {
-        mockitoSession = mockitoSession().strictness(Strictness.LENIENT)
-            .spyStatic(DesktopModeStatus::class.java).startMocking()
-        whenever(DesktopModeStatus.isEnabled()).thenReturn(true)
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+  @Before
+  fun setUp() {
+    mockitoSession =
+        mockitoSession()
+            .strictness(Strictness.LENIENT)
+            .spyStatic(DesktopModeStatus::class.java)
+            .startMocking()
+    whenever(DesktopModeStatus.isEnabled()).thenReturn(true)
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
 
-        shellInit = spy(ShellInit(testExecutor))
-        desktopModeTaskRepository = DesktopModeTaskRepository()
-        desktopTasksLimiter =
-                DesktopTasksLimiter(transitions, desktopModeTaskRepository, shellTaskOrganizer)
+    shellInit = spy(ShellInit(testExecutor))
+    desktopModeTaskRepository = DesktopModeTaskRepository()
+    desktopTasksLimiter =
+        DesktopTasksLimiter(transitions, desktopModeTaskRepository, shellTaskOrganizer)
 
-        whenever(shellTaskOrganizer.getRunningTasks(anyInt())).thenAnswer { runningTasks }
-        whenever(transitions.startTransition(anyInt(), any(), isNull())).thenAnswer { Binder() }
-        whenever(enterDesktopTransitionHandler.moveToDesktop(any())).thenAnswer { Binder() }
-        whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout)
-        whenever(displayLayout.getStableBounds(any())).thenAnswer { i ->
-                (i.arguments.first() as Rect).set(STABLE_BOUNDS)
-            }
-
-        val tda = DisplayAreaInfo(MockToken().token(), DEFAULT_DISPLAY, 0)
-        tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
-        whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)).thenReturn(tda)
-
-        controller = createController()
-        controller.setSplitScreenController(splitScreenController)
-
-        shellInit.init()
-
-        val captor = ArgumentCaptor.forClass(RecentsTransitionStateListener::class.java)
-        verify(recentsTransitionHandler).addTransitionStateListener(captor.capture())
-        recentsTransitionStateListener = captor.value
+    whenever(shellTaskOrganizer.getRunningTasks(anyInt())).thenAnswer { runningTasks }
+    whenever(transitions.startTransition(anyInt(), any(), isNull())).thenAnswer { Binder() }
+    whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenAnswer { Binder() }
+    whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout)
+    whenever(displayLayout.getStableBounds(any())).thenAnswer { i ->
+      (i.arguments.first() as Rect).set(STABLE_BOUNDS)
     }
 
-    private fun createController(): DesktopTasksController {
-        return DesktopTasksController(
-            context,
-            shellInit,
-            shellCommandHandler,
-            shellController,
-            displayController,
-            shellTaskOrganizer,
-            syncQueue,
-            rootTaskDisplayAreaOrganizer,
-            dragAndDropController,
-            transitions,
-            enterDesktopTransitionHandler,
-            exitDesktopTransitionHandler,
-            toggleResizeDesktopTaskTransitionHandler,
-            dragToDesktopTransitionHandler,
-            desktopModeTaskRepository,
-            desktopModeLoggerTransitionObserver,
-            launchAdjacentController,
-            recentsTransitionHandler,
-            multiInstanceHelper,
-            shellExecutor,
-            Optional.of(desktopTasksLimiter),
-            recentTasksController
-        )
-    }
+    val tda = DisplayAreaInfo(MockToken().token(), DEFAULT_DISPLAY, 0)
+    tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
+    whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)).thenReturn(tda)
 
-    @After
-    fun tearDown() {
-        mockitoSession.finishMocking()
+    controller = createController()
+    controller.setSplitScreenController(splitScreenController)
 
-        runningTasks.clear()
-    }
+    shellInit.init()
 
-    @Test
-    fun instantiate_addInitCallback() {
-        verify(shellInit).addInitCallback(any(), any<DesktopTasksController>())
-    }
+    val captor = ArgumentCaptor.forClass(RecentsTransitionStateListener::class.java)
+    verify(recentsTransitionHandler).addTransitionStateListener(captor.capture())
+    recentsTransitionStateListener = captor.value
+  }
 
-    @Test
-    fun instantiate_flagOff_doNotAddInitCallback() {
-        whenever(DesktopModeStatus.isEnabled()).thenReturn(false)
-        clearInvocations(shellInit)
+  private fun createController(): DesktopTasksController {
+    return DesktopTasksController(
+        context,
+        shellInit,
+        shellCommandHandler,
+        shellController,
+        displayController,
+        shellTaskOrganizer,
+        syncQueue,
+        rootTaskDisplayAreaOrganizer,
+        dragAndDropController,
+        transitions,
+        enterDesktopTransitionHandler,
+        exitDesktopTransitionHandler,
+        toggleResizeDesktopTaskTransitionHandler,
+        dragToDesktopTransitionHandler,
+        desktopModeTaskRepository,
+        desktopModeLoggerTransitionObserver,
+        launchAdjacentController,
+        recentsTransitionHandler,
+        multiInstanceHelper,
+        shellExecutor,
+        Optional.of(desktopTasksLimiter),
+        recentTasksController)
+  }
 
-        createController()
+  @After
+  fun tearDown() {
+    mockitoSession.finishMocking()
 
-        verify(shellInit, never()).addInitCallback(any(), any<DesktopTasksController>())
-    }
+    runningTasks.clear()
+  }
 
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperDisabled() {
-        val homeTask = setUpHomeTask()
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskHidden(task1)
-        markTaskHidden(task2)
+  @Test
+  fun instantiate_addInitCallback() {
+    verify(shellInit).addInitCallback(any(), any<DesktopTasksController>())
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  fun instantiate_flagOff_doNotAddInitCallback() {
+    whenever(DesktopModeStatus.isEnabled()).thenReturn(false)
+    clearInvocations(shellInit)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: home, task1, task2
-        wct.assertReorderAt(index = 0, homeTask)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    createController()
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperEnabled() {
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskHidden(task1)
-        markTaskHidden(task2)
+    verify(shellInit, never()).addInitCallback(any(), any<DesktopTasksController>())
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperDisabled() {
+    val homeTask = setUpHomeTask()
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskHidden(task1)
+    markTaskHidden(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: wallpaper intent, task1, task2
-        wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperDisabled() {
-        val homeTask = setUpHomeTask()
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskVisible(task1)
-        markTaskVisible(task2)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: home, task1, task2
+    wct.assertReorderAt(index = 0, homeTask)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperEnabled() {
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskHidden(task1)
+    markTaskHidden(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: home, task1, task2
-        wct.assertReorderAt(index = 0, homeTask)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperEnabled() {
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskVisible(task1)
-        markTaskVisible(task2)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: wallpaper intent, task1, task2
+    wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperDisabled() {
+    val homeTask = setUpHomeTask()
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskVisible(task1)
+    markTaskVisible(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: wallpaper intent, task1, task2
-        wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperDisabled() {
-        val homeTask = setUpHomeTask()
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskHidden(task1)
-        markTaskVisible(task2)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: home, task1, task2
+    wct.assertReorderAt(index = 0, homeTask)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperEnabled() {
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskVisible(task1)
+    markTaskVisible(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: home, task1, task2
-        wct.assertReorderAt(index = 0, homeTask)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperEnabled() {
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        markTaskHidden(task1)
-        markTaskVisible(task2)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: wallpaper intent, task1, task2
+    wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperDisabled() {
+    val homeTask = setUpHomeTask()
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskHidden(task1)
+    markTaskVisible(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(3)
-        // Expect order to be from bottom: wallpaper intent, task1, task2
-        wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-        wct.assertReorderAt(index = 1, task1)
-        wct.assertReorderAt(index = 2, task2)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_noActiveTasks_reorderHomeToTop_desktopWallpaperDisabled() {
-        val homeTask = setUpHomeTask()
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: home, task1, task2
+    wct.assertReorderAt(index = 0, homeTask)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperEnabled() {
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    markTaskHidden(task1)
+    markTaskVisible(task2)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(1)
-        wct.assertReorderAt(index = 0, homeTask)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_noActiveTasks_addDesktopWallpaper_desktopWallpaperEnabled() {
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(3)
+    // Expect order to be from bottom: wallpaper intent, task1, task2
+    wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+    wct.assertReorderAt(index = 1, task1)
+    wct.assertReorderAt(index = 2, task2)
+  }
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-    }
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_noActiveTasks_reorderHomeToTop_desktopWallpaperDisabled() {
+    val homeTask = setUpHomeTask()
 
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperDisabled() {
-        val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
-        val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
-        setUpHomeTask(SECOND_DISPLAY)
-        val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
-        markTaskHidden(taskDefaultDisplay)
-        markTaskHidden(taskSecondDisplay)
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(1)
+    wct.assertReorderAt(index = 0, homeTask)
+  }
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(2)
-        // Expect order to be from bottom: home, task
-        wct.assertReorderAt(index = 0, homeTaskDefaultDisplay)
-        wct.assertReorderAt(index = 1, taskDefaultDisplay)
-    }
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_noActiveTasks_addDesktopWallpaper_desktopWallpaperEnabled() {
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperEnabled() {
-        val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
-        setUpHomeTask(SECOND_DISPLAY)
-        val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
-        markTaskHidden(taskDefaultDisplay)
-        markTaskHidden(taskSecondDisplay)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperDisabled() {
+    val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
+    val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
+    setUpHomeTask(SECOND_DISPLAY)
+    val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
+    markTaskHidden(taskDefaultDisplay)
+    markTaskHidden(taskSecondDisplay)
 
-        val wct =
-            getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(2)
-        // Expect order to be from bottom: wallpaper intent, task
-        wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-        wct.assertReorderAt(index = 1, taskDefaultDisplay)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    fun showDesktopApps_dontReorderMinimizedTask() {
-        val homeTask = setUpHomeTask()
-        val freeformTask = setUpFreeformTask()
-        val minimizedTask = setUpFreeformTask()
-        markTaskHidden(freeformTask)
-        markTaskHidden(minimizedTask)
-        desktopModeTaskRepository.minimizeTask(DEFAULT_DISPLAY, minimizedTask.taskId)
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(2)
+    // Expect order to be from bottom: home, task
+    wct.assertReorderAt(index = 0, homeTaskDefaultDisplay)
+    wct.assertReorderAt(index = 1, taskDefaultDisplay)
+  }
 
-        controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperEnabled() {
+    val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
+    setUpHomeTask(SECOND_DISPLAY)
+    val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
+    markTaskHidden(taskDefaultDisplay)
+    markTaskHidden(taskSecondDisplay)
 
-        val wct = getLatestWct(
-                type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
-        assertThat(wct.hierarchyOps).hasSize(2)
-        // Reorder home and freeform task to top, don't reorder the minimized task
-        wct.assertReorderAt(index = 0, homeTask, toTop = true)
-        wct.assertReorderAt(index = 1, freeformTask, toTop = true)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    fun getVisibleTaskCount_noTasks_returnsZero() {
-        assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
-    }
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(2)
+    // Expect order to be from bottom: wallpaper intent, task
+    wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+    wct.assertReorderAt(index = 1, taskDefaultDisplay)
+  }
 
-    @Test
-    fun getVisibleTaskCount_twoTasks_bothVisible_returnsTwo() {
-        setUpHomeTask()
-        setUpFreeformTask().also(::markTaskVisible)
-        setUpFreeformTask().also(::markTaskVisible)
-        assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
-    }
+  @Test
+  fun showDesktopApps_dontReorderMinimizedTask() {
+    val homeTask = setUpHomeTask()
+    val freeformTask = setUpFreeformTask()
+    val minimizedTask = setUpFreeformTask()
+    markTaskHidden(freeformTask)
+    markTaskHidden(minimizedTask)
+    desktopModeTaskRepository.minimizeTask(DEFAULT_DISPLAY, minimizedTask.taskId)
 
-    @Test
-    fun getVisibleTaskCount_twoTasks_oneVisible_returnsOne() {
-        setUpHomeTask()
-        setUpFreeformTask().also(::markTaskVisible)
-        setUpFreeformTask().also(::markTaskHidden)
-        assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
-    }
+    controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
 
-    @Test
-    fun getVisibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() {
-        setUpHomeTask()
-        setUpFreeformTask(DEFAULT_DISPLAY).also(::markTaskVisible)
-        setUpFreeformTask(SECOND_DISPLAY).also(::markTaskVisible)
-        assertThat(controller.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
-    }
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+    assertThat(wct.hierarchyOps).hasSize(2)
+    // Reorder home and freeform task to top, don't reorder the minimized task
+    wct.assertReorderAt(index = 0, homeTask, toTop = true)
+    wct.assertReorderAt(index = 1, freeformTask, toTop = true)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_landscapeDevice_resizable_undefinedOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask()
-        setUpLandscapeDisplay()
+  @Test
+  fun getVisibleTaskCount_noTasks_returnsZero() {
+    assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+  }
 
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
+  @Test
+  fun getVisibleTaskCount_twoTasks_bothVisible_returnsTwo() {
+    setUpHomeTask()
+    setUpFreeformTask().also(::markTaskVisible)
+    setUpFreeformTask().also(::markTaskVisible)
+    assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_landscapeDevice_resizable_landscapeOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
-        setUpLandscapeDisplay()
+  @Test
+  fun getVisibleTaskCount_twoTasks_oneVisible_returnsOne() {
+    setUpHomeTask()
+    setUpFreeformTask().also(::markTaskVisible)
+    setUpFreeformTask().also(::markTaskHidden)
+    assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+  }
 
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
+  @Test
+  fun getVisibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() {
+    setUpHomeTask()
+    setUpFreeformTask(DEFAULT_DISPLAY).also(::markTaskVisible)
+    setUpFreeformTask(SECOND_DISPLAY).also(::markTaskVisible)
+    assertThat(controller.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_landscapeDevice_resizable_portraitOrientation_resizablePortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_PORTRAIT,
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_landscapeDevice_resizable_undefinedOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task = setUpFullscreenTask()
+    setUpLandscapeDisplay()
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_landscapeDevice_resizable_landscapeOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
+    setUpLandscapeDisplay()
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_landscapeDevice_resizable_portraitOrientation_resizablePortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_PORTRAIT, shouldLetterbox = true)
+    setUpLandscapeDisplay()
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_landscapeDevice_unResizable_landscapeOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(isResizable = false, screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
+    setUpLandscapeDisplay()
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_landscapeDevice_unResizable_portraitOrientation_unResizablePortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
+            screenOrientation = SCREEN_ORIENTATION_PORTRAIT,
             shouldLetterbox = true)
-        setUpLandscapeDisplay()
+    setUpLandscapeDisplay()
 
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_PORTRAIT_BOUNDS)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_landscapeDevice_unResizable_landscapeOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(isResizable = false,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
-        setUpLandscapeDisplay()
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_portraitDevice_resizable_undefinedOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT)
+    setUpPortraitDisplay()
 
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_landscapeDevice_unResizable_portraitOrientation_unResizablePortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(isResizable = false,
-            screenOrientation = SCREEN_ORIENTATION_PORTRAIT, shouldLetterbox = true)
-        setUpLandscapeDisplay()
-
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_portraitDevice_resizable_undefinedOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
-
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_portraitDevice_resizable_portraitOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
-
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_portraitDevice_resizable_landscapeOrientation_resizableLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE, shouldLetterbox = true)
-        setUpPortraitDisplay()
-
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_portraitDevice_unResizable_portraitOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(isResizable = false,
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_portraitDevice_resizable_portraitOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(
             deviceOrientation = ORIENTATION_PORTRAIT,
             screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
+    setUpPortraitDisplay()
 
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun moveToDesktop_portraitDevice_unResizable_landscapeOrientation_unResizableLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val task = setUpFullscreenTask(isResizable = false,
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_portraitDevice_resizable_landscapeOrientation_resizableLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(
             deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE, shouldLetterbox = true)
-        setUpPortraitDisplay()
-
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    fun moveToDesktop_tdaFullscreen_windowingModeSetToFreeform() {
-        val task = setUpFullscreenTask()
-        val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
-        tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FREEFORM)
-    }
-
-    @Test
-    fun moveToDesktop_tdaFreeform_windowingModeSetToUndefined() {
-        val task = setUpFullscreenTask()
-        val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
-        tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_UNDEFINED)
-    }
-
-    @Test
-    fun moveToDesktop_nonExistentTask_doesNothing() {
-        controller.moveToDesktop(999)
-        verifyWCTNotExecuted()
-    }
-
-    @Test
-    fun moveToDesktop_nonRunningTask_launchesInFreeform() {
-        whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
-
-        val task = createTaskInfo(1)
-
-        whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
-
-        controller.moveToDesktop(task.taskId)
-        with(getLatestMoveToDesktopWct()){
-            assertLaunchTaskAt(0, task.taskId, WINDOWING_MODE_FREEFORM)
-        }
-    }
-
-    @Test
-    fun moveToDesktop_topActivityTranslucent_doesNothing() {
-        setFlagsRule.enableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
-        val task = setUpFullscreenTask().apply {
-            isTopActivityTransparent = true
-            numActivities = 1
-        }
-
-        controller.moveToDesktop(task)
-        verifyWCTNotExecuted()
-    }
-
-    @Test
-    fun moveToDesktop_deviceNotSupported_doesNothing() {
-        val task = setUpFullscreenTask()
-
-        // Simulate non compatible device
-        doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-
-        controller.moveToDesktop(task)
-        verifyWCTNotExecuted()
-    }
-
-    @Test
-    fun moveToDesktop_deviceNotSupported_deviceRestrictionsOverridden_taskIsMovedToDesktop() {
-        val task = setUpFullscreenTask()
-
-        // Simulate non compatible device
-        doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-
-        // Simulate enforce device restrictions system property overridden to false
-        whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(false)
-
-        controller.moveToDesktop(task)
-
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-    }
-
-    @Test
-    fun moveToDesktop_deviceSupported_taskIsMovedToDesktop() {
-        val task = setUpFullscreenTask()
-
-        controller.moveToDesktop(task)
-
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-    }
-
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun moveToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperDisabled() {
-        val homeTask = setUpHomeTask()
-        val freeformTask = setUpFreeformTask()
-        val fullscreenTask = setUpFullscreenTask()
-        markTaskHidden(freeformTask)
-
-        controller.moveToDesktop(fullscreenTask)
-
-        with(getLatestMoveToDesktopWct()) {
-            // Operations should include home task, freeform task
-            assertThat(hierarchyOps).hasSize(3)
-            assertReorderSequence(homeTask, freeformTask, fullscreenTask)
-            assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FREEFORM)
-        }
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun moveToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperEnabled() {
-        val freeformTask = setUpFreeformTask()
-        val fullscreenTask = setUpFullscreenTask()
-        markTaskHidden(freeformTask)
-
-        controller.moveToDesktop(fullscreenTask)
-
-        with(getLatestMoveToDesktopWct()) {
-            // Operations should include wallpaper intent, freeform task, fullscreen task
-            assertThat(hierarchyOps).hasSize(3)
-            assertPendingIntentAt(index = 0, desktopWallpaperIntent)
-            assertReorderAt(index = 1, freeformTask)
-            assertReorderAt(index = 2, fullscreenTask)
-            assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FREEFORM)
-        }
-    }
-
-    @Test
-    fun moveToDesktop_onlyFreeformTasksFromCurrentDisplayBroughtToFront() {
-        setUpHomeTask(displayId = DEFAULT_DISPLAY)
-        val freeformTaskDefault = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
-        val fullscreenTaskDefault = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
-        markTaskHidden(freeformTaskDefault)
-
-        val homeTaskSecond = setUpHomeTask(displayId = SECOND_DISPLAY)
-        val freeformTaskSecond = setUpFreeformTask(displayId = SECOND_DISPLAY)
-        markTaskHidden(freeformTaskSecond)
-
-        controller.moveToDesktop(fullscreenTaskDefault)
-
-        with(getLatestMoveToDesktopWct()) {
-            // Check that hierarchy operations do not include tasks from second display
-            assertThat(hierarchyOps.map { it.container })
-                .doesNotContain(homeTaskSecond.token.asBinder())
-            assertThat(hierarchyOps.map { it.container })
-                .doesNotContain(freeformTaskSecond.token.asBinder())
-        }
-    }
-
-    @Test
-    fun moveToDesktop_splitTaskExitsSplit() {
-        val task = setUpSplitScreenTask()
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-        verify(splitScreenController).prepareExitSplitScreen(
-            any(),
-            anyInt(),
-            eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE)
-        )
-    }
-
-    @Test
-    fun moveToDesktop_fullscreenTaskDoesNotExitSplit() {
-        val task = setUpFullscreenTask()
-        controller.moveToDesktop(task)
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-        verify(splitScreenController, never()).prepareExitSplitScreen(
-            any(),
-            anyInt(),
-            eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE)
-        )
-    }
-
-    @Test
-    fun moveToDesktop_bringsTasksOverLimit_dontShowBackTask() {
-        val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
-        val homeTask = setUpHomeTask()
-        val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
-        val newTask = setUpFullscreenTask()
-
-        controller.moveToDesktop(newTask)
-
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.hierarchyOps.size).isEqualTo(taskLimit + 1) // visible tasks + home
-        wct.assertReorderAt(0, homeTask)
-        for (i in 1..<taskLimit) { // Skipping freeformTasks[0]
-            wct.assertReorderAt(index = i, task = freeformTasks[i])
-        }
-        wct.assertReorderAt(taskLimit, newTask)
-    }
-
-    @Test
-    fun moveToFullscreen_tdaFullscreen_windowingModeSetToUndefined() {
-        val task = setUpFreeformTask()
-        val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
-        tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
-        controller.moveToFullscreen(task.taskId)
-        val wct = getLatestExitDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_UNDEFINED)
-    }
-
-    @Test
-    fun moveToFullscreen_tdaFreeform_windowingModeSetToFullscreen() {
-        val task = setUpFreeformTask()
-        val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
-        tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
-        controller.moveToFullscreen(task.taskId)
-        val wct = getLatestExitDesktopWct()
-        assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FULLSCREEN)
-    }
-
-    @Test
-    fun moveToFullscreen_nonExistentTask_doesNothing() {
-        controller.moveToFullscreen(999)
-        verifyWCTNotExecuted()
-    }
-
-    @Test
-    fun moveToFullscreen_secondDisplayTaskHasFreeform_secondDisplayNotAffected() {
-        val taskDefaultDisplay = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
-        val taskSecondDisplay = setUpFreeformTask(displayId = SECOND_DISPLAY)
-
-        controller.moveToFullscreen(taskDefaultDisplay.taskId)
-
-        with(getLatestExitDesktopWct()) {
-            assertThat(changes.keys).contains(taskDefaultDisplay.token.asBinder())
-            assertThat(changes.keys).doesNotContain(taskSecondDisplay.token.asBinder())
-        }
-    }
-
-    @Test
-    fun moveTaskToFront_postsWctWithReorderOp() {
-        val task1 = setUpFreeformTask()
-        setUpFreeformTask()
-
-        controller.moveTaskToFront(task1)
-
-        val wct = getLatestWct(type = TRANSIT_TO_FRONT)
-        assertThat(wct.hierarchyOps).hasSize(1)
-        wct.assertReorderAt(index = 0, task1)
-    }
-
-    @Test
-    fun moveTaskToFront_bringsTasksOverLimit_minimizesBackTask() {
-        val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
-        setUpHomeTask()
-        val freeformTasks = (1..taskLimit + 1).map { _ -> setUpFreeformTask() }
-
-        controller.moveTaskToFront(freeformTasks[0])
-
-        val wct = getLatestWct(type = TRANSIT_TO_FRONT)
-        assertThat(wct.hierarchyOps.size).isEqualTo(2) // move-to-front + minimize
-        wct.assertReorderAt(0, freeformTasks[0], toTop = true)
-        wct.assertReorderAt(1, freeformTasks[1], toTop = false)
-    }
-
-    @Test
-    fun moveToNextDisplay_noOtherDisplays() {
-        whenever(rootTaskDisplayAreaOrganizer.displayIds).thenReturn(intArrayOf(DEFAULT_DISPLAY))
-        val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
-        controller.moveToNextDisplay(task.taskId)
-        verifyWCTNotExecuted()
-    }
-
-    @Test
-    fun moveToNextDisplay_moveFromFirstToSecondDisplay() {
-        // Set up two display ids
-        whenever(rootTaskDisplayAreaOrganizer.displayIds)
-                .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY))
-        // Create a mock for the target display area: second display
-        val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0)
-        whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY))
-                .thenReturn(secondDisplayArea)
-
-        val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
-        controller.moveToNextDisplay(task.taskId)
-        with(getLatestWct(type = TRANSIT_CHANGE)) {
-            assertThat(hierarchyOps).hasSize(1)
-            assertThat(hierarchyOps[0].container).isEqualTo(task.token.asBinder())
-            assertThat(hierarchyOps[0].isReparent).isTrue()
-            assertThat(hierarchyOps[0].newParent).isEqualTo(secondDisplayArea.token.asBinder())
-            assertThat(hierarchyOps[0].toTop).isTrue()
-        }
-    }
-
-    @Test
-    fun moveToNextDisplay_moveFromSecondToFirstDisplay() {
-        // Set up two display ids
-        whenever(rootTaskDisplayAreaOrganizer.displayIds)
-            .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY))
-        // Create a mock for the target display area: default display
-        val defaultDisplayArea = DisplayAreaInfo(MockToken().token(), DEFAULT_DISPLAY, 0)
-        whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY))
-                .thenReturn(defaultDisplayArea)
-
-        val task = setUpFreeformTask(displayId = SECOND_DISPLAY)
-        controller.moveToNextDisplay(task.taskId)
-
-        with(getLatestWct(type = TRANSIT_CHANGE)) {
-            assertThat(hierarchyOps).hasSize(1)
-            assertThat(hierarchyOps[0].container).isEqualTo(task.token.asBinder())
-            assertThat(hierarchyOps[0].isReparent).isTrue()
-            assertThat(hierarchyOps[0].newParent).isEqualTo(defaultDisplayArea.token.asBinder())
-            assertThat(hierarchyOps[0].toTop).isTrue()
-        }
-    }
-
-    @Test
-    fun getTaskWindowingMode() {
-        val fullscreenTask = setUpFullscreenTask()
-        val freeformTask = setUpFreeformTask()
-
-        assertThat(controller.getTaskWindowingMode(fullscreenTask.taskId))
-            .isEqualTo(WINDOWING_MODE_FULLSCREEN)
-        assertThat(controller.getTaskWindowingMode(freeformTask.taskId))
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-        assertThat(controller.getTaskWindowingMode(999)).isEqualTo(WINDOWING_MODE_UNDEFINED)
-    }
-
-    @Test
-    fun onDesktopWindowClose_noActiveTasks() {
-        val wct = WindowContainerTransaction()
-        controller.onDesktopWindowClose(wct, 1 /* taskId */)
-        // Doesn't modify transaction
-        assertThat(wct.hierarchyOps).isEmpty()
-    }
-
-    @Test
-    fun onDesktopWindowClose_singleActiveTask_noWallpaperActivityToken() {
-        val task = setUpFreeformTask()
-        val wct = WindowContainerTransaction()
-        controller.onDesktopWindowClose(wct, task.taskId)
-        // Doesn't modify transaction
-        assertThat(wct.hierarchyOps).isEmpty()
-    }
-
-    @Test
-    fun onDesktopWindowClose_singleActiveTask_hasWallpaperActivityToken() {
-        val task = setUpFreeformTask()
-        val wallpaperToken = MockToken().token()
-        desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
-
-        val wct = WindowContainerTransaction()
-        controller.onDesktopWindowClose(wct, task.taskId)
-        // Adds remove wallpaper operation
-        wct.assertRemoveAt(index = 0, wallpaperToken)
-    }
-
-    @Test
-    fun onDesktopWindowClose_multipleActiveTasks() {
-        val task1 = setUpFreeformTask()
-        setUpFreeformTask()
-        val wallpaperToken = MockToken().token()
-        desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
-
-        val wct = WindowContainerTransaction()
-        controller.onDesktopWindowClose(wct, task1.taskId)
-        // Doesn't modify transaction
-        assertThat(wct.hierarchyOps).isEmpty()
-    }
-
-    @Test
-    fun handleRequest_fullscreenTask_freeformVisible_returnSwitchToFreeformWCT() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val freeformTask = setUpFreeformTask()
-        markTaskVisible(freeformTask)
-        val fullscreenTask = createFullscreenTask()
-
-        val result = controller.handleRequest(Binder(), createTransition(fullscreenTask))
-        assertThat(result?.changes?.get(fullscreenTask.token.asBinder())?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_FREEFORM)
-    }
-
-    @Test
-    fun handleRequest_fullscreenTaskToFreeform_underTaskLimit_dontMinimize() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val freeformTask = setUpFreeformTask()
-        markTaskVisible(freeformTask)
-        val fullscreenTask = createFullscreenTask()
-
-        val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask))
-
-        // Make sure we only reorder the new task to top (we don't reorder the old task to bottom)
-        assertThat(wct?.hierarchyOps?.size).isEqualTo(1)
-        wct!!.assertReorderAt(0, fullscreenTask, toTop = true)
-    }
-
-    @Test
-    fun handleRequest_fullscreenTaskToFreeform_bringsTasksOverLimit_otherTaskIsMinimized() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
-        val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
-        freeformTasks.forEach { markTaskVisible(it) }
-        val fullscreenTask = createFullscreenTask()
-
-        val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask))
-
-        // Make sure we reorder the new task to top, and the back task to the bottom
-        assertThat(wct!!.hierarchyOps.size).isEqualTo(2)
-        wct!!.assertReorderAt(0, fullscreenTask, toTop = true)
-        wct!!.assertReorderAt(1, freeformTasks[0], toTop = false)
-    }
-
-    @Test
-    fun handleRequest_fullscreenTask_freeformNotVisible_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val freeformTask = setUpFreeformTask()
-        markTaskHidden(freeformTask)
-        val fullscreenTask = createFullscreenTask()
-        assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
-    }
-
-    @Test
-    fun handleRequest_fullscreenTask_noOtherTasks_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val fullscreenTask = createFullscreenTask()
-        assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
-    }
-
-    @Test
-    fun handleRequest_fullscreenTask_freeformTaskOnOtherDisplay_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val fullscreenTaskDefaultDisplay = createFullscreenTask(displayId = DEFAULT_DISPLAY)
-        createFreeformTask(displayId = SECOND_DISPLAY)
-
-        val result =
-            controller.handleRequest(Binder(), createTransition(fullscreenTaskDefaultDisplay))
-        assertThat(result).isNull()
-    }
-
-    @Test
-    fun handleRequest_freeformTask_freeformVisible_aboveTaskLimit_minimize() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
-        val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
-        freeformTasks.forEach { markTaskVisible(it) }
-        val newFreeformTask = createFreeformTask()
-
-        val wct =
-                controller.handleRequest(Binder(), createTransition(newFreeformTask, TRANSIT_OPEN))
-
-        assertThat(wct?.hierarchyOps?.size).isEqualTo(1)
-        wct!!.assertReorderAt(0, freeformTasks[0], toTop = false) // Reorder to the bottom
-    }
-
-    @Test
-    fun handleRequest_freeformTask_freeformNotVisible_reorderedToTop() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val freeformTask1 = setUpFreeformTask()
-        markTaskHidden(freeformTask1)
-
-        val freeformTask2 = createFreeformTask()
-        val result =
-            controller.handleRequest(
-                Binder(),
-                createTransition(freeformTask2, type = TRANSIT_TO_FRONT)
-            )
-
-        assertThat(result?.hierarchyOps?.size).isEqualTo(2)
-        result!!.assertReorderAt(1, freeformTask2, toTop = true)
-    }
-
-    @Test
-    fun handleRequest_freeformTask_noOtherTasks_reorderedToTop() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val task = createFreeformTask()
-        val result = controller.handleRequest(Binder(), createTransition(task))
-
-        assertThat(result?.hierarchyOps?.size).isEqualTo(1)
-        result!!.assertReorderAt(0, task, toTop = true)
-    }
-
-    @Test
-    fun handleRequest_freeformTask_freeformOnOtherDisplayOnly_reorderedToTop() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val taskDefaultDisplay = createFreeformTask(displayId = DEFAULT_DISPLAY)
-        val taskSecondDisplay = createFreeformTask(displayId = SECOND_DISPLAY)
-
-        val result = controller.handleRequest(Binder(), createTransition(taskDefaultDisplay))
-        assertThat(result?.hierarchyOps?.size).isEqualTo(1)
-        result!!.assertReorderAt(0, taskDefaultDisplay, toTop = true)
-    }
-
-    @Test
-    fun handleRequest_freeformTask_alreadyInDesktop_noOverrideDensity_noConfigDensityChange() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-        whenever(DesktopModeStatus.isDesktopDensityOverrideSet()).thenReturn(false)
-
-        val freeformTask1 = setUpFreeformTask()
-        markTaskVisible(freeformTask1)
-
-        val freeformTask2 = createFreeformTask()
-        val result = controller.handleRequest(freeformTask2.token.asBinder(),
-            createTransition(freeformTask2))
-        assertFalse(result.anyDensityConfigChange(freeformTask2.token))
-    }
-
-    @Test
-    fun handleRequest_freeformTask_alreadyInDesktop_overrideDensity_hasConfigDensityChange() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-        whenever(DesktopModeStatus.isDesktopDensityOverrideSet()).thenReturn(true)
-
-        val freeformTask1 = setUpFreeformTask()
-        markTaskVisible(freeformTask1)
-
-        val freeformTask2 = createFreeformTask()
-        val result = controller.handleRequest(freeformTask2.token.asBinder(),
-            createTransition(freeformTask2))
-        assertTrue(result.anyDensityConfigChange(freeformTask2.token))
-    }
-
-    @Test
-    fun handleRequest_notOpenOrToFrontTransition_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val task =
-            TestRunningTaskInfoBuilder()
-                .setActivityType(ACTIVITY_TYPE_STANDARD)
-                .setWindowingMode(WINDOWING_MODE_FULLSCREEN)
-                .build()
-        val transition = createTransition(task = task, type = WindowManager.TRANSIT_CLOSE)
-        val result = controller.handleRequest(Binder(), transition)
-        assertThat(result).isNull()
-    }
-
-    @Test
-    fun handleRequest_noTriggerTask_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-        assertThat(controller.handleRequest(Binder(), createTransition(task = null))).isNull()
-    }
-
-    @Test
-    fun handleRequest_triggerTaskNotStandard_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-        val task = TestRunningTaskInfoBuilder().setActivityType(ACTIVITY_TYPE_HOME).build()
-        assertThat(controller.handleRequest(Binder(), createTransition(task))).isNull()
-    }
-
-    @Test
-    fun handleRequest_triggerTaskNotFullscreenOrFreeform_returnNull() {
-        assumeTrue(ENABLE_SHELL_TRANSITIONS)
-
-        val task =
-            TestRunningTaskInfoBuilder()
-                .setActivityType(ACTIVITY_TYPE_STANDARD)
-                .setWindowingMode(WINDOWING_MODE_MULTI_WINDOW)
-                .build()
-        assertThat(controller.handleRequest(Binder(), createTransition(task))).isNull()
-    }
-
-    @Test
-    fun handleRequest_recentsAnimationRunning_returnNull() {
-        // Set up a visible freeform task so a fullscreen task should be converted to freeform
-        val freeformTask = setUpFreeformTask()
-        markTaskVisible(freeformTask)
-
-        // Mark recents animation running
-        recentsTransitionStateListener.onAnimationStateChanged(true)
-
-        // Open a fullscreen task, check that it does not result in a WCT with changes to it
-        val fullscreenTask = createFullscreenTask()
-        assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
-    }
-
-    @Test
-    fun handleRequest_shouldLaunchAsModal_returnSwitchToFullscreenWCT() {
-        setFlagsRule.enableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
-        val task = setUpFreeformTask().apply {
-            isTopActivityTransparent = true
-            numActivities = 1
-        }
-
-        val result = controller.handleRequest(Binder(), createTransition(task))
-        assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun handleRequest_backTransition_singleActiveTask_noToken() {
-        val task = setUpFreeformTask()
-        val result =
-            controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
-        // Doesn't handle request
-        assertThat(result).isNull()
-    }
-
-    @Test
-    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun handleRequest_backTransition_singleActiveTask_hasToken_desktopWallpaperDisabled() {
-        desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
-
-        val task = setUpFreeformTask()
-        val result =
-            controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
-        // Doesn't handle request
-        assertThat(result).isNull()
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun handleRequest_backTransition_singleActiveTask_hasToken_desktopWallpaperEnabled() {
-        val wallpaperToken = MockToken().token()
-        desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
-
-        val task = setUpFreeformTask()
-        val result =
-            controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
-        assertThat(result).isNotNull()
-        // Creates remove wallpaper transaction
-        result!!.assertRemoveAt(index = 0, wallpaperToken)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
-    fun handleRequest_backTransition_multipleActiveTasks() {
-        desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
-
-        val task1 = setUpFreeformTask()
-        setUpFreeformTask()
-        val result =
-            controller.handleRequest(Binder(), createTransition(task1, type = TRANSIT_TO_BACK))
-        // Doesn't handle request
-        assertThat(result).isNull()
-    }
-
-    @Test
-    fun desktopTasksVisibilityChange_visible_setLaunchAdjacentDisabled() {
-        val task = setUpFreeformTask()
-        clearInvocations(launchAdjacentController)
-
-        markTaskVisible(task)
-        shellExecutor.flushAll()
-        verify(launchAdjacentController).launchAdjacentEnabled = false
-    }
-
-    @Test
-    fun desktopTasksVisibilityChange_invisible_setLaunchAdjacentEnabled() {
-        val task = setUpFreeformTask()
-        markTaskVisible(task)
-        clearInvocations(launchAdjacentController)
-
-        markTaskHidden(task)
-        shellExecutor.flushAll()
-        verify(launchAdjacentController).launchAdjacentEnabled = true
-    }
-    @Test
-    fun moveFocusedTaskToDesktop_fullscreenTaskIsMovedToDesktop() {
-        val task1 = setUpFullscreenTask()
-        val task2 = setUpFullscreenTask()
-        val task3 = setUpFullscreenTask()
-
-        task1.isFocused = true
-        task2.isFocused = false
-        task3.isFocused = false
-
-        controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY)
-
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task1.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FREEFORM)
-    }
-
-    @Test
-    fun moveFocusedTaskToDesktop_splitScreenTaskIsMovedToDesktop() {
-        val task1 = setUpSplitScreenTask()
-        val task2 = setUpFullscreenTask()
-        val task3 = setUpFullscreenTask()
-        val task4 = setUpSplitScreenTask()
-
-        task1.isFocused = true
-        task2.isFocused = false
-        task3.isFocused = false
-        task4.isFocused = true
-
-        task4.parentTaskId = task1.taskId
-
-        controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY)
-
-        val wct = getLatestMoveToDesktopWct()
-        assertThat(wct.changes[task4.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_FREEFORM)
-        verify(splitScreenController).prepareExitSplitScreen(
-            any(),
-            anyInt(),
-            eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE)
-        )
-    }
-
-    @Test
-    fun moveFocusedTaskToFullscreen() {
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        val task3 = setUpFreeformTask()
-
-        task1.isFocused = false
-        task2.isFocused = true
-        task3.isFocused = false
-
-        controller.enterFullscreen(DEFAULT_DISPLAY)
-
-        val wct = getLatestExitDesktopWct()
-        assertThat(wct.changes[task2.token.asBinder()]?.windowingMode)
-                .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_landscapeDevice_resizable_undefinedOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask()
-        setUpLandscapeDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_landscapeDevice_resizable_landscapeOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
-        setUpLandscapeDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_landscapeDevice_resizable_portraitOrientation_resizablePortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_PORTRAIT,
+            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE,
             shouldLetterbox = true)
-        setUpLandscapeDisplay()
+    setUpPortraitDisplay()
 
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_PORTRAIT_BOUNDS)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_LANDSCAPE_BOUNDS)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_landscapeDevice_unResizable_landscapeOrientation_defaultLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(isResizable = false,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
-        setUpLandscapeDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_landscapeDevice_unResizable_portraitOrientation_unResizablePortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(isResizable = false,
-            screenOrientation = SCREEN_ORIENTATION_PORTRAIT, shouldLetterbox = true)
-        setUpLandscapeDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_portraitDevice_resizable_undefinedOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_portraitDevice_resizable_portraitOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_portraitDevice_resizable_landscapeOrientation_resizableLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE, shouldLetterbox = true)
-        setUpPortraitDisplay()
-
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_LANDSCAPE_BOUNDS)
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_portraitDevice_unResizable_portraitOrientation_defaultPortraitBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(isResizable = false,
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_portraitDevice_unResizable_portraitOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
             deviceOrientation = ORIENTATION_PORTRAIT,
             screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
-        setUpPortraitDisplay()
+    setUpPortraitDisplay()
 
-        spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
 
-    @Test
-    @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
-    fun dragToDesktop_portraitDevice_unResizable_landscapeOrientation_unResizableLandscapeBounds() {
-        doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-        val spyController = spy(controller)
-        whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
-        whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
-                .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
-
-        val task = setUpFullscreenTask(isResizable = false,
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun moveToDesktop_portraitDevice_unResizable_landscapeOrientation_unResizableLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
             deviceOrientation = ORIENTATION_PORTRAIT,
-            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE, shouldLetterbox = true)
-        setUpPortraitDisplay()
+            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE,
+            shouldLetterbox = true)
+    setUpPortraitDisplay()
 
-        spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task)
-        val wct = getLatestDragToDesktopWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS)
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  fun moveToDesktop_tdaFullscreen_windowingModeSetToFreeform() {
+    val task = setUpFullscreenTask()
+    val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
+    tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+  }
+
+  @Test
+  fun moveToDesktop_tdaFreeform_windowingModeSetToUndefined() {
+    val task = setUpFullscreenTask()
+    val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
+    tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_UNDEFINED)
+  }
+
+  @Test
+  fun moveToDesktop_nonExistentTask_doesNothing() {
+    controller.moveToDesktop(999, transitionSource = UNKNOWN)
+    verifyWCTNotExecuted()
+  }
+
+  @Test
+  fun moveToDesktop_nonRunningTask_launchesInFreeform() {
+    whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
+
+    val task = createTaskInfo(1)
+
+    whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
+
+    controller.moveToDesktop(task.taskId, transitionSource = UNKNOWN)
+    with(getLatestMoveToDesktopWct()) {
+      assertLaunchTaskAt(0, task.taskId, WINDOWING_MODE_FREEFORM)
     }
+  }
 
-    @Test
-    fun onDesktopDragMove_endsOutsideValidDragArea_snapsToValidBounds() {
-        val task = setUpFreeformTask()
-        val mockSurface = mock(SurfaceControl::class.java)
-        val mockDisplayLayout = mock(DisplayLayout::class.java)
-        whenever(displayController.getDisplayLayout(task.displayId)).thenReturn(mockDisplayLayout)
-        whenever(mockDisplayLayout.stableInsets()).thenReturn(Rect(0, 100, 2000, 2000))
-        controller.onDragPositioningMove(task, mockSurface, 200f,
-            Rect(100, -100, 500, 1000))
-
-        controller.onDragPositioningEnd(task,
-            Point(100, -100), /* position */
-            PointF(200f, -200f), /* inputCoordinate */
-            Rect(100, -100, 500, 1000), /* taskBounds */
-            Rect(0, 50, 2000, 2000) /* validDragArea */
-        )
-        val rectAfterEnd = Rect(100, 50, 500, 1150)
-        verify(transitions).startTransition(
-            eq(TRANSIT_CHANGE), Mockito.argThat { wct ->
-                return@argThat wct.changes.any { (token, change) ->
-                    change.configuration.windowConfiguration.bounds == rectAfterEnd
-                }
-            }, eq(null))
-    }
-
-    fun enterSplit_freeformTaskIsMovedToSplit() {
-        val task1 = setUpFreeformTask()
-        val task2 = setUpFreeformTask()
-        val task3 = setUpFreeformTask()
-
-        task1.isFocused = false
-        task2.isFocused = true
-        task3.isFocused = false
-
-        controller.enterSplit(DEFAULT_DISPLAY, false)
-
-        verify(splitScreenController).requestEnterSplitSelect(
-                task2,
-                any(),
-                SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT,
-                task2.configuration.windowConfiguration.bounds
-        )
-    }
-
-    @Test
-    fun toggleBounds_togglesToStableBounds() {
-        val bounds = Rect(0, 0, 100, 100)
-        val task = setUpFreeformTask(DEFAULT_DISPLAY, bounds)
-
-        controller.toggleDesktopTaskSize(task)
-        // Assert bounds set to stable bounds
-        val wct = getLatestToggleResizeDesktopTaskWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(STABLE_BOUNDS)
-    }
-
-    @Test
-    fun toggleBounds_lastBoundsBeforeMaximizeSaved() {
-        val bounds = Rect(0, 0, 100, 100)
-        val task = setUpFreeformTask(DEFAULT_DISPLAY, bounds)
-
-        controller.toggleDesktopTaskSize(task)
-        assertThat(desktopModeTaskRepository.removeBoundsBeforeMaximize(task.taskId))
-                .isEqualTo(bounds)
-    }
-
-    @Test
-    fun toggleBounds_togglesFromStableBoundsToLastBoundsBeforeMaximize() {
-        val boundsBeforeMaximize = Rect(0, 0, 100, 100)
-        val task = setUpFreeformTask(DEFAULT_DISPLAY, boundsBeforeMaximize)
-
-        // Maximize
-        controller.toggleDesktopTaskSize(task)
-        task.configuration.windowConfiguration.bounds.set(STABLE_BOUNDS)
-
-        // Restore
-        controller.toggleDesktopTaskSize(task)
-
-        // Assert bounds set to last bounds before maximize
-        val wct = getLatestToggleResizeDesktopTaskWct()
-        assertThat(findBoundsChange(wct, task)).isEqualTo(boundsBeforeMaximize)
-    }
-
-    @Test
-    fun toggleBounds_removesLastBoundsBeforeMaximizeAfterRestoringBounds() {
-        val boundsBeforeMaximize = Rect(0, 0, 100, 100)
-        val task = setUpFreeformTask(DEFAULT_DISPLAY, boundsBeforeMaximize)
-
-        // Maximize
-        controller.toggleDesktopTaskSize(task)
-        task.configuration.windowConfiguration.bounds.set(STABLE_BOUNDS)
-
-        // Restore
-        controller.toggleDesktopTaskSize(task)
-
-        // Assert last bounds before maximize removed after use
-        assertThat(desktopModeTaskRepository.removeBoundsBeforeMaximize(task.taskId)).isNull()
-    }
-
-    private val desktopWallpaperIntent: Intent
-        get() = Intent(context, DesktopWallpaperActivity::class.java)
-
-    private fun setUpFreeformTask(
-            displayId: Int = DEFAULT_DISPLAY,
-            bounds: Rect? = null
-    ): RunningTaskInfo {
-        val task = createFreeformTask(displayId, bounds)
-        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
-        desktopModeTaskRepository.addActiveTask(displayId, task.taskId)
-        desktopModeTaskRepository.addOrMoveFreeformTaskToTop(displayId, task.taskId)
-        runningTasks.add(task)
-        return task
-    }
-
-    private fun setUpHomeTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo {
-        val task = createHomeTask(displayId)
-        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
-        runningTasks.add(task)
-        return task
-    }
-
-    private fun setUpFullscreenTask(
-        displayId: Int = DEFAULT_DISPLAY,
-        isResizable: Boolean = true,
-        windowingMode: Int = WINDOWING_MODE_FULLSCREEN,
-        deviceOrientation: Int = ORIENTATION_LANDSCAPE,
-        screenOrientation: Int = SCREEN_ORIENTATION_UNSPECIFIED,
-        shouldLetterbox: Boolean = false
-    ): RunningTaskInfo {
-        val task = createFullscreenTask(displayId)
-        val activityInfo = ActivityInfo()
-        activityInfo.screenOrientation = screenOrientation
-        with(task) {
-            topActivityInfo = activityInfo
-            isResizeable = isResizable
-            configuration.orientation = deviceOrientation
-            configuration.windowConfiguration.windowingMode = windowingMode
-
-            if (shouldLetterbox) {
-                if (deviceOrientation == ORIENTATION_LANDSCAPE &&
-                    screenOrientation == SCREEN_ORIENTATION_PORTRAIT) {
-                    // Letterbox to portrait size
-                    appCompatTaskInfo.topActivityBoundsLetterboxed = true
-                    appCompatTaskInfo.topActivityLetterboxWidth = 1200
-                    appCompatTaskInfo.topActivityLetterboxHeight = 1600
-                } else if (deviceOrientation == ORIENTATION_PORTRAIT &&
-                    screenOrientation == SCREEN_ORIENTATION_LANDSCAPE) {
-                    // Letterbox to landscape size
-                    appCompatTaskInfo.topActivityBoundsLetterboxed = true
-                    appCompatTaskInfo.topActivityLetterboxWidth = 1600
-                    appCompatTaskInfo.topActivityLetterboxHeight = 1200
-                }
-            } else {
-                appCompatTaskInfo.topActivityBoundsLetterboxed = false
-            }
-
-            if (deviceOrientation == ORIENTATION_LANDSCAPE) {
-                configuration.windowConfiguration.appBounds = Rect(0, 0,
-                    DISPLAY_DIMENSION_LONG, DISPLAY_DIMENSION_SHORT)
-            } else {
-                configuration.windowConfiguration.appBounds = Rect(0, 0,
-                    DISPLAY_DIMENSION_SHORT, DISPLAY_DIMENSION_LONG)
-            }
+  @Test
+  fun moveToDesktop_topActivityTranslucent_doesNothing() {
+    setFlagsRule.enableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+    val task =
+        setUpFullscreenTask().apply {
+          isTopActivityTransparent = true
+          numActivities = 1
         }
-        whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(true)
-        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
-        runningTasks.add(task)
-        return task
-    }
 
-    private fun setUpLandscapeDisplay() {
-        whenever(displayLayout.width()).thenReturn(DISPLAY_DIMENSION_LONG)
-        whenever(displayLayout.height()).thenReturn(DISPLAY_DIMENSION_SHORT)
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    verifyWCTNotExecuted()
+  }
 
-    private fun setUpPortraitDisplay() {
-        whenever(displayLayout.width()).thenReturn(DISPLAY_DIMENSION_SHORT)
-        whenever(displayLayout.height()).thenReturn(DISPLAY_DIMENSION_LONG)
-    }
+  @Test
+  fun moveToDesktop_deviceNotSupported_doesNothing() {
+    val task = setUpFullscreenTask()
 
-    private fun setUpSplitScreenTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo {
-        val task = createSplitScreenTask(displayId)
-        whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(true)
-        whenever(splitScreenController.isTaskInSplitScreen(task.taskId)).thenReturn(true)
-        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
-        runningTasks.add(task)
-        return task
-    }
+    // Simulate non compatible device
+    doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
 
-    private fun markTaskVisible(task: RunningTaskInfo) {
-        desktopModeTaskRepository.updateVisibleFreeformTasks(
-            task.displayId,
-            task.taskId,
-            visible = true
-        )
-    }
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    verifyWCTNotExecuted()
+  }
 
-    private fun markTaskHidden(task: RunningTaskInfo) {
-        desktopModeTaskRepository.updateVisibleFreeformTasks(
-            task.displayId,
-            task.taskId,
-            visible = false
-        )
-    }
+  @Test
+  fun moveToDesktop_deviceNotSupported_deviceRestrictionsOverridden_taskIsMovedToDesktop() {
+    val task = setUpFullscreenTask()
 
-    private fun getLatestWct(
-            @WindowManager.TransitionType type: Int = TRANSIT_OPEN,
-            handlerClass: Class<out TransitionHandler>? = null
-    ): WindowContainerTransaction {
-        val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
-        if (ENABLE_SHELL_TRANSITIONS) {
-            if (handlerClass == null) {
-                verify(transitions).startTransition(eq(type), arg.capture(), isNull())
-            } else {
-                verify(transitions).startTransition(eq(type), arg.capture(), isA(handlerClass))
-            }
-        } else {
-            verify(shellTaskOrganizer).applyTransaction(arg.capture())
+    // Simulate non compatible device
+    doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+
+    // Simulate enforce device restrictions system property overridden to false
+    whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(false)
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+  }
+
+  @Test
+  fun moveToDesktop_deviceSupported_taskIsMovedToDesktop() {
+    val task = setUpFullscreenTask()
+
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+  }
+
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun moveToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperDisabled() {
+    val homeTask = setUpHomeTask()
+    val freeformTask = setUpFreeformTask()
+    val fullscreenTask = setUpFullscreenTask()
+    markTaskHidden(freeformTask)
+
+    controller.moveToDesktop(fullscreenTask, transitionSource = UNKNOWN)
+
+    with(getLatestMoveToDesktopWct()) {
+      // Operations should include home task, freeform task
+      assertThat(hierarchyOps).hasSize(3)
+      assertReorderSequence(homeTask, freeformTask, fullscreenTask)
+      assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
+          .isEqualTo(WINDOWING_MODE_FREEFORM)
+    }
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun moveToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperEnabled() {
+    val freeformTask = setUpFreeformTask()
+    val fullscreenTask = setUpFullscreenTask()
+    markTaskHidden(freeformTask)
+
+    controller.moveToDesktop(fullscreenTask, transitionSource = UNKNOWN)
+
+    with(getLatestMoveToDesktopWct()) {
+      // Operations should include wallpaper intent, freeform task, fullscreen task
+      assertThat(hierarchyOps).hasSize(3)
+      assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+      assertReorderAt(index = 1, freeformTask)
+      assertReorderAt(index = 2, fullscreenTask)
+      assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
+          .isEqualTo(WINDOWING_MODE_FREEFORM)
+    }
+  }
+
+  @Test
+  fun moveToDesktop_onlyFreeformTasksFromCurrentDisplayBroughtToFront() {
+    setUpHomeTask(displayId = DEFAULT_DISPLAY)
+    val freeformTaskDefault = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
+    val fullscreenTaskDefault = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+    markTaskHidden(freeformTaskDefault)
+
+    val homeTaskSecond = setUpHomeTask(displayId = SECOND_DISPLAY)
+    val freeformTaskSecond = setUpFreeformTask(displayId = SECOND_DISPLAY)
+    markTaskHidden(freeformTaskSecond)
+
+    controller.moveToDesktop(fullscreenTaskDefault, transitionSource = UNKNOWN)
+
+    with(getLatestMoveToDesktopWct()) {
+      // Check that hierarchy operations do not include tasks from second display
+      assertThat(hierarchyOps.map { it.container }).doesNotContain(homeTaskSecond.token.asBinder())
+      assertThat(hierarchyOps.map { it.container })
+          .doesNotContain(freeformTaskSecond.token.asBinder())
+    }
+  }
+
+  @Test
+  fun moveToDesktop_splitTaskExitsSplit() {
+    val task = setUpSplitScreenTask()
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+    verify(splitScreenController)
+        .prepareExitSplitScreen(any(), anyInt(), eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE))
+  }
+
+  @Test
+  fun moveToDesktop_fullscreenTaskDoesNotExitSplit() {
+    val task = setUpFullscreenTask()
+    controller.moveToDesktop(task, transitionSource = UNKNOWN)
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+    verify(splitScreenController, never())
+        .prepareExitSplitScreen(any(), anyInt(), eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE))
+  }
+
+  @Test
+  fun moveToDesktop_bringsTasksOverLimit_dontShowBackTask() {
+    val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
+    val homeTask = setUpHomeTask()
+    val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
+    val newTask = setUpFullscreenTask()
+
+    controller.moveToDesktop(newTask, transitionSource = UNKNOWN)
+
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.hierarchyOps.size).isEqualTo(taskLimit + 1) // visible tasks + home
+    wct.assertReorderAt(0, homeTask)
+    for (i in 1..<taskLimit) { // Skipping freeformTasks[0]
+      wct.assertReorderAt(index = i, task = freeformTasks[i])
+    }
+    wct.assertReorderAt(taskLimit, newTask)
+  }
+
+  @Test
+  fun moveToFullscreen_tdaFullscreen_windowingModeSetToUndefined() {
+    val task = setUpFreeformTask()
+    val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
+    tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
+    controller.moveToFullscreen(task.taskId, transitionSource = UNKNOWN)
+    val wct = getLatestExitDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_UNDEFINED)
+  }
+
+  @Test
+  fun moveToFullscreen_tdaFreeform_windowingModeSetToFullscreen() {
+    val task = setUpFreeformTask()
+    val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
+    tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
+    controller.moveToFullscreen(task.taskId, transitionSource = UNKNOWN)
+    val wct = getLatestExitDesktopWct()
+    assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_FULLSCREEN)
+  }
+
+  @Test
+  fun moveToFullscreen_nonExistentTask_doesNothing() {
+    controller.moveToFullscreen(999, transitionSource = UNKNOWN)
+    verifyWCTNotExecuted()
+  }
+
+  @Test
+  fun moveToFullscreen_secondDisplayTaskHasFreeform_secondDisplayNotAffected() {
+    val taskDefaultDisplay = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
+    val taskSecondDisplay = setUpFreeformTask(displayId = SECOND_DISPLAY)
+
+    controller.moveToFullscreen(taskDefaultDisplay.taskId, transitionSource = UNKNOWN)
+
+    with(getLatestExitDesktopWct()) {
+      assertThat(changes.keys).contains(taskDefaultDisplay.token.asBinder())
+      assertThat(changes.keys).doesNotContain(taskSecondDisplay.token.asBinder())
+    }
+  }
+
+  @Test
+  fun moveTaskToFront_postsWctWithReorderOp() {
+    val task1 = setUpFreeformTask()
+    setUpFreeformTask()
+
+    controller.moveTaskToFront(task1)
+
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT)
+    assertThat(wct.hierarchyOps).hasSize(1)
+    wct.assertReorderAt(index = 0, task1)
+  }
+
+  @Test
+  fun moveTaskToFront_bringsTasksOverLimit_minimizesBackTask() {
+    val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
+    setUpHomeTask()
+    val freeformTasks = (1..taskLimit + 1).map { _ -> setUpFreeformTask() }
+
+    controller.moveTaskToFront(freeformTasks[0])
+
+    val wct = getLatestWct(type = TRANSIT_TO_FRONT)
+    assertThat(wct.hierarchyOps.size).isEqualTo(2) // move-to-front + minimize
+    wct.assertReorderAt(0, freeformTasks[0], toTop = true)
+    wct.assertReorderAt(1, freeformTasks[1], toTop = false)
+  }
+
+  @Test
+  fun moveToNextDisplay_noOtherDisplays() {
+    whenever(rootTaskDisplayAreaOrganizer.displayIds).thenReturn(intArrayOf(DEFAULT_DISPLAY))
+    val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
+    controller.moveToNextDisplay(task.taskId)
+    verifyWCTNotExecuted()
+  }
+
+  @Test
+  fun moveToNextDisplay_moveFromFirstToSecondDisplay() {
+    // Set up two display ids
+    whenever(rootTaskDisplayAreaOrganizer.displayIds)
+        .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY))
+    // Create a mock for the target display area: second display
+    val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0)
+    whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY))
+        .thenReturn(secondDisplayArea)
+
+    val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
+    controller.moveToNextDisplay(task.taskId)
+    with(getLatestWct(type = TRANSIT_CHANGE)) {
+      assertThat(hierarchyOps).hasSize(1)
+      assertThat(hierarchyOps[0].container).isEqualTo(task.token.asBinder())
+      assertThat(hierarchyOps[0].isReparent).isTrue()
+      assertThat(hierarchyOps[0].newParent).isEqualTo(secondDisplayArea.token.asBinder())
+      assertThat(hierarchyOps[0].toTop).isTrue()
+    }
+  }
+
+  @Test
+  fun moveToNextDisplay_moveFromSecondToFirstDisplay() {
+    // Set up two display ids
+    whenever(rootTaskDisplayAreaOrganizer.displayIds)
+        .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY))
+    // Create a mock for the target display area: default display
+    val defaultDisplayArea = DisplayAreaInfo(MockToken().token(), DEFAULT_DISPLAY, 0)
+    whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY))
+        .thenReturn(defaultDisplayArea)
+
+    val task = setUpFreeformTask(displayId = SECOND_DISPLAY)
+    controller.moveToNextDisplay(task.taskId)
+
+    with(getLatestWct(type = TRANSIT_CHANGE)) {
+      assertThat(hierarchyOps).hasSize(1)
+      assertThat(hierarchyOps[0].container).isEqualTo(task.token.asBinder())
+      assertThat(hierarchyOps[0].isReparent).isTrue()
+      assertThat(hierarchyOps[0].newParent).isEqualTo(defaultDisplayArea.token.asBinder())
+      assertThat(hierarchyOps[0].toTop).isTrue()
+    }
+  }
+
+  @Test
+  fun getTaskWindowingMode() {
+    val fullscreenTask = setUpFullscreenTask()
+    val freeformTask = setUpFreeformTask()
+
+    assertThat(controller.getTaskWindowingMode(fullscreenTask.taskId))
+        .isEqualTo(WINDOWING_MODE_FULLSCREEN)
+    assertThat(controller.getTaskWindowingMode(freeformTask.taskId))
+        .isEqualTo(WINDOWING_MODE_FREEFORM)
+    assertThat(controller.getTaskWindowingMode(999)).isEqualTo(WINDOWING_MODE_UNDEFINED)
+  }
+
+  @Test
+  fun onDesktopWindowClose_noActiveTasks() {
+    val wct = WindowContainerTransaction()
+    controller.onDesktopWindowClose(wct, 1 /* taskId */)
+    // Doesn't modify transaction
+    assertThat(wct.hierarchyOps).isEmpty()
+  }
+
+  @Test
+  fun onDesktopWindowClose_singleActiveTask_noWallpaperActivityToken() {
+    val task = setUpFreeformTask()
+    val wct = WindowContainerTransaction()
+    controller.onDesktopWindowClose(wct, task.taskId)
+    // Doesn't modify transaction
+    assertThat(wct.hierarchyOps).isEmpty()
+  }
+
+  @Test
+  fun onDesktopWindowClose_singleActiveTask_hasWallpaperActivityToken() {
+    val task = setUpFreeformTask()
+    val wallpaperToken = MockToken().token()
+    desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
+
+    val wct = WindowContainerTransaction()
+    controller.onDesktopWindowClose(wct, task.taskId)
+    // Adds remove wallpaper operation
+    wct.assertRemoveAt(index = 0, wallpaperToken)
+  }
+
+  @Test
+  fun onDesktopWindowClose_multipleActiveTasks() {
+    val task1 = setUpFreeformTask()
+    setUpFreeformTask()
+    val wallpaperToken = MockToken().token()
+    desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
+
+    val wct = WindowContainerTransaction()
+    controller.onDesktopWindowClose(wct, task1.taskId)
+    // Doesn't modify transaction
+    assertThat(wct.hierarchyOps).isEmpty()
+  }
+
+  @Test
+  fun handleRequest_fullscreenTask_freeformVisible_returnSwitchToFreeformWCT() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val freeformTask = setUpFreeformTask()
+    markTaskVisible(freeformTask)
+    val fullscreenTask = createFullscreenTask()
+
+    val result = controller.handleRequest(Binder(), createTransition(fullscreenTask))
+    assertThat(result?.changes?.get(fullscreenTask.token.asBinder())?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_FREEFORM)
+  }
+
+  @Test
+  fun handleRequest_fullscreenTaskToFreeform_underTaskLimit_dontMinimize() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val freeformTask = setUpFreeformTask()
+    markTaskVisible(freeformTask)
+    val fullscreenTask = createFullscreenTask()
+
+    val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask))
+
+    // Make sure we only reorder the new task to top (we don't reorder the old task to bottom)
+    assertThat(wct?.hierarchyOps?.size).isEqualTo(1)
+    wct!!.assertReorderAt(0, fullscreenTask, toTop = true)
+  }
+
+  @Test
+  fun handleRequest_fullscreenTaskToFreeform_bringsTasksOverLimit_otherTaskIsMinimized() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
+    val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
+    freeformTasks.forEach { markTaskVisible(it) }
+    val fullscreenTask = createFullscreenTask()
+
+    val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask))
+
+    // Make sure we reorder the new task to top, and the back task to the bottom
+    assertThat(wct!!.hierarchyOps.size).isEqualTo(2)
+    wct.assertReorderAt(0, fullscreenTask, toTop = true)
+    wct.assertReorderAt(1, freeformTasks[0], toTop = false)
+  }
+
+  @Test
+  fun handleRequest_fullscreenTask_freeformNotVisible_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val freeformTask = setUpFreeformTask()
+    markTaskHidden(freeformTask)
+    val fullscreenTask = createFullscreenTask()
+    assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
+  }
+
+  @Test
+  fun handleRequest_fullscreenTask_noOtherTasks_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val fullscreenTask = createFullscreenTask()
+    assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
+  }
+
+  @Test
+  fun handleRequest_fullscreenTask_freeformTaskOnOtherDisplay_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val fullscreenTaskDefaultDisplay = createFullscreenTask(displayId = DEFAULT_DISPLAY)
+    createFreeformTask(displayId = SECOND_DISPLAY)
+
+    val result = controller.handleRequest(Binder(), createTransition(fullscreenTaskDefaultDisplay))
+    assertThat(result).isNull()
+  }
+
+  @Test
+  fun handleRequest_freeformTask_freeformVisible_aboveTaskLimit_minimize() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val taskLimit = desktopTasksLimiter.getMaxTaskLimit()
+    val freeformTasks = (1..taskLimit).map { _ -> setUpFreeformTask() }
+    freeformTasks.forEach { markTaskVisible(it) }
+    val newFreeformTask = createFreeformTask()
+
+    val wct = controller.handleRequest(Binder(), createTransition(newFreeformTask, TRANSIT_OPEN))
+
+    assertThat(wct?.hierarchyOps?.size).isEqualTo(1)
+    wct!!.assertReorderAt(0, freeformTasks[0], toTop = false) // Reorder to the bottom
+  }
+
+  @Test
+  fun handleRequest_freeformTask_freeformNotVisible_reorderedToTop() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val freeformTask1 = setUpFreeformTask()
+    markTaskHidden(freeformTask1)
+
+    val freeformTask2 = createFreeformTask()
+    val result =
+        controller.handleRequest(Binder(), createTransition(freeformTask2, type = TRANSIT_TO_FRONT))
+
+    assertThat(result?.hierarchyOps?.size).isEqualTo(2)
+    result!!.assertReorderAt(1, freeformTask2, toTop = true)
+  }
+
+  @Test
+  fun handleRequest_freeformTask_noOtherTasks_reorderedToTop() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val task = createFreeformTask()
+    val result = controller.handleRequest(Binder(), createTransition(task))
+
+    assertThat(result?.hierarchyOps?.size).isEqualTo(1)
+    result!!.assertReorderAt(0, task, toTop = true)
+  }
+
+  @Test
+  fun handleRequest_freeformTask_freeformOnOtherDisplayOnly_reorderedToTop() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val taskDefaultDisplay = createFreeformTask(displayId = DEFAULT_DISPLAY)
+    val taskSecondDisplay = createFreeformTask(displayId = SECOND_DISPLAY)
+
+    val result = controller.handleRequest(Binder(), createTransition(taskDefaultDisplay))
+    assertThat(result?.hierarchyOps?.size).isEqualTo(1)
+    result!!.assertReorderAt(0, taskDefaultDisplay, toTop = true)
+  }
+
+  @Test
+  fun handleRequest_freeformTask_alreadyInDesktop_noOverrideDensity_noConfigDensityChange() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+    whenever(DesktopModeStatus.useDesktopOverrideDensity()).thenReturn(false)
+
+    val freeformTask1 = setUpFreeformTask()
+    markTaskVisible(freeformTask1)
+
+    val freeformTask2 = createFreeformTask()
+    val result =
+        controller.handleRequest(freeformTask2.token.asBinder(), createTransition(freeformTask2))
+    assertFalse(result.anyDensityConfigChange(freeformTask2.token))
+  }
+
+  @Test
+  fun handleRequest_freeformTask_alreadyInDesktop_overrideDensity_hasConfigDensityChange() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+    whenever(DesktopModeStatus.useDesktopOverrideDensity()).thenReturn(true)
+
+    val freeformTask1 = setUpFreeformTask()
+    markTaskVisible(freeformTask1)
+
+    val freeformTask2 = createFreeformTask()
+    val result =
+        controller.handleRequest(freeformTask2.token.asBinder(), createTransition(freeformTask2))
+    assertTrue(result.anyDensityConfigChange(freeformTask2.token))
+  }
+
+  @Test
+  fun handleRequest_notOpenOrToFrontTransition_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val task =
+        TestRunningTaskInfoBuilder()
+            .setActivityType(ACTIVITY_TYPE_STANDARD)
+            .setWindowingMode(WINDOWING_MODE_FULLSCREEN)
+            .build()
+    val transition = createTransition(task = task, type = WindowManager.TRANSIT_CLOSE)
+    val result = controller.handleRequest(Binder(), transition)
+    assertThat(result).isNull()
+  }
+
+  @Test
+  fun handleRequest_noTriggerTask_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+    assertThat(controller.handleRequest(Binder(), createTransition(task = null))).isNull()
+  }
+
+  @Test
+  fun handleRequest_triggerTaskNotStandard_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+    val task = TestRunningTaskInfoBuilder().setActivityType(ACTIVITY_TYPE_HOME).build()
+    assertThat(controller.handleRequest(Binder(), createTransition(task))).isNull()
+  }
+
+  @Test
+  fun handleRequest_triggerTaskNotFullscreenOrFreeform_returnNull() {
+    assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+    val task =
+        TestRunningTaskInfoBuilder()
+            .setActivityType(ACTIVITY_TYPE_STANDARD)
+            .setWindowingMode(WINDOWING_MODE_MULTI_WINDOW)
+            .build()
+    assertThat(controller.handleRequest(Binder(), createTransition(task))).isNull()
+  }
+
+  @Test
+  fun handleRequest_recentsAnimationRunning_returnNull() {
+    // Set up a visible freeform task so a fullscreen task should be converted to freeform
+    val freeformTask = setUpFreeformTask()
+    markTaskVisible(freeformTask)
+
+    // Mark recents animation running
+    recentsTransitionStateListener.onAnimationStateChanged(true)
+
+    // Open a fullscreen task, check that it does not result in a WCT with changes to it
+    val fullscreenTask = createFullscreenTask()
+    assertThat(controller.handleRequest(Binder(), createTransition(fullscreenTask))).isNull()
+  }
+
+  @Test
+  fun handleRequest_shouldLaunchAsModal_returnSwitchToFullscreenWCT() {
+    setFlagsRule.enableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+    val task =
+        setUpFreeformTask().apply {
+          isTopActivityTransparent = true
+          numActivities = 1
         }
-        return arg.value
-    }
 
-    private fun getLatestToggleResizeDesktopTaskWct(): WindowContainerTransaction {
-        val arg: ArgumentCaptor<WindowContainerTransaction> =
-                ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
-        if (ENABLE_SHELL_TRANSITIONS) {
-            verify(toggleResizeDesktopTaskTransitionHandler, atLeastOnce())
-                    .startTransition(capture(arg))
-        } else {
-            verify(shellTaskOrganizer).applyTransaction(capture(arg))
+    val result = controller.handleRequest(Binder(), createTransition(task))
+    assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun handleRequest_backTransition_singleActiveTask_noToken() {
+    val task = setUpFreeformTask()
+    val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
+    // Doesn't handle request
+    assertThat(result).isNull()
+  }
+
+  @Test
+  @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun handleRequest_backTransition_singleActiveTask_hasToken_desktopWallpaperDisabled() {
+    desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
+
+    val task = setUpFreeformTask()
+    val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
+    // Doesn't handle request
+    assertThat(result).isNull()
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun handleRequest_backTransition_singleActiveTask_hasToken_desktopWallpaperEnabled() {
+    val wallpaperToken = MockToken().token()
+    desktopModeTaskRepository.wallpaperActivityToken = wallpaperToken
+
+    val task = setUpFreeformTask()
+    val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
+    assertThat(result).isNotNull()
+    // Creates remove wallpaper transaction
+    result!!.assertRemoveAt(index = 0, wallpaperToken)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+  fun handleRequest_backTransition_multipleActiveTasks() {
+    desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
+
+    val task1 = setUpFreeformTask()
+    setUpFreeformTask()
+    val result = controller.handleRequest(Binder(), createTransition(task1, type = TRANSIT_TO_BACK))
+    // Doesn't handle request
+    assertThat(result).isNull()
+  }
+
+  @Test
+  fun desktopTasksVisibilityChange_visible_setLaunchAdjacentDisabled() {
+    val task = setUpFreeformTask()
+    clearInvocations(launchAdjacentController)
+
+    markTaskVisible(task)
+    shellExecutor.flushAll()
+    verify(launchAdjacentController).launchAdjacentEnabled = false
+  }
+
+  @Test
+  fun desktopTasksVisibilityChange_invisible_setLaunchAdjacentEnabled() {
+    val task = setUpFreeformTask()
+    markTaskVisible(task)
+    clearInvocations(launchAdjacentController)
+
+    markTaskHidden(task)
+    shellExecutor.flushAll()
+    verify(launchAdjacentController).launchAdjacentEnabled = true
+  }
+
+  @Test
+  fun moveFocusedTaskToDesktop_fullscreenTaskIsMovedToDesktop() {
+    val task1 = setUpFullscreenTask()
+    val task2 = setUpFullscreenTask()
+    val task3 = setUpFullscreenTask()
+
+    task1.isFocused = true
+    task2.isFocused = false
+    task3.isFocused = false
+
+    controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY, transitionSource = UNKNOWN)
+
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task1.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_FREEFORM)
+  }
+
+  @Test
+  fun moveFocusedTaskToDesktop_splitScreenTaskIsMovedToDesktop() {
+    val task1 = setUpSplitScreenTask()
+    val task2 = setUpFullscreenTask()
+    val task3 = setUpFullscreenTask()
+    val task4 = setUpSplitScreenTask()
+
+    task1.isFocused = true
+    task2.isFocused = false
+    task3.isFocused = false
+    task4.isFocused = true
+
+    task4.parentTaskId = task1.taskId
+
+    controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY, transitionSource = UNKNOWN)
+
+    val wct = getLatestMoveToDesktopWct()
+    assertThat(wct.changes[task4.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_FREEFORM)
+    verify(splitScreenController)
+        .prepareExitSplitScreen(any(), anyInt(), eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE))
+  }
+
+  @Test
+  fun moveFocusedTaskToFullscreen() {
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    val task3 = setUpFreeformTask()
+
+    task1.isFocused = false
+    task2.isFocused = true
+    task3.isFocused = false
+
+    controller.enterFullscreen(DEFAULT_DISPLAY, transitionSource = UNKNOWN)
+
+    val wct = getLatestExitDesktopWct()
+    assertThat(wct.changes[task2.token.asBinder()]?.windowingMode)
+        .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_landscapeDevice_resizable_undefinedOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task = setUpFullscreenTask()
+    setUpLandscapeDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_landscapeDevice_resizable_landscapeOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task = setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
+    setUpLandscapeDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_landscapeDevice_resizable_portraitOrientation_resizablePortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(screenOrientation = SCREEN_ORIENTATION_PORTRAIT, shouldLetterbox = true)
+    setUpLandscapeDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_landscapeDevice_unResizable_landscapeOrientation_defaultLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(isResizable = false, screenOrientation = SCREEN_ORIENTATION_LANDSCAPE)
+    setUpLandscapeDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_landscapeDevice_unResizable_portraitOrientation_unResizablePortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
+            screenOrientation = SCREEN_ORIENTATION_PORTRAIT,
+            shouldLetterbox = true)
+    setUpLandscapeDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_portraitDevice_resizable_undefinedOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task = setUpFullscreenTask(deviceOrientation = ORIENTATION_PORTRAIT)
+    setUpPortraitDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_portraitDevice_resizable_portraitOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(
+            deviceOrientation = ORIENTATION_PORTRAIT,
+            screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
+    setUpPortraitDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_portraitDevice_resizable_landscapeOrientation_resizableLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(
+            deviceOrientation = ORIENTATION_PORTRAIT,
+            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE,
+            shouldLetterbox = true)
+    setUpPortraitDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(RESIZABLE_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_portraitDevice_unResizable_portraitOrientation_defaultPortraitBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
+            deviceOrientation = ORIENTATION_PORTRAIT,
+            screenOrientation = SCREEN_ORIENTATION_PORTRAIT)
+    setUpPortraitDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS)
+  }
+
+  @Test
+  @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
+  fun dragToDesktop_portraitDevice_unResizable_landscapeOrientation_unResizableLandscapeBounds() {
+    doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+    val spyController = spy(controller)
+    whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+    whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull(), anyOrNull()))
+        .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+
+    val task =
+        setUpFullscreenTask(
+            isResizable = false,
+            deviceOrientation = ORIENTATION_PORTRAIT,
+            screenOrientation = SCREEN_ORIENTATION_LANDSCAPE,
+            shouldLetterbox = true)
+    setUpPortraitDisplay()
+
+    spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task)
+    val wct = getLatestDragToDesktopWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS)
+  }
+
+  @Test
+  fun onDesktopDragMove_endsOutsideValidDragArea_snapsToValidBounds() {
+    val task = setUpFreeformTask()
+    val mockSurface = mock(SurfaceControl::class.java)
+    val mockDisplayLayout = mock(DisplayLayout::class.java)
+    whenever(displayController.getDisplayLayout(task.displayId)).thenReturn(mockDisplayLayout)
+    whenever(mockDisplayLayout.stableInsets()).thenReturn(Rect(0, 100, 2000, 2000))
+    controller.onDragPositioningMove(task, mockSurface, 200f, Rect(100, -100, 500, 1000))
+
+    controller.onDragPositioningEnd(
+        task,
+        Point(100, -100), /* position */
+        PointF(200f, -200f), /* inputCoordinate */
+        Rect(100, -100, 500, 1000), /* taskBounds */
+        Rect(0, 50, 2000, 2000) /* validDragArea */)
+    val rectAfterEnd = Rect(100, 50, 500, 1150)
+    verify(transitions)
+        .startTransition(
+            eq(TRANSIT_CHANGE),
+            Mockito.argThat { wct ->
+              return@argThat wct.changes.any { (token, change) ->
+                change.configuration.windowConfiguration.bounds == rectAfterEnd
+              }
+            },
+            eq(null))
+  }
+
+  fun enterSplit_freeformTaskIsMovedToSplit() {
+    val task1 = setUpFreeformTask()
+    val task2 = setUpFreeformTask()
+    val task3 = setUpFreeformTask()
+
+    task1.isFocused = false
+    task2.isFocused = true
+    task3.isFocused = false
+
+    controller.enterSplit(DEFAULT_DISPLAY, false)
+
+    verify(splitScreenController)
+        .requestEnterSplitSelect(
+            task2,
+            any(),
+            SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT,
+            task2.configuration.windowConfiguration.bounds)
+  }
+
+  @Test
+  fun toggleBounds_togglesToStableBounds() {
+    val bounds = Rect(0, 0, 100, 100)
+    val task = setUpFreeformTask(DEFAULT_DISPLAY, bounds)
+
+    controller.toggleDesktopTaskSize(task)
+    // Assert bounds set to stable bounds
+    val wct = getLatestToggleResizeDesktopTaskWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(STABLE_BOUNDS)
+  }
+
+  @Test
+  fun toggleBounds_lastBoundsBeforeMaximizeSaved() {
+    val bounds = Rect(0, 0, 100, 100)
+    val task = setUpFreeformTask(DEFAULT_DISPLAY, bounds)
+
+    controller.toggleDesktopTaskSize(task)
+    assertThat(desktopModeTaskRepository.removeBoundsBeforeMaximize(task.taskId)).isEqualTo(bounds)
+  }
+
+  @Test
+  fun toggleBounds_togglesFromStableBoundsToLastBoundsBeforeMaximize() {
+    val boundsBeforeMaximize = Rect(0, 0, 100, 100)
+    val task = setUpFreeformTask(DEFAULT_DISPLAY, boundsBeforeMaximize)
+
+    // Maximize
+    controller.toggleDesktopTaskSize(task)
+    task.configuration.windowConfiguration.bounds.set(STABLE_BOUNDS)
+
+    // Restore
+    controller.toggleDesktopTaskSize(task)
+
+    // Assert bounds set to last bounds before maximize
+    val wct = getLatestToggleResizeDesktopTaskWct()
+    assertThat(findBoundsChange(wct, task)).isEqualTo(boundsBeforeMaximize)
+  }
+
+  @Test
+  fun toggleBounds_removesLastBoundsBeforeMaximizeAfterRestoringBounds() {
+    val boundsBeforeMaximize = Rect(0, 0, 100, 100)
+    val task = setUpFreeformTask(DEFAULT_DISPLAY, boundsBeforeMaximize)
+
+    // Maximize
+    controller.toggleDesktopTaskSize(task)
+    task.configuration.windowConfiguration.bounds.set(STABLE_BOUNDS)
+
+    // Restore
+    controller.toggleDesktopTaskSize(task)
+
+    // Assert last bounds before maximize removed after use
+    assertThat(desktopModeTaskRepository.removeBoundsBeforeMaximize(task.taskId)).isNull()
+  }
+
+  private val desktopWallpaperIntent: Intent
+    get() = Intent(context, DesktopWallpaperActivity::class.java)
+
+  private fun setUpFreeformTask(
+      displayId: Int = DEFAULT_DISPLAY,
+      bounds: Rect? = null
+  ): RunningTaskInfo {
+    val task = createFreeformTask(displayId, bounds)
+    whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
+    desktopModeTaskRepository.addActiveTask(displayId, task.taskId)
+    desktopModeTaskRepository.addOrMoveFreeformTaskToTop(displayId, task.taskId)
+    runningTasks.add(task)
+    return task
+  }
+
+  private fun setUpHomeTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo {
+    val task = createHomeTask(displayId)
+    whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
+    runningTasks.add(task)
+    return task
+  }
+
+  private fun setUpFullscreenTask(
+      displayId: Int = DEFAULT_DISPLAY,
+      isResizable: Boolean = true,
+      windowingMode: Int = WINDOWING_MODE_FULLSCREEN,
+      deviceOrientation: Int = ORIENTATION_LANDSCAPE,
+      screenOrientation: Int = SCREEN_ORIENTATION_UNSPECIFIED,
+      shouldLetterbox: Boolean = false
+  ): RunningTaskInfo {
+    val task = createFullscreenTask(displayId)
+    val activityInfo = ActivityInfo()
+    activityInfo.screenOrientation = screenOrientation
+    with(task) {
+      topActivityInfo = activityInfo
+      isResizeable = isResizable
+      configuration.orientation = deviceOrientation
+      configuration.windowConfiguration.windowingMode = windowingMode
+
+      if (shouldLetterbox) {
+        if (deviceOrientation == ORIENTATION_LANDSCAPE &&
+            screenOrientation == SCREEN_ORIENTATION_PORTRAIT) {
+          // Letterbox to portrait size
+          appCompatTaskInfo.topActivityBoundsLetterboxed = true
+          appCompatTaskInfo.topActivityLetterboxWidth = 1200
+          appCompatTaskInfo.topActivityLetterboxHeight = 1600
+        } else if (deviceOrientation == ORIENTATION_PORTRAIT &&
+            screenOrientation == SCREEN_ORIENTATION_LANDSCAPE) {
+          // Letterbox to landscape size
+          appCompatTaskInfo.topActivityBoundsLetterboxed = true
+          appCompatTaskInfo.topActivityLetterboxWidth = 1600
+          appCompatTaskInfo.topActivityLetterboxHeight = 1200
         }
-        return arg.value
+      } else {
+        appCompatTaskInfo.topActivityBoundsLetterboxed = false
+      }
+
+      if (deviceOrientation == ORIENTATION_LANDSCAPE) {
+        configuration.windowConfiguration.appBounds =
+            Rect(0, 0, DISPLAY_DIMENSION_LONG, DISPLAY_DIMENSION_SHORT)
+      } else {
+        configuration.windowConfiguration.appBounds =
+            Rect(0, 0, DISPLAY_DIMENSION_SHORT, DISPLAY_DIMENSION_LONG)
+      }
     }
+    whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(true)
+    whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
+    runningTasks.add(task)
+    return task
+  }
 
-    private fun getLatestMoveToDesktopWct(): WindowContainerTransaction {
-        val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
-        if (ENABLE_SHELL_TRANSITIONS) {
-            verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture())
-        } else {
-            verify(shellTaskOrganizer).applyTransaction(arg.capture())
-        }
-        return arg.value
+  private fun setUpLandscapeDisplay() {
+    whenever(displayLayout.width()).thenReturn(DISPLAY_DIMENSION_LONG)
+    whenever(displayLayout.height()).thenReturn(DISPLAY_DIMENSION_SHORT)
+  }
+
+  private fun setUpPortraitDisplay() {
+    whenever(displayLayout.width()).thenReturn(DISPLAY_DIMENSION_SHORT)
+    whenever(displayLayout.height()).thenReturn(DISPLAY_DIMENSION_LONG)
+  }
+
+  private fun setUpSplitScreenTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo {
+    val task = createSplitScreenTask(displayId)
+    whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(true)
+    whenever(splitScreenController.isTaskInSplitScreen(task.taskId)).thenReturn(true)
+    whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
+    runningTasks.add(task)
+    return task
+  }
+
+  private fun markTaskVisible(task: RunningTaskInfo) {
+    desktopModeTaskRepository.updateVisibleFreeformTasks(
+        task.displayId, task.taskId, visible = true)
+  }
+
+  private fun markTaskHidden(task: RunningTaskInfo) {
+    desktopModeTaskRepository.updateVisibleFreeformTasks(
+        task.displayId, task.taskId, visible = false)
+  }
+
+  private fun getLatestWct(
+      @WindowManager.TransitionType type: Int = TRANSIT_OPEN,
+      handlerClass: Class<out TransitionHandler>? = null
+  ): WindowContainerTransaction {
+    val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
+    if (ENABLE_SHELL_TRANSITIONS) {
+      if (handlerClass == null) {
+        verify(transitions).startTransition(eq(type), arg.capture(), isNull())
+      } else {
+        verify(transitions).startTransition(eq(type), arg.capture(), isA(handlerClass))
+      }
+    } else {
+      verify(shellTaskOrganizer).applyTransaction(arg.capture())
     }
+    return arg.value
+  }
 
-    private fun getLatestDragToDesktopWct(): WindowContainerTransaction {
-        val arg: ArgumentCaptor<WindowContainerTransaction> =
-            ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
-        if (ENABLE_SHELL_TRANSITIONS) {
-            verify(dragToDesktopTransitionHandler).finishDragToDesktopTransition(capture(arg))
-        } else {
-            verify(shellTaskOrganizer).applyTransaction(capture(arg))
-        }
-        return arg.value
+  private fun getLatestToggleResizeDesktopTaskWct(): WindowContainerTransaction {
+    val arg: ArgumentCaptor<WindowContainerTransaction> =
+        ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
+    if (ENABLE_SHELL_TRANSITIONS) {
+      verify(toggleResizeDesktopTaskTransitionHandler, atLeastOnce()).startTransition(capture(arg))
+    } else {
+      verify(shellTaskOrganizer).applyTransaction(capture(arg))
     }
+    return arg.value
+  }
 
-    private fun getLatestExitDesktopWct(): WindowContainerTransaction {
-        val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
-        if (ENABLE_SHELL_TRANSITIONS) {
-            verify(exitDesktopTransitionHandler)
-                    .startTransition(eq(TRANSIT_EXIT_DESKTOP_MODE), arg.capture(), any(), any())
-        } else {
-            verify(shellTaskOrganizer).applyTransaction(arg.capture())
-        }
-        return arg.value
+  private fun getLatestMoveToDesktopWct(): WindowContainerTransaction {
+    val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
+    if (ENABLE_SHELL_TRANSITIONS) {
+      verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture(), any())
+    } else {
+      verify(shellTaskOrganizer).applyTransaction(arg.capture())
     }
+    return arg.value
+  }
 
-    private fun findBoundsChange(wct: WindowContainerTransaction, task: RunningTaskInfo): Rect? =
-        wct.changes[task.token.asBinder()]?.configuration?.windowConfiguration?.bounds
-
-
-    private fun verifyWCTNotExecuted() {
-        if (ENABLE_SHELL_TRANSITIONS) {
-            verify(transitions, never()).startTransition(anyInt(), any(), isNull())
-        } else {
-            verify(shellTaskOrganizer, never()).applyTransaction(any())
-        }
+  private fun getLatestDragToDesktopWct(): WindowContainerTransaction {
+    val arg: ArgumentCaptor<WindowContainerTransaction> =
+        ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
+    if (ENABLE_SHELL_TRANSITIONS) {
+      verify(dragToDesktopTransitionHandler).finishDragToDesktopTransition(capture(arg))
+    } else {
+      verify(shellTaskOrganizer).applyTransaction(capture(arg))
     }
+    return arg.value
+  }
 
-    private fun createTransition(
-        task: RunningTaskInfo?,
-        @WindowManager.TransitionType type: Int = TRANSIT_OPEN
-    ): TransitionRequestInfo {
-        return TransitionRequestInfo(type, task, null /* remoteTransition */)
+  private fun getLatestExitDesktopWct(): WindowContainerTransaction {
+    val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
+    if (ENABLE_SHELL_TRANSITIONS) {
+      verify(exitDesktopTransitionHandler).startTransition(any(), arg.capture(), any(), any())
+    } else {
+      verify(shellTaskOrganizer).applyTransaction(arg.capture())
     }
+    return arg.value
+  }
 
-    companion object {
-        const val SECOND_DISPLAY = 2
-        private val STABLE_BOUNDS = Rect(0, 0, 1000, 1000)
+  private fun findBoundsChange(wct: WindowContainerTransaction, task: RunningTaskInfo): Rect? =
+      wct.changes[task.token.asBinder()]?.configuration?.windowConfiguration?.bounds
+
+  private fun verifyWCTNotExecuted() {
+    if (ENABLE_SHELL_TRANSITIONS) {
+      verify(transitions, never()).startTransition(anyInt(), any(), isNull())
+    } else {
+      verify(shellTaskOrganizer, never()).applyTransaction(any())
     }
+  }
+
+  private fun createTransition(
+      task: RunningTaskInfo?,
+      @WindowManager.TransitionType type: Int = TRANSIT_OPEN
+  ): TransitionRequestInfo {
+    return TransitionRequestInfo(type, task, null /* remoteTransition */)
+  }
+
+  companion object {
+    const val SECOND_DISPLAY = 2
+    private val STABLE_BOUNDS = Rect(0, 0, 1000, 1000)
+  }
 }
 
 private fun WindowContainerTransaction.assertIndexInBounds(index: Int) {
-    assertWithMessage("WCT does not have a hierarchy operation at index $index")
-        .that(hierarchyOps.size)
-        .isGreaterThan(index)
+  assertWithMessage("WCT does not have a hierarchy operation at index $index")
+      .that(hierarchyOps.size)
+      .isGreaterThan(index)
 }
 
 private fun WindowContainerTransaction.assertReorderAt(
-        index: Int,
-        task: RunningTaskInfo,
-        toTop: Boolean? = null
+    index: Int,
+    task: RunningTaskInfo,
+    toTop: Boolean? = null
 ) {
-    assertIndexInBounds(index)
-    val op = hierarchyOps[index]
-    assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_REORDER)
-    assertThat(op.container).isEqualTo(task.token.asBinder())
-    toTop?.let { assertThat(op.toTop).isEqualTo(it) }
+  assertIndexInBounds(index)
+  val op = hierarchyOps[index]
+  assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_REORDER)
+  assertThat(op.container).isEqualTo(task.token.asBinder())
+  toTop?.let { assertThat(op.toTop).isEqualTo(it) }
 }
 
 private fun WindowContainerTransaction.assertReorderSequence(vararg tasks: RunningTaskInfo) {
-    for (i in tasks.indices) {
-        assertReorderAt(i, tasks[i])
-    }
+  for (i in tasks.indices) {
+    assertReorderAt(i, tasks[i])
+  }
 }
 
 private fun WindowContainerTransaction.assertRemoveAt(index: Int, token: WindowContainerToken) {
-    assertIndexInBounds(index)
-    val op = hierarchyOps[index]
-    assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_REMOVE_TASK)
-    assertThat(op.container).isEqualTo(token.asBinder())
+  assertIndexInBounds(index)
+  val op = hierarchyOps[index]
+  assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_REMOVE_TASK)
+  assertThat(op.container).isEqualTo(token.asBinder())
 }
 
 private fun WindowContainerTransaction.assertPendingIntentAt(index: Int, intent: Intent) {
-    assertIndexInBounds(index)
-    val op = hierarchyOps[index]
-    assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_PENDING_INTENT)
-    assertThat(op.pendingIntent?.intent?.component).isEqualTo(intent.component)
+  assertIndexInBounds(index)
+  val op = hierarchyOps[index]
+  assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_PENDING_INTENT)
+  assertThat(op.pendingIntent?.intent?.component).isEqualTo(intent.component)
 }
 
 private fun WindowContainerTransaction.assertLaunchTaskAt(
@@ -1860,23 +1846,26 @@
     taskId: Int,
     windowingMode: Int
 ) {
-    val keyLaunchWindowingMode = "android.activity.windowingMode"
+  val keyLaunchWindowingMode = "android.activity.windowingMode"
 
-    assertIndexInBounds(index)
-    val op = hierarchyOps[index]
-    assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_LAUNCH_TASK)
-    assertThat(op.launchOptions?.getInt(LAUNCH_KEY_TASK_ID)).isEqualTo(taskId)
-    assertThat(op.launchOptions?.getInt(keyLaunchWindowingMode, WINDOWING_MODE_UNDEFINED))
-            .isEqualTo(windowingMode)
+  assertIndexInBounds(index)
+  val op = hierarchyOps[index]
+  assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_LAUNCH_TASK)
+  assertThat(op.launchOptions?.getInt(LAUNCH_KEY_TASK_ID)).isEqualTo(taskId)
+  assertThat(op.launchOptions?.getInt(keyLaunchWindowingMode, WINDOWING_MODE_UNDEFINED))
+      .isEqualTo(windowingMode)
 }
+
 private fun WindowContainerTransaction?.anyDensityConfigChange(
     token: WindowContainerToken
 ): Boolean {
-    return this?.changes?.any { change ->
-        change.key == token.asBinder() && ((change.value.configSetMask and CONFIG_DENSITY) != 0)
-    } ?: false
+  return this?.changes?.any { change ->
+    change.key == token.asBinder() && ((change.value.configSetMask and CONFIG_DENSITY) != 0)
+  } ?: false
 }
-private fun createTaskInfo(id: Int) = RecentTaskInfo().apply {
-    taskId = id
-    token = WindowContainerToken(mock(IWindowContainerToken::class.java))
-}
+
+private fun createTaskInfo(id: Int) =
+    RecentTaskInfo().apply {
+      taskId = id
+      token = WindowContainerToken(mock(IWindowContainerToken::class.java))
+    }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
index 2ade3fb..bbf523b 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
@@ -18,6 +18,8 @@
 import com.android.wm.shell.RootTaskDisplayAreaOrganizer
 import com.android.wm.shell.ShellTestCase
 import com.android.wm.shell.TestRunningTaskInfoBuilder
+import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
+import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT
 import com.android.wm.shell.splitscreen.SplitScreenController
 import com.android.wm.shell.transition.Transitions
 import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP
@@ -48,6 +50,7 @@
     @Mock private lateinit var transitions: Transitions
     @Mock private lateinit var taskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer
     @Mock private lateinit var splitScreenController: SplitScreenController
+    @Mock private lateinit var dragAnimator: MoveToDesktopAnimator
 
     private val transactionSupplier = Supplier { mock<SurfaceControl.Transaction>() }
 
@@ -68,7 +71,6 @@
     @Test
     fun startDragToDesktop_animateDragWhenReady() {
         val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
         // Simulate transition is started.
         val transition = startDragToDesktopTransition(task, dragAnimator)
 
@@ -90,36 +92,36 @@
 
     @Test
     fun startDragToDesktop_cancelledBeforeReady_startCancelTransition() {
-        val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
-        // Simulate transition is started and is ready to animate.
-        val transition = startDragToDesktopTransition(task, dragAnimator)
-
-        handler.cancelDragToDesktopTransition()
-
-        handler.startAnimation(
-            transition = transition,
-            info =
-                createTransitionInfo(
-                    type = TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP,
-                    draggedTask = task
-                ),
-            startTransaction = mock(),
-            finishTransaction = mock(),
-            finishCallback = {}
-        )
-
-        // Don't even animate the "drag" since it was already cancelled.
-        verify(dragAnimator, never()).startAnimation()
-        // Instead, start the cancel transition.
+        performEarlyCancel(DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL)
         verify(transitions)
             .startTransition(eq(TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP), any(), eq(handler))
     }
 
     @Test
+    fun startDragToDesktop_cancelledBeforeReady_verifySplitLeftCancel() {
+        performEarlyCancel(DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_LEFT)
+        verify(splitScreenController).requestEnterSplitSelect(
+            any(),
+            any(),
+            eq(SPLIT_POSITION_TOP_OR_LEFT),
+            any()
+        )
+    }
+
+    @Test
+    fun startDragToDesktop_cancelledBeforeReady_verifySplitRightCancel() {
+        performEarlyCancel(DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_RIGHT)
+        verify(splitScreenController).requestEnterSplitSelect(
+            any(),
+            any(),
+            eq(SPLIT_POSITION_BOTTOM_OR_RIGHT),
+            any()
+        )
+    }
+
+    @Test
     fun startDragToDesktop_aborted_finishDropped() {
         val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
         // Simulate transition is started.
         val transition = startDragToDesktopTransition(task, dragAnimator)
         // But the transition was aborted.
@@ -137,14 +139,15 @@
     @Test
     fun startDragToDesktop_aborted_cancelDropped() {
         val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
         // Simulate transition is started.
         val transition = startDragToDesktopTransition(task, dragAnimator)
         // But the transition was aborted.
         handler.onTransitionConsumed(transition, aborted = true, mock())
 
         // Attempt to finish the failed drag start.
-        handler.cancelDragToDesktopTransition()
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL
+        )
 
         // Should not be attempted and state should be reset.
         assertFalse(handler.inProgress)
@@ -153,7 +156,6 @@
     @Test
     fun startDragToDesktop_anotherTransitionInProgress_startDropped() {
         val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
 
         // Simulate attempt to start two drag to desktop transitions.
         startDragToDesktopTransition(task, dragAnimator)
@@ -169,39 +171,63 @@
 
     @Test
     fun cancelDragToDesktop_startWasReady_cancel() {
-        val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
-        whenever(dragAnimator.position).thenReturn(PointF())
-        // Simulate transition is started and is ready to animate.
-        val transition = startDragToDesktopTransition(task, dragAnimator)
-        handler.startAnimation(
-            transition = transition,
-            info =
-                createTransitionInfo(
-                    type = TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP,
-                    draggedTask = task
-                ),
-            startTransaction = mock(),
-            finishTransaction = mock(),
-            finishCallback = {}
-        )
+        startDrag()
 
         // Then user cancelled after it had already started.
-        handler.cancelDragToDesktopTransition()
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL
+        )
 
         // Cancel animation should run since it had already started.
         verify(dragAnimator).cancelAnimator()
     }
 
     @Test
+    fun cancelDragToDesktop_splitLeftCancelType_splitRequested() {
+        startDrag()
+
+        // Then user cancelled it, requesting split.
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_LEFT
+        )
+
+        // Verify the request went through split controller.
+        verify(splitScreenController).requestEnterSplitSelect(
+            any(),
+            any(),
+            eq(SPLIT_POSITION_TOP_OR_LEFT),
+            any()
+        )
+    }
+
+    @Test
+    fun cancelDragToDesktop_splitRightCancelType_splitRequested() {
+        startDrag()
+
+        // Then user cancelled it, requesting split.
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.CANCEL_SPLIT_RIGHT
+        )
+
+        // Verify the request went through split controller.
+        verify(splitScreenController).requestEnterSplitSelect(
+            any(),
+            any(),
+            eq(SPLIT_POSITION_BOTTOM_OR_RIGHT),
+            any()
+        )
+    }
+
+    @Test
     fun cancelDragToDesktop_startWasNotReady_animateCancel() {
         val task = createTask()
-        val dragAnimator = mock<MoveToDesktopAnimator>()
         // Simulate transition is started and is ready to animate.
         startDragToDesktopTransition(task, dragAnimator)
 
         // Then user cancelled before the transition was ready and animated.
-        handler.cancelDragToDesktopTransition()
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL
+        )
 
         // No need to animate the cancel since the start animation couldn't even start.
         verifyZeroInteractions(dragAnimator)
@@ -210,7 +236,9 @@
     @Test
     fun cancelDragToDesktop_transitionNotInProgress_dropCancel() {
         // Then cancel is called before the transition was started.
-        handler.cancelDragToDesktopTransition()
+        handler.cancelDragToDesktopTransition(
+            DragToDesktopTransitionHandler.CancelState.STANDARD_CANCEL
+        )
 
         // Verify cancel is dropped.
         verify(transitions, never()).startTransition(
@@ -233,6 +261,24 @@
         )
     }
 
+    private fun startDrag() {
+        val task = createTask()
+        whenever(dragAnimator.position).thenReturn(PointF())
+        // Simulate transition is started and is ready to animate.
+        val transition = startDragToDesktopTransition(task, dragAnimator)
+        handler.startAnimation(
+            transition = transition,
+            info =
+            createTransitionInfo(
+                type = TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP,
+                draggedTask = task
+            ),
+            startTransaction = mock(),
+            finishTransaction = mock(),
+            finishCallback = {}
+        )
+    }
+
     private fun startDragToDesktopTransition(
         task: RunningTaskInfo,
         dragAnimator: MoveToDesktopAnimator
@@ -250,6 +296,29 @@
         return token
     }
 
+    private fun performEarlyCancel(cancelState: DragToDesktopTransitionHandler.CancelState) {
+        val task = createTask()
+        // Simulate transition is started and is ready to animate.
+        val transition = startDragToDesktopTransition(task, dragAnimator)
+
+        handler.cancelDragToDesktopTransition(cancelState)
+
+        handler.startAnimation(
+            transition = transition,
+            info =
+            createTransitionInfo(
+                type = TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP,
+                draggedTask = task
+            ),
+            startTransaction = mock(),
+            finishTransaction = mock(),
+            finishCallback = {}
+        )
+
+        // Don't even animate the "drag" since it was already cancelled.
+        verify(dragAnimator, never()).startAnimation()
+    }
+
     private fun createTask(
         @WindowingMode windowingMode: Int = WINDOWING_MODE_FULLSCREEN,
         isHome: Boolean = false,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandlerTest.java
index 0d0a08c..b2467e9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandlerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/ExitDesktopTaskTransitionHandlerTest.java
@@ -21,6 +21,8 @@
 
 import static androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread;
 
+import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN;
+
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -45,6 +47,7 @@
 
 import com.android.wm.shell.ShellTestCase;
 import com.android.wm.shell.common.ShellExecutor;
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.transition.Transitions;
 
 import org.junit.Before;
@@ -97,18 +100,18 @@
 
     @Test
     public void testTransitExitDesktopModeAnimation() throws Throwable {
-        final int transitionType = Transitions.TRANSIT_EXIT_DESKTOP_MODE;
+        final int transitionType = TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN;
         final int taskId = 1;
         WindowContainerTransaction wct = new WindowContainerTransaction();
         doReturn(mToken).when(mTransitions)
                 .startTransition(transitionType, wct, mExitDesktopTaskTransitionHandler);
 
-        mExitDesktopTaskTransitionHandler.startTransition(transitionType, wct, mPoint,
-                null);
+        mExitDesktopTaskTransitionHandler.startTransition(DesktopModeTransitionSource.UNKNOWN,
+                wct, mPoint, null);
 
         TransitionInfo.Change change =
                 createChange(WindowManager.TRANSIT_CHANGE, taskId, WINDOWING_MODE_FULLSCREEN);
-        TransitionInfo info = createTransitionInfo(Transitions.TRANSIT_EXIT_DESKTOP_MODE, change);
+        TransitionInfo info = createTransitionInfo(TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN, change);
         ArrayList<Exception> exceptions = new ArrayList<>();
         runOnUiThread(() -> {
             try {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
index a731e53..1b223cf 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
@@ -22,6 +22,8 @@
 import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
 import static android.view.WindowInsetsController.APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND;
 
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.any;
@@ -54,6 +56,7 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.dx.mockito.inline.extended.StaticMockitoSession;
 import com.android.internal.R;
 import com.android.window.flags.Flags;
 import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
@@ -62,14 +65,17 @@
 import com.android.wm.shell.TestRunningTaskInfoBuilder;
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.common.SyncTransactionQueue;
+import com.android.wm.shell.shared.DesktopModeStatus;
 import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.quality.Strictness;
 
 import java.util.function.Supplier;
 
@@ -118,6 +124,7 @@
 
     private final Configuration mConfiguration = new Configuration();
 
+    private StaticMockitoSession mMockitoSession;
     private TestableContext mTestableContext;
 
     /** Set up run before test class. */
@@ -131,6 +138,11 @@
 
     @Before
     public void setUp() {
+        mMockitoSession = mockitoSession()
+                .strictness(Strictness.LENIENT)
+                .spyStatic(DesktopModeStatus.class)
+                .startMocking();
+        when(DesktopModeStatus.useDesktopOverrideDensity()).thenReturn(false);
         doReturn(mMockSurfaceControlViewHost).when(mMockSurfaceControlViewHostFactory).create(
                 any(), any(), any());
         doReturn(mMockTransaction).when(mMockTransactionSupplier).get();
@@ -138,6 +150,11 @@
         mTestableContext.ensureTestableResources();
     }
 
+    @After
+    public void tearDown() {
+        mMockitoSession.finishMocking();
+    }
+
     @Test
     public void testMenusClosedWhenTaskIsInvisible() {
         doReturn(mMockTransaction).when(mMockTransaction).hide(any());
@@ -206,6 +223,7 @@
     @Test
     @DisableFlags(Flags.FLAG_ENABLE_APP_HEADER_WITH_TASK_DENSITY)
     public void updateRelayoutParams_appHeader_usesSystemDensity() {
+        when(DesktopModeStatus.useDesktopOverrideDensity()).thenReturn(true);
         final int systemDensity = mTestableContext.getOrCreateTestableResources().getResources()
                 .getConfiguration().densityDpi;
         final int customTaskDensity = systemDensity + 300;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/HandleMenuTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/HandleMenuTest.kt
new file mode 100644
index 0000000..5582e0f
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/HandleMenuTest.kt
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor
+
+import android.app.ActivityManager
+import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
+import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN
+import android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW
+import android.graphics.Bitmap
+import android.graphics.Color
+import android.graphics.Rect
+import android.platform.test.annotations.RequiresFlagsEnabled
+import android.platform.test.flag.junit.CheckFlagsRule
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.view.Display
+import android.view.LayoutInflater
+import android.view.SurfaceControl
+import android.view.SurfaceControlViewHost
+import android.view.View
+import androidx.test.filters.SmallTest
+import com.android.window.flags.Flags
+import com.android.wm.shell.R
+import com.android.wm.shell.ShellTestCase
+import com.android.wm.shell.TestRunningTaskInfoBuilder
+import com.android.wm.shell.common.DisplayController
+import com.android.wm.shell.common.DisplayLayout
+import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
+import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT
+import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED
+import com.android.wm.shell.splitscreen.SplitScreenController
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalSystemViewContainer
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewHostViewContainer
+import org.junit.Assert.assertTrue
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.Mock
+import org.mockito.Mockito.mock
+import org.mockito.kotlin.any
+import org.mockito.kotlin.whenever
+
+/**
+ * Tests for [HandleMenu].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:HandleMenuTest
+ */
+@SmallTest
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner::class)
+class HandleMenuTest : ShellTestCase() {
+    @JvmField
+    @Rule
+    val mCheckFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
+
+    @Mock
+    private lateinit var mockDesktopWindowDecoration: DesktopModeWindowDecoration
+    @Mock
+    private lateinit var onClickListener: View.OnClickListener
+    @Mock
+    private lateinit var onTouchListener: View.OnTouchListener
+    @Mock
+    private lateinit var appIcon: Bitmap
+    @Mock
+    private lateinit var appName: CharSequence
+    @Mock
+    private lateinit var displayController: DisplayController
+    @Mock
+    private lateinit var splitScreenController: SplitScreenController
+    @Mock
+    private lateinit var displayLayout: DisplayLayout
+    @Mock
+    private lateinit var mockSurfaceControlViewHost: SurfaceControlViewHost
+
+    private lateinit var handleMenu: HandleMenu
+
+    @Before
+    fun setUp() {
+        val mockAdditionalViewHostViewContainer = AdditionalViewHostViewContainer(
+            mock(SurfaceControl::class.java),
+            mockSurfaceControlViewHost,
+        ) {
+            SurfaceControl.Transaction()
+        }
+        val menuView = LayoutInflater.from(context).inflate(
+            R.layout.desktop_mode_window_decor_handle_menu, null)
+        whenever(mockDesktopWindowDecoration.addWindow(
+            anyInt(), any(), any(), any(), anyInt(), anyInt(), anyInt(), anyInt())
+        ).thenReturn(mockAdditionalViewHostViewContainer)
+        whenever(mockAdditionalViewHostViewContainer.view).thenReturn(menuView)
+        whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout)
+        whenever(displayLayout.width()).thenReturn(DISPLAY_BOUNDS.width())
+        whenever(displayLayout.height()).thenReturn(DISPLAY_BOUNDS.height())
+        whenever(displayLayout.isLandscape).thenReturn(true)
+        mockDesktopWindowDecoration.mDecorWindowContext = context
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_ADDITIONAL_WINDOWS_ABOVE_STATUS_BAR)
+    fun testFullscreenMenuUsesSystemViewContainer() {
+        createTaskInfo(WINDOWING_MODE_FULLSCREEN, SPLIT_POSITION_UNDEFINED)
+        val handleMenu = createAndShowHandleMenu()
+        assertTrue(handleMenu.mHandleMenuViewContainer is AdditionalSystemViewContainer)
+        // Verify menu is created at coordinates that, when added to WindowManager,
+        // show at the top-center of display.
+        assertTrue(handleMenu.mHandleMenuPosition.equals(16f, -512f))
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_ADDITIONAL_WINDOWS_ABOVE_STATUS_BAR)
+    fun testFreeformMenu_usesViewHostViewContainer() {
+        createTaskInfo(WINDOWING_MODE_FREEFORM, SPLIT_POSITION_UNDEFINED)
+        handleMenu = createAndShowHandleMenu()
+        assertTrue(handleMenu.mHandleMenuViewContainer is AdditionalViewHostViewContainer)
+        // Verify menu is created near top-left of task.
+        assertTrue(handleMenu.mHandleMenuPosition.equals(12f, 8f))
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_ADDITIONAL_WINDOWS_ABOVE_STATUS_BAR)
+    fun testSplitLeftMenu_usesSystemViewContainer() {
+        createTaskInfo(WINDOWING_MODE_MULTI_WINDOW, SPLIT_POSITION_TOP_OR_LEFT)
+        handleMenu = createAndShowHandleMenu()
+        assertTrue(handleMenu.mHandleMenuViewContainer is AdditionalSystemViewContainer)
+        // Verify menu is created at coordinates that, when added to WindowManager,
+        // show at the top of split left task.
+        assertTrue(handleMenu.mHandleMenuPosition.equals(-624f, -512f))
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_ADDITIONAL_WINDOWS_ABOVE_STATUS_BAR)
+    fun testSplitRightMenu_usesSystemViewContainer() {
+        createTaskInfo(WINDOWING_MODE_MULTI_WINDOW, SPLIT_POSITION_BOTTOM_OR_RIGHT)
+        handleMenu = createAndShowHandleMenu()
+        assertTrue(handleMenu.mHandleMenuViewContainer is AdditionalSystemViewContainer)
+        // Verify menu is created at coordinates that, when added to WindowManager,
+        // show at the top of split right task.
+        assertTrue(handleMenu.mHandleMenuPosition.equals(656f, -512f))
+    }
+
+    private fun createTaskInfo(windowingMode: Int, splitPosition: Int) {
+        val taskDescriptionBuilder = ActivityManager.TaskDescription.Builder()
+            .setBackgroundColor(Color.YELLOW)
+        val bounds = when (windowingMode) {
+            WINDOWING_MODE_FULLSCREEN -> DISPLAY_BOUNDS
+            WINDOWING_MODE_FREEFORM -> FREEFORM_BOUNDS
+            WINDOWING_MODE_MULTI_WINDOW -> {
+                if (splitPosition == SPLIT_POSITION_TOP_OR_LEFT) {
+                    SPLIT_LEFT_BOUNDS
+                } else {
+                    SPLIT_RIGHT_BOUNDS
+                }
+            }
+            else -> error("Unsupported windowing mode")
+        }
+        mockDesktopWindowDecoration.mTaskInfo = TestRunningTaskInfoBuilder()
+            .setDisplayId(Display.DEFAULT_DISPLAY)
+            .setTaskDescriptionBuilder(taskDescriptionBuilder)
+            .setWindowingMode(windowingMode)
+            .setBounds(bounds)
+            .setVisible(true)
+            .build()
+        // Calculate captionX similar to how WindowDecoration calculates it.
+        whenever(mockDesktopWindowDecoration.captionX).thenReturn(
+            (mockDesktopWindowDecoration.mTaskInfo.configuration.windowConfiguration
+                .bounds.width() - context.resources.getDimensionPixelSize(
+                R.dimen.desktop_mode_fullscreen_decor_caption_width)) / 2)
+        whenever(splitScreenController.getSplitPosition(any())).thenReturn(splitPosition)
+        whenever(splitScreenController.getStageBounds(any(), any())).thenAnswer {
+            (it.arguments.first() as Rect).set(SPLIT_LEFT_BOUNDS)
+        }
+    }
+
+    private fun createAndShowHandleMenu(): HandleMenu {
+        val layoutId = if (mockDesktopWindowDecoration.mTaskInfo.isFreeform) {
+            R.layout.desktop_mode_app_header
+        } else {
+            R.layout.desktop_mode_app_header
+        }
+        val handleMenu = HandleMenu(mockDesktopWindowDecoration, layoutId,
+            onClickListener, onTouchListener, appIcon, appName, displayController,
+            splitScreenController, true /* shouldShowWindowingPill */,
+            50 /* captionHeight */ )
+        handleMenu.show()
+        return handleMenu
+    }
+
+    companion object {
+        private val DISPLAY_BOUNDS = Rect(0, 0, 2560, 1600)
+        private val FREEFORM_BOUNDS = Rect(500, 500, 2000, 1200)
+        private val SPLIT_LEFT_BOUNDS = Rect(0, 0, 1280, 1600)
+        private val SPLIT_RIGHT_BOUNDS = Rect(1280, 0, 2560, 1600)
+    }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/ResizeVeilTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/ResizeVeilTest.kt
index 5da57c5..a07be79 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/ResizeVeilTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/ResizeVeilTest.kt
@@ -150,7 +150,7 @@
     fun showVeil() {
         val veil = createResizeVeil()
 
-        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), false /* fadeIn */)
+        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), taskInfo, false /* fadeIn */)
 
         verify(mockTransaction).show(mockResizeVeilSurface)
         verify(mockTransaction).show(mockBackgroundSurface)
@@ -162,7 +162,7 @@
     fun showVeil_displayUnavailable_doesNotShow() {
         val veil = createResizeVeil(withDisplayAvailable = false)
 
-        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), false /* fadeIn */)
+        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), taskInfo, false /* fadeIn */)
 
         verify(mockTransaction, never()).show(mockResizeVeilSurface)
         verify(mockTransaction, never()).show(mockBackgroundSurface)
@@ -174,8 +174,8 @@
     fun showVeil_alreadyVisible_doesNotShowAgain() {
         val veil = createResizeVeil()
 
-        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), false /* fadeIn */)
-        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), false /* fadeIn */)
+        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), taskInfo, false /* fadeIn */)
+        veil.showVeil(mockTransaction, mock(), Rect(0, 0, 100, 100), taskInfo, false /* fadeIn */)
 
         verify(mockTransaction, times(1)).show(mockResizeVeilSurface)
         verify(mockTransaction, times(1)).show(mockBackgroundSurface)
@@ -188,7 +188,13 @@
         val veil = createResizeVeil(parent = mock())
 
         val newParent = mock<SurfaceControl>()
-        veil.showVeil(mockTransaction, newParent, Rect(0, 0, 100, 100), false /* fadeIn */)
+        veil.showVeil(
+            mockTransaction,
+            newParent,
+            Rect(0, 0, 100, 100),
+            taskInfo,
+            false /* fadeIn */
+        )
 
         verify(mockTransaction).reparent(mockResizeVeilSurface, newParent)
     }
@@ -212,11 +218,11 @@
             context,
             mockDisplayController,
             mockAppIcon,
-            taskInfo,
             parent,
             { mockTransaction },
             mockSurfaceControlBuilderFactory,
-            mockSurfaceControlViewHostFactory
+            mockSurfaceControlViewHostFactory,
+            taskInfo
         )
     }
 }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
index 4831081..e73069a 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
@@ -76,6 +76,7 @@
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.shared.DesktopModeStatus;
 import com.android.wm.shell.tests.R;
+import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewContainer;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -371,7 +372,7 @@
     }
 
     @Test
-    public void testAddWindow() {
+    public void testAddViewHostViewContainer() {
         final Display defaultDisplay = mock(Display.class);
         doReturn(defaultDisplay).when(mMockDisplayController)
                 .getDisplay(Display.DEFAULT_DISPLAY);
@@ -393,6 +394,7 @@
         final ActivityManager.RunningTaskInfo taskInfo = new TestRunningTaskInfoBuilder()
                 .setDisplayId(Display.DEFAULT_DISPLAY)
                 .setTaskDescriptionBuilder(taskDescriptionBuilder)
+                .setWindowingMode(WINDOWING_MODE_FREEFORM)
                 .setBounds(TASK_BOUNDS)
                 .setPositionInParent(TASK_POSITION_IN_PARENT.x, TASK_POSITION_IN_PARENT.y)
                 .setVisible(true)
@@ -407,7 +409,7 @@
                 createMockSurfaceControlBuilder(additionalWindowSurface);
         mMockSurfaceControlBuilders.add(additionalWindowSurfaceBuilder);
 
-        WindowDecoration.AdditionalWindow additionalWindow = windowDecor.addTestWindow();
+        windowDecor.addTestViewContainer();
 
         verify(additionalWindowSurfaceBuilder).setContainerLayer();
         verify(additionalWindowSurfaceBuilder).setParent(decorContainerSurface);
@@ -421,12 +423,6 @@
         verify(mMockSurfaceControlAddWindowT).show(additionalWindowSurface);
         verify(mMockSurfaceControlViewHostFactory, Mockito.times(2))
                 .create(any(), eq(defaultDisplay), any());
-        assertThat(additionalWindow.mWindowViewHost).isNotNull();
-
-        additionalWindow.releaseView();
-
-        assertThat(additionalWindow.mWindowViewHost).isNull();
-        assertThat(additionalWindow.mWindowSurface).isNull();
     }
 
     @Test
@@ -905,16 +901,16 @@
                     mMockWindowContainerTransaction, mMockView, mRelayoutResult);
         }
 
-        private WindowDecoration.AdditionalWindow addTestWindow() {
+        private AdditionalViewContainer addTestViewContainer() {
             final Resources resources = mDecorWindowContext.getResources();
-            int width = loadDimensionPixelSize(resources, mCaptionMenuWidthId);
-            int height = loadDimensionPixelSize(resources, mRelayoutParams.mCaptionHeightId);
-            String name = "Test Window";
-            WindowDecoration.AdditionalWindow additionalWindow =
+            final int width = loadDimensionPixelSize(resources, mCaptionMenuWidthId);
+            final int height = loadDimensionPixelSize(resources, mRelayoutParams.mCaptionHeightId);
+            final String name = "Test Window";
+            final AdditionalViewContainer additionalViewContainer =
                     addWindow(R.layout.desktop_mode_window_decor_handle_menu, name,
                             mMockSurfaceControlAddWindowT, mMockSurfaceSyncGroup, 0 /* x */,
                             0 /* y */, width, height);
-            return additionalWindow;
+            return additionalViewContainer;
         }
     }
 }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainerTest.kt
new file mode 100644
index 0000000..d3e996b
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalSystemViewContainerTest.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor.additionalviewcontainer
+
+import android.content.Context
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.view.LayoutInflater
+import android.view.View
+import android.view.WindowManager
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.R
+import com.android.wm.shell.ShellTestCase
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+/**
+ * Tests for [AdditionalSystemViewContainer].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:AdditionalSystemViewContainerTest
+ */
+@SmallTest
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner::class)
+class AdditionalSystemViewContainerTest : ShellTestCase() {
+    @Mock
+    private lateinit var mockView: View
+    @Mock
+    private lateinit var mockLayoutInflater: LayoutInflater
+    @Mock
+    private lateinit var mockContext: Context
+    @Mock
+    private lateinit var mockWindowManager: WindowManager
+    private lateinit var viewContainer: AdditionalSystemViewContainer
+
+    @Before
+    fun setUp() {
+        whenever(mockContext.getSystemService(WindowManager::class.java))
+            .thenReturn(mockWindowManager)
+        whenever(mockContext.getSystemService(Context
+            .LAYOUT_INFLATER_SERVICE)).thenReturn(mockLayoutInflater)
+        whenever(mockLayoutInflater.inflate(
+            R.layout.desktop_mode_window_decor_handle_menu, null)).thenReturn(mockView)
+    }
+
+    @Test
+    fun testReleaseView_ViewRemoved() {
+        viewContainer = AdditionalSystemViewContainer(
+            mockContext,
+            R.layout.desktop_mode_window_decor_handle_menu,
+            TASK_ID,
+            X,
+            Y,
+            WIDTH,
+            HEIGHT
+        )
+        verify(mockWindowManager).addView(eq(mockView), any())
+        viewContainer.releaseView()
+        verify(mockWindowManager).removeViewImmediate(mockView)
+    }
+
+    companion object {
+        private const val X = 500
+        private const val Y = 50
+        private const val WIDTH = 400
+        private const val HEIGHT = 600
+        private const val TASK_ID = 5
+    }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainerTest.kt
new file mode 100644
index 0000000..82d557a
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/additionalviewcontainer/AdditionalViewHostViewContainerTest.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.wm.shell.windowdecor.additionalviewcontainer
+
+import android.testing.AndroidTestingRunner
+import android.view.SurfaceControl
+import android.view.SurfaceControlViewHost
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.ShellTestCase
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+import java.util.function.Supplier
+
+/**
+ * Tests for [AdditionalViewHostViewContainer].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:AdditionalViewHostViewContainerTest
+ */
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+class AdditionalViewHostViewContainerTest : ShellTestCase() {
+    @Mock
+    private lateinit var mockTransactionSupplier: Supplier<SurfaceControl.Transaction>
+    @Mock
+    private lateinit var mockTransaction: SurfaceControl.Transaction
+    @Mock
+    private lateinit var mockSurface: SurfaceControl
+    @Mock
+    private lateinit var mockViewHost: SurfaceControlViewHost
+    private lateinit var viewContainer: AdditionalViewHostViewContainer
+
+    @Before
+    fun setUp() {
+        whenever(mockTransactionSupplier.get()).thenReturn(mockTransaction)
+    }
+
+    @Test
+    fun testReleaseView_ViewRemoved() {
+        viewContainer = AdditionalViewHostViewContainer(
+            mockSurface,
+            mockViewHost,
+            mockTransactionSupplier
+        )
+        viewContainer.releaseView()
+        verify(mockViewHost).release()
+        verify(mockTransaction).remove(mockSurface)
+        verify(mockTransaction).apply()
+    }
+}
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 68befff..e618245 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -926,8 +926,8 @@
 
     //printf("USING Zip '%s'\n", pEntry->getFileName());
 
-    if (!pZipFile->getEntryInfo(entry, &method, &uncompressedLen, NULL, NULL,
-            NULL, NULL))
+    if (!pZipFile->getEntryInfo(entry, &method, &uncompressedLen, nullptr, nullptr,
+            nullptr, nullptr, nullptr))
     {
         ALOGW("getEntryInfo failed\n");
         return NULL;
diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp
index 839c7b6..10651cd 100644
--- a/libs/androidfw/ZipFileRO.cpp
+++ b/libs/androidfw/ZipFileRO.cpp
@@ -119,14 +119,6 @@
  * appear to be bogus.
  */
 bool ZipFileRO::getEntryInfo(ZipEntryRO entry, uint16_t* pMethod,
- uint32_t* pUncompLen, uint32_t* pCompLen, off64_t* pOffset,
- uint32_t* pModWhen, uint32_t* pCrc32) const
-{
-     return getEntryInfo(entry, pMethod, pUncompLen, pCompLen, pOffset, pModWhen,
-      pCrc32, nullptr);
-}
-
-bool ZipFileRO::getEntryInfo(ZipEntryRO entry, uint16_t* pMethod,
     uint32_t* pUncompLen, uint32_t* pCompLen, off64_t* pOffset,
     uint32_t* pModWhen, uint32_t* pCrc32, uint16_t* pExtraFieldSize) const
 {
diff --git a/libs/androidfw/fuzz/resxmlparser_fuzzer/resxmlparser_fuzzer.cpp b/libs/androidfw/fuzz/resxmlparser_fuzzer/resxmlparser_fuzzer.cpp
index 829a396..a218a1f 100644
--- a/libs/androidfw/fuzz/resxmlparser_fuzzer/resxmlparser_fuzzer.cpp
+++ b/libs/androidfw/fuzz/resxmlparser_fuzzer/resxmlparser_fuzzer.cpp
@@ -52,10 +52,11 @@
 
     // Populate the DynamicRefTable with fuzzed data
     populateDynamicRefTableWithFuzzedData(*dynamic_ref_table, fuzzedDataProvider);
-
-    auto tree = android::ResXMLTree(std::move(dynamic_ref_table));
-
     std::vector<uint8_t> xmlData = fuzzedDataProvider.ConsumeRemainingBytes<uint8_t>();
+
+    // Make sure the object here outlives the vector it's set to, otherwise it will try
+    // accessing an already freed buffer and crash.
+    auto tree = android::ResXMLTree(std::move(dynamic_ref_table));
     if (tree.setTo(xmlData.data(), xmlData.size()) != android::NO_ERROR) {
         return 0; // Exit early if unable to parse XML data
     }
diff --git a/libs/androidfw/include/androidfw/ZipFileRO.h b/libs/androidfw/include/androidfw/ZipFileRO.h
index f7c5007..0f3f19c 100644
--- a/libs/androidfw/include/androidfw/ZipFileRO.h
+++ b/libs/androidfw/include/androidfw/ZipFileRO.h
@@ -147,10 +147,6 @@
      * Returns "false" if "entry" is bogus or if the data in the Zip file
      * appears to be bad.
      */
-    bool getEntryInfo(ZipEntryRO entry, uint16_t* pMethod, uint32_t* pUncompLen,
-        uint32_t* pCompLen, off64_t* pOffset, uint32_t* pModWhen,
-        uint32_t* pCrc32) const;
-
     bool getEntryInfo(ZipEntryRO entry, uint16_t* pMethod,
         uint32_t* pUncompLen, uint32_t* pCompLen, off64_t* pOffset,
         uint32_t* pModWhen, uint32_t* pCrc32, uint16_t* pExtraFieldSize) const;
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index 7c1c5b4..341599e 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -115,6 +115,7 @@
         "libharfbuzz_ng",
         "libminikin",
         "server_configurable_flags",
+        "libaconfig_storage_read_api_cc"
     ],
 
     static_libs: [
diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp
index 325bdd6..5d3bc89 100644
--- a/libs/hwui/Properties.cpp
+++ b/libs/hwui/Properties.cpp
@@ -39,6 +39,9 @@
 constexpr bool hdr_10bit_plus() {
     return false;
 }
+constexpr bool initialize_gl_always() {
+    return false;
+}
 }  // namespace hwui_flags
 #endif
 
@@ -257,5 +260,9 @@
     return drawingEnabled == DrawingEnabled::On;
 }
 
+bool Properties::initializeGlAlways() {
+    return base::GetBoolProperty(PROPERTY_INITIALIZE_GL_ALWAYS, hwui_flags::initialize_gl_always());
+}
+
 }  // namespace uirenderer
 }  // namespace android
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index c1510d9..d3176f6 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -229,6 +229,11 @@
 
 #define PROPERTY_8BIT_HDR_HEADROOM "debug.hwui.8bit_hdr_headroom"
 
+/**
+ * Whether to initialize GL even when HWUI is running Vulkan.
+ */
+#define PROPERTY_INITIALIZE_GL_ALWAYS "debug.hwui.initialize_gl_always"
+
 ///////////////////////////////////////////////////////////////////////////////
 // Misc
 ///////////////////////////////////////////////////////////////////////////////
@@ -368,6 +373,8 @@
     static bool isDrawingEnabled();
     static void setDrawingEnabled(bool enable);
 
+    static bool initializeGlAlways();
+
 private:
     static StretchEffectBehavior stretchEffectBehavior;
     static ProfileType sProfileType;
diff --git a/libs/hwui/aconfig/hwui_flags.aconfig b/libs/hwui/aconfig/hwui_flags.aconfig
index 50f8b39..cd3ae53 100644
--- a/libs/hwui/aconfig/hwui_flags.aconfig
+++ b/libs/hwui/aconfig/hwui_flags.aconfig
@@ -90,3 +90,10 @@
   description: "Add canvas#drawRegion API"
   bug: "318612129"
 }
+
+flag {
+  name: "initialize_gl_always"
+  namespace: "core_graphics"
+  description: "Initialize GL even when HWUI is set to use Vulkan. This improves app startup time for apps using GL."
+  bug: "335172671"
+}
diff --git a/libs/hwui/apex/jni_runtime.cpp b/libs/hwui/apex/jni_runtime.cpp
index 6ace396..15b2bac 100644
--- a/libs/hwui/apex/jni_runtime.cpp
+++ b/libs/hwui/apex/jni_runtime.cpp
@@ -192,5 +192,14 @@
         // Preload Vulkan driver if HWUI renders with Vulkan backend.
         uint32_t apiVersion;
         vkEnumerateInstanceVersion(&apiVersion);
+
+        if (Properties::initializeGlAlways()) {
+            // Even though HWUI is rendering with Vulkan, some apps still use
+            // GL. Preload GL driver just in case. Since this happens prior to
+            // forking from the zygote, apps that do not use GL are unaffected.
+            // Any memory that (E)GL uses for this call is in shared memory,
+            // and this call only happens once.
+            eglGetDisplay(EGL_DEFAULT_DISPLAY);
+        }
     }
 }
diff --git a/libs/hwui/effects/GainmapRenderer.cpp b/libs/hwui/effects/GainmapRenderer.cpp
index 0a30c6c..eac0360 100644
--- a/libs/hwui/effects/GainmapRenderer.cpp
+++ b/libs/hwui/effects/GainmapRenderer.cpp
@@ -96,6 +96,7 @@
 #ifdef __ANDROID__
 
 static constexpr char gGainmapSKSL[] = R"SKSL(
+    uniform shader linearBase;
     uniform shader base;
     uniform shader gainmap;
     uniform colorFilter workingSpaceToLinearSrgb;
@@ -117,7 +118,11 @@
     }
 
     half4 main(float2 coord) {
-        half4 S = base.eval(coord);
+        if (W == 0.0) {
+            return base.eval(coord);
+        }
+
+        half4 S = linearBase.eval(coord);
         half4 G = gainmap.eval(coord);
         if (gainmapIsAlpha == 1) {
             G = half4(G.a, G.a, G.a, 1.0);
@@ -186,8 +191,10 @@
                 SkColorFilterPriv::MakeColorSpaceXform(baseColorSpace, gainmapMathColorSpace);
 
         // The base image shader will convert into the color space in which the gainmap is applied.
-        auto baseImageShader = baseImage->makeRawShader(tileModeX, tileModeY, samplingOptions)
-                                       ->makeWithColorFilter(colorXformSdrToGainmap);
+        auto linearBaseImageShader = baseImage->makeRawShader(tileModeX, tileModeY, samplingOptions)
+                                             ->makeWithColorFilter(colorXformSdrToGainmap);
+
+        auto baseImageShader = baseImage->makeShader(tileModeX, tileModeY, samplingOptions);
 
         // The gainmap image shader will ignore any color space that the gainmap has.
         const SkMatrix gainmapRectToDstRect =
@@ -201,6 +208,7 @@
         auto colorXformGainmapToDst = SkColorFilterPriv::MakeColorSpaceXform(
                 gainmapMathColorSpace, SkColorSpace::MakeSRGBLinear());
 
+        mBuilder.child("linearBase") = std::move(linearBaseImageShader);
         mBuilder.child("base") = std::move(baseImageShader);
         mBuilder.child("gainmap") = std::move(gainmapImageShader);
         mBuilder.child("workingSpaceToLinearSrgb") = std::move(colorXformGainmapToDst);
diff --git a/libs/input/Android.bp b/libs/input/Android.bp
index 7b7ccf5..7a82938 100644
--- a/libs/input/Android.bp
+++ b/libs/input/Android.bp
@@ -46,7 +46,6 @@
         "liblog",
         "libutils",
         "libgui",
-        "libui",
         "libinput",
     ],
 
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index efbf8da..eeb4853 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -52,6 +52,7 @@
     // Methods for MediaRouter2
     List<MediaRoute2Info> getSystemRoutes(String callerPackageName, boolean isProxyRouter);
     RoutingSessionInfo getSystemSessionInfo();
+    boolean showMediaOutputSwitcherWithRouter2(String packageName);
 
     void registerRouter2(IMediaRouter2 router, String packageName);
     void unregisterRouter2(IMediaRouter2 router);
@@ -97,5 +98,5 @@
     void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
             String sessionId, int volume);
     void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId, String sessionId);
-    boolean showMediaOutputSwitcher(String packageName);
+    boolean showMediaOutputSwitcherWithProxyRouter(IMediaRouter2Manager manager);
 }
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 5672cd5..0667bfd 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -2666,8 +2666,11 @@
 
         @Override
         public boolean showSystemOutputSwitcher() {
-            throw new UnsupportedOperationException(
-                    "Cannot show system output switcher from a privileged router.");
+            try {
+                return mMediaRouterService.showMediaOutputSwitcherWithProxyRouter(mClient);
+            } catch (RemoteException ex) {
+                throw ex.rethrowFromSystemServer();
+            }
         }
 
         /** Gets the list of all discovered routes. */
@@ -3539,7 +3542,7 @@
         public boolean showSystemOutputSwitcher() {
             synchronized (mLock) {
                 try {
-                    return mMediaRouterService.showMediaOutputSwitcher(mImpl.getPackageName());
+                    return mMediaRouterService.showMediaOutputSwitcherWithRouter2(mPackageName);
                 } catch (RemoteException ex) {
                     ex.rethrowFromSystemServer();
                 }
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index 86113df..47e3a0f 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -921,9 +921,13 @@
                         + " ignored: failure to find mimeType (no access from this context?)");
                 return;
             }
-            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) {
+            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
+                    || mimeType.equals("application/x-flac")
+                    // also check for video ringtones
+                    || mimeType.startsWith("video/") || mimeType.equals("application/mp4"))) {
                 Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri
-                        + " ignored: associated mimeType:" + mimeType + " is not an audio type");
+                        + " ignored: associated MIME type:" + mimeType
+                        + " is not a recognized audio or video type");
                 return;
             }
         }
diff --git a/media/tests/AudioPolicyTest/src/com/android/audiopolicytest/AudioPolicyDeathTest.java b/media/tests/AudioPolicyTest/src/com/android/audiopolicytest/AudioPolicyDeathTest.java
index 48c51af..61670e9 100644
--- a/media/tests/AudioPolicyTest/src/com/android/audiopolicytest/AudioPolicyDeathTest.java
+++ b/media/tests/AudioPolicyTest/src/com/android/audiopolicytest/AudioPolicyDeathTest.java
@@ -128,7 +128,7 @@
                         res.getInt(mContext.getResources().getString(R.string.status_key)));
             });
 
-            // Launch process registering a dynamic auido policy and dying after RECORD_TIME_MS ms
+            // Launch process registering a dynamic audio policy and dying after RECORD_TIME_MS ms
             // RECORD_TIME_MS must be shorter than PLAYBACK_TIME_MS
             Intent intent = new Intent(mContext, AudioPolicyDeathTestActivity.class);
             intent.putExtra(mContext.getResources().getString(R.string.capture_duration_key),
diff --git a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
index a470f93..3cf0a4d 100644
--- a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
+++ b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
@@ -412,7 +412,7 @@
                             false);
                     if (!mOnHost && !autoTransact) {
                         Log.e(TAG, "Ignoring polling-loop-filter " + plf
-                                + " for offhost service that isn't autoTranact");
+                                + " for offhost service that isn't autoTransact");
                     } else {
                         mAutoTransact.put(plf, autoTransact);
                     }
@@ -429,7 +429,7 @@
                             false);
                     if (!mOnHost && !autoTransact) {
                         Log.e(TAG, "Ignoring polling-loop-filter " + plf
-                                + " for offhost service that isn't autoTranact");
+                                + " for offhost service that isn't autoTransact");
                     } else {
                         mAutoTransactPatterns.put(Pattern.compile(plf), autoTransact);
                     }
@@ -1028,6 +1028,9 @@
         pw.println("    Settings Activity: " + mSettingsActivityName);
         pw.println("    Requires Device Unlock: " + mRequiresDeviceUnlock);
         pw.println("    Requires Device ScreenOn: " + mRequiresDeviceScreenOn);
+        pw.println("    Should Default to Observe Mode: " + mShouldDefaultToObserveMode);
+        pw.println("    Auto-Transact Mapping: " + mAutoTransact);
+        pw.println("    Auto-Transact Patterns: " + mAutoTransactPatterns);
     }
 
 
@@ -1081,6 +1084,27 @@
             proto.end(token);
         }
         proto.write(ApduServiceInfoProto.SETTINGS_ACTIVITY_NAME, mSettingsActivityName);
+        proto.write(ApduServiceInfoProto.SHOULD_DEFAULT_TO_OBSERVE_MODE,
+                mShouldDefaultToObserveMode);
+        {
+            long token = proto.start(ApduServiceInfoProto.AUTO_TRANSACT_MAPPING);
+            for (Map.Entry<String, Boolean> entry : mAutoTransact.entrySet()) {
+                proto.write(ApduServiceInfoProto.AutoTransactMapping.AID, entry.getKey());
+                proto.write(ApduServiceInfoProto.AutoTransactMapping.SHOULD_AUTO_TRANSACT,
+                        entry.getValue());
+            }
+            proto.end(token);
+        }
+        {
+            long token = proto.start(ApduServiceInfoProto.AUTO_TRANSACT_PATTERNS);
+            for (Map.Entry<Pattern, Boolean> entry : mAutoTransactPatterns.entrySet()) {
+                proto.write(ApduServiceInfoProto.AutoTransactPattern.REGEXP_PATTERN,
+                        entry.getKey().pattern());
+                proto.write(ApduServiceInfoProto.AutoTransactPattern.SHOULD_AUTO_TRANSACT,
+                        entry.getValue());
+            }
+            proto.end(token);
+        }
     }
 
     private static final Pattern AID_PATTERN = Pattern.compile("[0-9A-Fa-f]{10,32}\\*?\\#?");
diff --git a/packages/CarrierDefaultApp/res/values-mn/strings.xml b/packages/CarrierDefaultApp/res/values-mn/strings.xml
index 3476ff0..edafaac 100644
--- a/packages/CarrierDefaultApp/res/values-mn/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-mn/strings.xml
@@ -10,7 +10,7 @@
     <string name="no_mobile_data_connection_title" msgid="7449525772416200578">"Мобайл дата холболт алга"</string>
     <string name="no_mobile_data_connection" msgid="544980465184147010">"Дата эсвэл роуминг төлөвлөгөөг %s-р нэмнэ үү"</string>
     <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"Мобайл датаны төлөв"</string>
-    <string name="action_bar_label" msgid="4290345990334377177">"Мобайл сүлжээнд нэвтрэх"</string>
+    <string name="action_bar_label" msgid="4290345990334377177">"Хөдөлгөөнт холбооны сүлжээнд нэвтрэх"</string>
     <string name="ssl_error_warning" msgid="3127935140338254180">"Таны холбогдох гэж буй сүлжээ аюулгүй байдлын асуудалтай байна."</string>
     <string name="ssl_error_example" msgid="6188711843183058764">"Жишээлбэл нэвтрэх хуудас нь харагдаж буй байгууллагынх биш байж болно."</string>
     <string name="ssl_error_continue" msgid="1138548463994095584">"Ямар ч тохиолдолд хөтчөөр үргэлжлүүлэх"</string>
diff --git a/packages/CompanionDeviceManager/Android.bp b/packages/CompanionDeviceManager/Android.bp
index ce32ec4..4ef1c2b 100644
--- a/packages/CompanionDeviceManager/Android.bp
+++ b/packages/CompanionDeviceManager/Android.bp
@@ -48,4 +48,9 @@
     platform_apis: true,
 
     generate_product_characteristics_rro: true,
+
+    optimize: {
+        optimize: true,
+        optimized_shrink_resources: true,
+    },
 }
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index ae9e23f..a40f2bd 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -63,7 +63,7 @@
     <string name="permission_storage" msgid="6831099350839392343">"Fotos i contingut multimèdia"</string>
     <string name="permission_notifications" msgid="4099418516590632909">"Notificacions"</string>
     <string name="permission_app_streaming" msgid="6009695219091526422">"Aplicacions"</string>
-    <string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Reproducció en línia"</string>
+    <string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Estríming"</string>
     <string name="permission_phone_summary" msgid="8246321093970051702">"Fer i gestionar trucades telefòniques"</string>
     <string name="permission_call_logs_summary" msgid="7545243592757693321">"Llegir i escriure el registre de trucades del telèfon"</string>
     <string name="permission_sms_summary" msgid="8499509535410068616">"Enviar i llegir missatges SMS"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index b627998..cc17655 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string>
+    <string name="app_label" msgid="4470785958457506021">"Upravitelj popratnih uređaja"</string>
     <string name="confirmation_title" msgid="2244241995958340998">"Želite li dopustiti aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_watch" msgid="576290739483672360">"satom"</string>
     <string name="chooser_title_non_profile" msgid="6035023914517087400">"Odaberite uređaj kojim će upravljati aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;"</string>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index 40d3be5..3575ff3 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -59,7 +59,7 @@
     <string name="permission_microphone" msgid="2152206421428732949">"Microfono"</string>
     <string name="permission_call_logs" msgid="5546761417694586041">"Registri chiamate"</string>
     <string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivi nelle vicinanze"</string>
-    <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambia uscita conten. multim."</string>
+    <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambia uscita  multimediale"</string>
     <string name="permission_storage" msgid="6831099350839392343">"Foto e contenuti multimediali"</string>
     <string name="permission_notifications" msgid="4099418516590632909">"Notifiche"</string>
     <string name="permission_app_streaming" msgid="6009695219091526422">"App"</string>
diff --git a/packages/CredentialManager/res/values-kn/strings.xml b/packages/CredentialManager/res/values-kn/strings.xml
index bfc31a1..897f444 100644
--- a/packages/CredentialManager/res/values-kn/strings.xml
+++ b/packages/CredentialManager/res/values-kn/strings.xml
@@ -20,7 +20,7 @@
     <string name="app_name" msgid="4539824758261855508">"ರುಜುವಾತು ನಿರ್ವಾಹಕ"</string>
     <string name="string_cancel" msgid="6369133483981306063">"ರದ್ದುಗೊಳಿಸಿ"</string>
     <string name="string_continue" msgid="1346732695941131882">"ಮುಂದುವರಿಸಿ"</string>
-    <string name="string_more_options" msgid="2763852250269945472">"ಬೇರೆ ವಿಧಾನದಲ್ಲಿ ಉಳಿಸಿ"</string>
+    <string name="string_more_options" msgid="2763852250269945472">"ಬೇರೆ ವಿಧಾನದಲ್ಲಿ ಸೇವ್ ಮಾಡಿ"</string>
     <string name="string_learn_more" msgid="4541600451688392447">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
     <string name="content_description_show_password" msgid="3283502010388521607">"ಪಾಸ್‌ವರ್ಡ್ ತೋರಿಸಿ"</string>
     <string name="content_description_hide_password" msgid="6841375971631767996">"ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರೆಮಾಡಿ"</string>
@@ -48,7 +48,7 @@
     <string name="passwords" msgid="5419394230391253816">"ಪಾಸ್‌ವರ್ಡ್‌ಗಳು"</string>
     <string name="sign_ins" msgid="4710739369149469208">"ಸೈನ್-ಇನ್‌ಗಳು"</string>
     <string name="sign_in_info" msgid="2627704710674232328">"ಸೈನ್-ಇನ್ ಮಾಹಿತಿ"</string>
-    <string name="save_credential_to_title" msgid="3172811692275634301">"ಇಲ್ಲಿಗೆ <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ಅನ್ನು ಉಳಿಸಿ"</string>
+    <string name="save_credential_to_title" msgid="3172811692275634301">"ಇಲ್ಲಿಗೆ <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ಅನ್ನು ಸೇವ್ ಮಾಡಿ"</string>
     <string name="create_passkey_in_other_device_title" msgid="2360053098931886245">"ಇನ್ನೊಂದು ಸಾಧನದಲ್ಲಿ ಪಾಸ್‌ಕೀ ಅನ್ನು ರಚಿಸಬೇಕೆ?"</string>
     <string name="save_password_on_other_device_title" msgid="5829084591948321207">"ಇನ್ನೊಂದು ಸಾಧನದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಉಳಿಸಬೇಕೆ?"</string>
     <string name="save_sign_in_on_other_device_title" msgid="2827990118560134692">"ಮತ್ತೊಂದು ಸಾಧನದಲ್ಲಿ ಸೈನ್-ಇನ್ ಅನ್ನು ಉಳಿಸಬೇಕೆ?"</string>
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
index c477f30..08846f0 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
@@ -45,8 +45,8 @@
 import androidx.credentials.CreateCustomCredentialRequest
 import androidx.credentials.CreatePasswordRequest
 import androidx.credentials.CreatePublicKeyCredentialRequest
+import androidx.credentials.CredentialOption
 import androidx.credentials.PasswordCredential
-import androidx.credentials.PriorityHints
 import androidx.credentials.PublicKeyCredential
 import androidx.credentials.provider.CreateEntry
 import androidx.credentials.provider.RemoteEntry
@@ -177,9 +177,9 @@
                         "androidx.credentials.BUNDLE_KEY_TYPE_PRIORITY_VALUE",
                         when (option.type) {
                             PasswordCredential.TYPE_PASSWORD_CREDENTIAL ->
-                                PriorityHints.PRIORITY_PASSWORD_OR_SIMILAR
+                                CredentialOption.PRIORITY_PASSWORD_OR_SIMILAR
                             PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL -> 100
-                            else -> PriorityHints.PRIORITY_DEFAULT
+                            else -> CredentialOption.PRIORITY_DEFAULT
                         }
                 )
                 typePriorityMap[option.type] = priority
@@ -349,8 +349,8 @@
                 }
                 is CreateCustomCredentialRequest -> {
                     // TODO: directly use the display info once made public
-                    val displayInfo = CreateCredentialRequest.DisplayInfo
-                        .parseFromCredentialDataBundle(createCredentialRequest.credentialData)
+                    val displayInfo = CreateCredentialRequest.DisplayInfo.createFrom(
+                            createCredentialRequest.credentialData)
                         ?: return null
                     RequestDisplayInfo(
                         title = displayInfo.userId.toString(),
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
index 19f5a99..314cc05 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
@@ -19,7 +19,7 @@
 import android.credentials.flags.Flags.selectorUiImprovementsEnabled
 import android.credentials.flags.Flags.credmanBiometricApiEnabled
 import android.graphics.drawable.Drawable
-import androidx.credentials.PriorityHints
+import androidx.credentials.CredentialOption
 import com.android.credentialmanager.R
 import com.android.credentialmanager.model.CredentialType
 import com.android.credentialmanager.model.get.ProviderInfo
@@ -322,10 +322,10 @@
         // First rank by priorities of each credential type.
         if (p0.rawCredentialType != p1.rawCredentialType) {
             val p0Priority = typePriorityMap.getOrDefault(
-                    p0.rawCredentialType, PriorityHints.PRIORITY_DEFAULT
+                    p0.rawCredentialType, CredentialOption.PRIORITY_DEFAULT
             )
             val p1Priority = typePriorityMap.getOrDefault(
-                    p1.rawCredentialType, PriorityHints.PRIORITY_DEFAULT
+                    p1.rawCredentialType, CredentialOption.PRIORITY_DEFAULT
             )
             if (p0Priority < p1Priority) {
                 return -1
diff --git a/packages/DynamicSystemInstallationService/Android.bp b/packages/DynamicSystemInstallationService/Android.bp
index b8f54b3..ae69019 100644
--- a/packages/DynamicSystemInstallationService/Android.bp
+++ b/packages/DynamicSystemInstallationService/Android.bp
@@ -30,10 +30,6 @@
     certificate: "platform",
     privileged: true,
     platform_apis: true,
-
-    optimize: {
-        enabled: false,
-    },
 }
 
 java_library {
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
index 635dc42..5a530c4 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
@@ -60,7 +60,6 @@
 import android.os.image.DynamicSystemClient;
 import android.os.image.DynamicSystemManager;
 import android.text.TextUtils;
-import android.util.EventLog;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -104,14 +103,6 @@
     private static final String NOTIFICATION_CHANNEL_ID = "com.android.dynsystem";
     private static final int NOTIFICATION_ID = 1;
 
-    /*
-     * Event log tags
-     */
-    private static final int EVENT_DSU_PROGRESS_UPDATE = 120000;
-    private static final int EVENT_DSU_INSTALL_COMPLETE = 120001;
-    private static final int EVENT_DSU_INSTALL_FAILED = 120002;
-    private static final int EVENT_DSU_INSTALL_INSUFFICIENT_SPACE = 120003;
-
     protected static void logEventProgressUpdate(
             String partitionName,
             long installedBytes,
@@ -119,8 +110,7 @@
             int partitionNumber,
             int totalPartitionNumber,
             int totalProgressPercentage) {
-        EventLog.writeEvent(
-                EVENT_DSU_PROGRESS_UPDATE,
+        EventLogTags.writeDsuProgressUpdate(
                 partitionName,
                 installedBytes,
                 totalBytes,
@@ -130,15 +120,15 @@
     }
 
     protected static void logEventComplete() {
-        EventLog.writeEvent(EVENT_DSU_INSTALL_COMPLETE);
+        EventLogTags.writeDsuInstallComplete();
     }
 
     protected static void logEventFailed(String cause) {
-        EventLog.writeEvent(EVENT_DSU_INSTALL_FAILED, cause);
+        EventLogTags.writeDsuInstallFailed(cause);
     }
 
     protected static void logEventInsufficientSpace() {
-        EventLog.writeEvent(EVENT_DSU_INSTALL_INSUFFICIENT_SPACE);
+        EventLogTags.writeDsuInstallInsufficientSpace();
     }
 
     /*
diff --git a/packages/EasterEgg/AndroidManifest.xml b/packages/EasterEgg/AndroidManifest.xml
index d1db237..1500583 100644
--- a/packages/EasterEgg/AndroidManifest.xml
+++ b/packages/EasterEgg/AndroidManifest.xml
@@ -36,8 +36,28 @@
         android:icon="@drawable/android14_patch_adaptive"
         android:label="@string/app_name">
 
-        <!-- Android U easter egg -->
+        <!-- Android V easter egg: Daydream version of Landroid
+             (must be enabled by unlocking the egg) -->
+        <service
+            android:name=".landroid.DreamUniverse"
+            android:exported="true"
+            android:icon="@drawable/android14_patch_adaptive"
+            android:label="@string/v_egg_name"
+            android:description="@string/dream_description"
+            android:enabled="false"
+            android:permission="android.permission.BIND_DREAM_SERVICE"
+            >
 
+            <intent-filter>
+                <action android:name="android.service.dreams.DreamService" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data
+                android:name="android.service.dream"
+                android:resource="@xml/landroid_dream"/>
+        </service>
+
+        <!-- Android U easter egg -->
         <activity
             android:name=".landroid.MainActivity"
             android:exported="true"
@@ -52,7 +72,6 @@
             </intent-filter>
         </activity>
 
-
         <!-- Android Q easter egg -->
         <activity
             android:name=".quares.QuaresActivity"
diff --git a/packages/EasterEgg/res/values/landroid_strings.xml b/packages/EasterEgg/res/values/landroid_strings.xml
index 1394f2f..1bbfcca 100644
--- a/packages/EasterEgg/res/values/landroid_strings.xml
+++ b/packages/EasterEgg/res/values/landroid_strings.xml
@@ -1,21 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-    Copyright (C) 2023 The Android Open Source Project
-
-    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.
--->
-
+<?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="u_egg_name" translatable="false">Android 14 Easter Egg</string>
+
+    <!-- No Android's Sky -->
+    <!-- Char Star Field -->
+    <!-- V-leet: Harmless -->
+    <!-- Contemplating My Orbital Mechanics -->
+    <string name="u_egg_name" translatable="false">Landroid</string>
+    <string name="v_egg_name" translatable="false">Landroid</string>
+    <string name="dream_description" translatable="false">---- AUTOPILOT ENGAGED ----</string>
 
     <string-array name="planet_descriptors" translatable="false">
         <item>earthy</item>
@@ -365,7 +357,64 @@
         <item>relaxed</item>
         <item>skunky</item>
         <item>breezy</item>
-        <item>soup </item>
+        <item>soup</item>
+    </string-array>
+
+    <string-array name="fauna_generic_plurals" translatable="false">
+        <item>fauna</item>
+        <item>animals</item>
+        <item>locals</item>
+        <item>creatures</item>
+        <item>critters</item>
+        <item>wildlife</item>
+        <item>specimens</item>
+        <item>life</item>
+        <item>cells</item>
+    </string-array>
+
+    <string-array name="flora_generic_plurals" translatable="false">
+        <item>flora</item>
+        <item>plants</item>
+        <item>flowers</item>
+        <item>trees</item>
+        <item>mosses</item>
+        <item>specimens</item>
+        <item>life</item>
+        <item>cells</item>
+    </string-array>
+
+    <string-array name="atmo_generic_plurals" translatable="false">
+        <item>air</item>
+        <item>atmosphere</item>
+        <item>clouds</item>
+        <item>atmo</item>
+        <item>gases</item>
+    </string-array>
+
+    <string-array name="activities" translatable="false">
+        <item>refueling</item>
+        <item>sightseeing</item>
+        <item>vacationing</item>
+        <item>luncheoning</item>
+        <item>recharging</item>
+        <item>taking up space</item>
+        <item>reticulating space splines</item>
+        <item>using facilities</item>
+        <item>spelunking</item>
+        <item>repairing</item>
+        <item>herding {fauna}</item>
+        <item>taming {fauna}</item>
+        <item>breeding {fauna}</item>
+        <item>singing lullabies to {fauna}</item>
+        <item>singing lullabies to {flora}</item>
+        <item>singing lullabies to the {planet}</item>
+        <item>gardening {flora}</item>
+        <item>collecting {flora}</item>
+        <item>surveying the {planet}</item>
+        <item>mapping the {planet}</item>
+        <item>breathing {atmo}</item>
+        <item>reprocessing {atmo}</item>
+        <item>bottling {atmo}</item>
     </string-array>
 
 </resources>
diff --git a/packages/EasterEgg/res/xml/landroid_dream.xml b/packages/EasterEgg/res/xml/landroid_dream.xml
new file mode 100644
index 0000000..adf82bd
--- /dev/null
+++ b/packages/EasterEgg/res/xml/landroid_dream.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2024 The Android Open Source Project
+
+   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.
+-->
+<dream xmlns:android="http://schemas.android.com/apk/res/android"
+    android:previewImage="@*android:drawable/platlogo" />
diff --git a/packages/EasterEgg/src/com/android/egg/ComponentActivationActivity.java b/packages/EasterEgg/src/com/android/egg/ComponentActivationActivity.java
index 5820b5a..30320d6 100644
--- a/packages/EasterEgg/src/com/android/egg/ComponentActivationActivity.java
+++ b/packages/EasterEgg/src/com/android/egg/ComponentActivationActivity.java
@@ -18,11 +18,14 @@
 
 import android.app.Activity;
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.pm.PackageManager;
 import android.provider.Settings;
 import android.util.Log;
 import android.widget.Toast;
 
+import com.android.egg.flags.Flags;
+import com.android.egg.landroid.DreamUniverse;
 import com.android.egg.neko.NekoControlsService;
 import com.android.egg.widget.PaintChipsActivity;
 import com.android.egg.widget.PaintChipsWidget;
@@ -33,7 +36,9 @@
 public class ComponentActivationActivity extends Activity {
     private static final String TAG = "EasterEgg";
 
+    // check PlatLogoActivity.java for these
     private static final String S_EGG_UNLOCK_SETTING = "egg_mode_s";
+    private static final String V_EGG_UNLOCK_SETTING = "egg_mode_v";
 
     private void toastUp(String s) {
         Toast toast = Toast.makeText(this, s, Toast.LENGTH_SHORT);
@@ -44,14 +49,39 @@
     public void onStart() {
         super.onStart();
 
-        final PackageManager pm = getPackageManager();
-        final ComponentName[] cns = new ComponentName[] {
-                new ComponentName(this, NekoControlsService.class),
-                new ComponentName(this, PaintChipsActivity.class),
-                new ComponentName(this, PaintChipsWidget.class)
-        };
-        final long unlockValue = Settings.System.getLong(getContentResolver(),
-                S_EGG_UNLOCK_SETTING, 0);
+        lockUnlockComponents(this);
+
+        finish();
+    }
+
+    /**
+     * Check easter egg unlock state and update unlockable components to match.
+     */
+    public static void lockUnlockComponents(Context context) {
+        final PackageManager pm = context.getPackageManager();
+        final ComponentName[] cns;
+        final String unlockSettingsKey;
+        final boolean shouldReLock;
+        final long unlockValue;
+        if (Flags.flagFlag()) {
+            unlockSettingsKey = V_EGG_UNLOCK_SETTING;
+            unlockValue = 1; // since we're not toggling we actually don't need to check the setting
+            shouldReLock = false;
+            cns = new ComponentName[]{
+                    new ComponentName(context, DreamUniverse.class)
+            };
+        } else {
+            unlockSettingsKey = S_EGG_UNLOCK_SETTING;
+            unlockValue = Settings.System.getLong(context.getContentResolver(),
+                    unlockSettingsKey, 0);
+            shouldReLock = true;
+            cns = new ComponentName[]{
+                    new ComponentName(context, NekoControlsService.class),
+                    new ComponentName(context, PaintChipsActivity.class),
+                    new ComponentName(context, PaintChipsWidget.class),
+                    new ComponentName(context, DreamUniverse.class)
+            };
+        }
         for (ComponentName cn : cns) {
             final boolean componentEnabled = pm.getComponentEnabledSetting(cn)
                     == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
@@ -77,7 +107,5 @@
                 }
             }
         }
-
-        finish();
     }
 }
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Autopilot.kt b/packages/EasterEgg/src/com/android/egg/landroid/Autopilot.kt
new file mode 100644
index 0000000..f71abee
--- /dev/null
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Autopilot.kt
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.egg.landroid
+
+import kotlin.math.min
+import kotlin.math.sign
+
+class Autopilot(val ship: Spacecraft, val universe: Universe) : Entity {
+    val BRAKING_TIME = 5f
+    val SIGHTSEEING_TIME = 10f
+    val STRATEGY_MIN_TIME = 0.5f
+
+    var enabled = false
+
+    var target: Planet? = null
+
+    var landingAltitude = 0f
+
+    var nextStrategyTime = 0f
+
+    var brakingDistance = 0f
+
+    // used by rendering
+    var leadingPos = Vec2.Zero
+    var leadingVector = Vec2.Zero
+
+    val telemetry: String
+        get() =
+            listOf(
+                    "---- AUTOPILOT ENGAGED ----",
+                    "TGT: " + (target?.name?.toUpperCase() ?: "SELECTING..."),
+                    "EXE: $strategy" + if (debug.isNotEmpty()) " ($debug)" else "",
+                )
+                .joinToString("\n")
+
+    private var strategy: String = "NONE"
+    private var debug: String = ""
+
+    override fun update(sim: Simulator, dt: Float) {
+        if (!enabled) return
+
+        if (sim.now < nextStrategyTime) {
+            return
+        }
+
+        val currentStrategy = strategy
+
+        if (ship.landing != null) {
+            if (target != null) {
+                strategy = "LANDED"
+                debug = ""
+                // we just got here. see the sights.
+                target = null
+                landingAltitude = 0f
+                nextStrategyTime = sim.now + SIGHTSEEING_TIME
+            } else {
+                // full power until we blast off
+                ship.thrust = Vec2.makeWithAngleMag(ship.angle, 1f)
+
+                strategy = "LAUNCHING"
+                debug = ""
+                nextStrategyTime = sim.now + 2f
+            }
+        } else {
+            // select new target
+
+            if (target == null) {
+                // testing: target the first planet
+                //   target = universe.planets[0]
+
+                // target the nearest unexplored planet
+                target =
+                    universe.planets
+                        .sortedBy { (it.pos - ship.pos).mag() }
+                        .firstOrNull { !it.explored }
+                brakingDistance = 0f
+
+                // if we've explored them all, pick one at random
+                if (target == null) target = universe.planets.random()
+            }
+
+            target?.let { target -> // should be nonnull
+                val shipV = ship.velocity
+                val targetV = target.velocity
+                val targetVector = (target.pos - ship.pos)
+                val altitude = targetVector.mag() - target.radius
+
+                landingAltitude = min(target.radius, 100f)
+
+                // the following is in the moving reference frame of the target
+                val relativeV: Vec2 = shipV - targetV
+                val projection = relativeV.dot(targetVector / targetVector.mag())
+                val relativeSpeed = relativeV.mag() * projection.sign
+                val timeToTarget = if (relativeSpeed != 0f) altitude / relativeSpeed else 1_000f
+
+                val newBrakingDistance =
+                    BRAKING_TIME * if (relativeSpeed > 0) relativeSpeed else MAIN_ENGINE_ACCEL
+                brakingDistance =
+                    expSmooth(brakingDistance, newBrakingDistance, dt = sim.dt, speed = 5f)
+
+                // We're going to aim at where the target will be, but we want to make sure to
+                // compute
+                leadingPos =
+                    target.pos +
+                        Vec2.makeWithAngleMag(
+                            target.velocity.angle(),
+                            min(altitude / 2, target.velocity.mag())
+                        )
+                leadingVector = leadingPos - ship.pos
+
+                if (altitude < landingAltitude) {
+                    strategy = "LANDING"
+                    // Strategy: zero thrust, face away, prepare for landing
+
+                    ship.angle = (ship.pos - target.pos).angle() // point away from ground
+                    ship.thrust = Vec2.Zero
+                } else {
+                    if (relativeSpeed < 0 || altitude > brakingDistance) {
+                        strategy = "CHASING"
+                        // Strategy: Make tracks. We are either a long way away, or falling behind.
+                        ship.angle = leadingVector.angle()
+
+                        ship.thrust = Vec2.makeWithAngleMag(ship.angle, 1.0f)
+                    } else {
+                        strategy = "APPROACHING"
+                        // Strategy: Just slow down. If we get caught in the gravity well, it will
+                        // gradually start pulling us more in the direction of the planet, which
+                        // will create a graceful deceleration
+                        ship.angle = (-ship.velocity).angle()
+
+                        // We want to bleed off velocity over time. Specifically, relativeSpeed px/s
+                        // over timeToTarget seconds.
+                        val decel = relativeSpeed / timeToTarget
+                        val decelThrust =
+                            decel / MAIN_ENGINE_ACCEL * 0.9f // not quite slowing down enough
+                        ship.thrust = Vec2.makeWithAngleMag(ship.angle, decelThrust)
+                    }
+                }
+                debug = ("DV=%.0f D=%.0f T%+.1f").format(relativeSpeed, altitude, timeToTarget)
+            }
+            if (strategy != currentStrategy) {
+                nextStrategyTime = sim.now + STRATEGY_MIN_TIME
+            }
+        }
+    }
+
+    override fun postUpdate(sim: Simulator, dt: Float) {
+        if (!enabled) return
+    }
+}
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Colors.kt b/packages/EasterEgg/src/com/android/egg/landroid/Colors.kt
index f5657ae..24c4975 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/Colors.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Colors.kt
@@ -19,11 +19,22 @@
 import androidx.compose.ui.graphics.Color
 
 /** Various UI colors. */
-object Colors {
-    val Eigengrau = Color(0xFF16161D)
-    val Eigengrau2 = Color(0xFF292936)
-    val Eigengrau3 = Color(0xFF3C3C4F)
-    val Eigengrau4 = Color(0xFFA7A7CA)
+class Colors {
+    object Android {
+        val Green = Color(0xFF34A853)
+        val Blue = Color(0xFF4285F4)
+        val Mint = Color(0xFFE8F5E9)
+        val Chartreuse = Color(0xFFC6FF00)
+    }
+    companion object {
+        val Eigengrau = Color(0xFF16161D)
+        val Eigengrau2 = Color(0xFF292936)
+        val Eigengrau3 = Color(0xFF3C3C4F)
+        val Eigengrau4 = Color(0xFFA7A7CA)
 
-    val Console = Color(0xFFB7B7FF)
+        val Console = Color(0xFFB7B7FF)
+        val Autopilot = Android.Blue
+        val Track = Android.Green
+        val Flag = Android.Chartreuse
+    }
 }
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/DreamUniverse.kt b/packages/EasterEgg/src/com/android/egg/landroid/DreamUniverse.kt
new file mode 100644
index 0000000..8c87c5d
--- /dev/null
+++ b/packages/EasterEgg/src/com/android/egg/landroid/DreamUniverse.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.egg.landroid
+
+import android.service.dreams.DreamService
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.ComposeView
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleRegistry
+import androidx.lifecycle.setViewTreeLifecycleOwner
+import androidx.savedstate.SavedStateRegistryController
+import androidx.savedstate.SavedStateRegistryOwner
+import androidx.savedstate.setViewTreeSavedStateRegistryOwner
+import androidx.window.layout.FoldingFeature
+import kotlin.random.Random
+
+class DreamUniverse : DreamService() {
+    private var foldState = mutableStateOf<FoldingFeature?>(null) // unused
+
+    private val lifecycleOwner =
+        object : SavedStateRegistryOwner {
+            override val lifecycle = LifecycleRegistry(this)
+            override val savedStateRegistry
+                get() = savedStateRegistryController.savedStateRegistry
+
+            private val savedStateRegistryController =
+                SavedStateRegistryController.create(this).apply { performAttach() }
+
+            fun onCreate() {
+                savedStateRegistryController.performRestore(null)
+                lifecycle.currentState = Lifecycle.State.CREATED
+            }
+
+            fun onStart() {
+                lifecycle.currentState = Lifecycle.State.STARTED
+            }
+
+            fun onStop() {
+                lifecycle.currentState = Lifecycle.State.CREATED
+            }
+        }
+
+    override fun onAttachedToWindow() {
+        super.onAttachedToWindow()
+
+        val universe = VisibleUniverse(namer = Namer(resources), randomSeed = randomSeed())
+
+        isInteractive = false
+
+        if (TEST_UNIVERSE) {
+            universe.initTest()
+        } else {
+            universe.initRandom()
+
+            // We actually don't want the deterministic random position of the ship, we want
+            // true randomness to keep things interesting. So use Random (not universe.rng).
+            universe.ship.pos =
+                universe.star.pos +
+                    Vec2.makeWithAngleMag(
+                        Random.nextFloat() * PI2f,
+                        Random.nextFloatInRange(
+                            PLANET_ORBIT_RANGE.start,
+                            PLANET_ORBIT_RANGE.endInclusive
+                        )
+                    )
+        }
+
+        // enable autopilot in screensaver mode
+        val autopilot = Autopilot(universe.ship, universe)
+        universe.ship.autopilot = autopilot
+        universe.add(autopilot)
+        autopilot.enabled = true
+
+        // much more visually interesting in a screensaver context
+        DYNAMIC_ZOOM = true
+
+        val composeView = ComposeView(this)
+        composeView.setContent {
+            Spaaaace(modifier = Modifier.fillMaxSize(), u = universe, foldState = foldState)
+            DebugText(DEBUG_TEXT)
+            Telemetry(universe)
+        }
+
+        composeView.setViewTreeLifecycleOwner(lifecycleOwner)
+        composeView.setViewTreeSavedStateRegistryOwner(lifecycleOwner)
+
+        setContentView(composeView)
+    }
+
+    override fun onCreate() {
+        super.onCreate()
+        lifecycleOwner.onCreate()
+    }
+
+    override fun onDreamingStarted() {
+        super.onDreamingStarted()
+        lifecycleOwner.onStart()
+    }
+
+    override fun onDreamingStopped() {
+        super.onDreamingStopped()
+        lifecycleOwner.onStop()
+    }
+}
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/MainActivity.kt b/packages/EasterEgg/src/com/android/egg/landroid/MainActivity.kt
index 5a9b814..79f8b5fc 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/MainActivity.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/MainActivity.kt
@@ -21,12 +21,10 @@
 import android.util.Log
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
+import androidx.activity.enableEdgeToEdge
 import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.animation.core.CubicBezierEasing
 import androidx.compose.animation.core.animateFloatAsState
-import androidx.compose.animation.core.tween
 import androidx.compose.animation.core.withInfiniteAnimationFrameNanos
-import androidx.compose.animation.fadeIn
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.border
 import androidx.compose.foundation.gestures.awaitFirstDown
@@ -34,12 +32,14 @@
 import androidx.compose.foundation.gestures.rememberTransformableState
 import androidx.compose.foundation.gestures.transformable
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxWithConstraints
 import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.ColumnScope
-import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.safeContent
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
@@ -49,6 +49,7 @@
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.AbsoluteAlignment.Left
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.drawBehind
 import androidx.compose.ui.geometry.Offset
@@ -59,8 +60,10 @@
 import androidx.compose.ui.graphics.drawscope.translate
 import androidx.compose.ui.input.pointer.PointerEvent
 import androidx.compose.ui.input.pointer.pointerInput
+import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.font.FontFamily
 import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.toUpperCase
 import androidx.compose.ui.tooling.preview.Devices
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
@@ -94,12 +97,12 @@
 val RANDOM_SEED_TYPE = RandomSeedType.Daily
 
 const val FIXED_RANDOM_SEED = 5038L
-const val DEFAULT_CAMERA_ZOOM = 0.25f
+const val DEFAULT_CAMERA_ZOOM = 1f
 const val MIN_CAMERA_ZOOM = 250f / UNIVERSE_RANGE // 0.0025f
 const val MAX_CAMERA_ZOOM = 5f
-const val TOUCH_CAMERA_PAN = false
-const val TOUCH_CAMERA_ZOOM = true
-const val DYNAMIC_ZOOM = false // @@@ FIXME
+var TOUCH_CAMERA_PAN = false
+var TOUCH_CAMERA_ZOOM = false
+var DYNAMIC_ZOOM = false
 
 fun dailySeed(): Long {
     val today = GregorianCalendar()
@@ -134,39 +137,21 @@
 }
 
 @Composable
-fun ColumnScope.ConsoleText(
-    modifier: Modifier = Modifier,
-    visible: Boolean = true,
-    random: Random = Random.Default,
-    text: String
-) {
-    AnimatedVisibility(
-        modifier = modifier,
-        visible = visible,
-        enter =
-            fadeIn(
-                animationSpec =
-                    tween(
-                        durationMillis = 1000,
-                        easing = flickerFadeEasing(random) * CubicBezierEasing(0f, 1f, 1f, 0f)
-                    )
-            )
-    ) {
-        Text(
-            fontFamily = FontFamily.Monospace,
-            fontWeight = FontWeight.Medium,
-            fontSize = 12.sp,
-            color = Color(0xFFFF8000),
-            text = text
-        )
-    }
-}
-
-@Composable
 fun Telemetry(universe: VisibleUniverse) {
     var topVisible by remember { mutableStateOf(false) }
     var bottomVisible by remember { mutableStateOf(false) }
 
+    var catalogFontSize by remember { mutableStateOf(9.sp) }
+
+    val textStyle =
+        TextStyle(
+            fontFamily = FontFamily.Monospace,
+            fontWeight = FontWeight.Medium,
+            fontSize = 12.sp,
+            letterSpacing = 1.sp,
+            lineHeight = 12.sp,
+        )
+
     LaunchedEffect("blah") {
         delay(1000)
         bottomVisible = true
@@ -174,65 +159,109 @@
         topVisible = true
     }
 
-    Column(modifier = Modifier.fillMaxSize().padding(6.dp)) {
-        universe.triggerDraw.value // recompose on every frame
-        val explored = universe.planets.filter { it.explored }
+    universe.triggerDraw.value // recompose on every frame
 
-        AnimatedVisibility(modifier = Modifier, visible = topVisible, enter = flickerFadeIn) {
-            Text(
-                fontFamily = FontFamily.Monospace,
-                fontWeight = FontWeight.Medium,
-                fontSize = 12.sp,
-                color = Colors.Console,
-                modifier = Modifier.align(Left),
-                text =
-                    with(universe.star) {
-                        "  STAR: $name (UDC-${universe.randomSeed % 100_000})\n" +
-                            " CLASS: ${cls.name}\n" +
-                            "RADIUS: ${radius.toInt()}\n" +
-                            "  MASS: %.3g\n".format(mass) +
-                            "BODIES: ${explored.size} / ${universe.planets.size}\n" +
-                            "\n"
-                    } +
-                        explored
-                            .map {
-                                "  BODY: ${it.name}\n" +
-                                    "  TYPE: ${it.description.capitalize()}\n" +
-                                    "  ATMO: ${it.atmosphere.capitalize()}\n" +
-                                    " FAUNA: ${it.fauna.capitalize()}\n" +
-                                    " FLORA: ${it.flora.capitalize()}\n"
-                            }
-                            .joinToString("\n")
+    val explored = universe.planets.filter { it.explored }
 
-                // TODO: different colors, highlight latest discovery
+    BoxWithConstraints(
+        modifier =
+            Modifier.fillMaxSize().padding(6.dp).windowInsetsPadding(WindowInsets.safeContent),
+    ) {
+        val wide = maxWidth > maxHeight
+        Column(
+            modifier =
+                Modifier.align(if (wide) Alignment.BottomEnd else Alignment.BottomStart)
+                    .fillMaxWidth(if (wide) 0.45f else 1.0f)
+        ) {
+            universe.ship.autopilot?.let { autopilot ->
+                if (autopilot.enabled) {
+                    AnimatedVisibility(
+                        modifier = Modifier,
+                        visible = bottomVisible,
+                        enter = flickerFadeIn
+                    ) {
+                        Text(
+                            style = textStyle,
+                            color = Colors.Autopilot,
+                            modifier = Modifier.align(Left),
+                            text = autopilot.telemetry
+                        )
+                    }
+                }
+            }
+
+            AnimatedVisibility(
+                modifier = Modifier,
+                visible = bottomVisible,
+                enter = flickerFadeIn
+            ) {
+                Text(
+                    style = textStyle,
+                    color = Colors.Console,
+                    modifier = Modifier.align(Left),
+                    text =
+                        with(universe.ship) {
+                            val closest = universe.closestPlanet()
+                            val distToClosest = ((closest.pos - pos).mag() - closest.radius).toInt()
+                            listOfNotNull(
+                                    landing?.let {
+                                        "LND: ${it.planet.name.toUpperCase()}\nJOB: ${it.text}"
+                                    }
+                                        ?: if (distToClosest < 10_000) {
+                                            "ALT: $distToClosest"
+                                        } else null,
+                                    "THR: %.0f%%".format(thrust.mag() * 100f),
+                                    "POS: %s".format(pos.str("%+7.0f")),
+                                    "VEL: %.0f".format(velocity.mag())
+                                )
+                                .joinToString("\n")
+                        }
                 )
+            }
         }
 
-        Spacer(modifier = Modifier.weight(1f))
-
-        AnimatedVisibility(modifier = Modifier, visible = bottomVisible, enter = flickerFadeIn) {
+        AnimatedVisibility(
+            modifier = Modifier.align(Alignment.TopStart),
+            visible = topVisible,
+            enter = flickerFadeIn
+        ) {
             Text(
-                fontFamily = FontFamily.Monospace,
-                fontWeight = FontWeight.Medium,
-                fontSize = 12.sp,
+                style = textStyle,
+                fontSize = catalogFontSize,
+                lineHeight = catalogFontSize,
+                letterSpacing = 1.sp,
                 color = Colors.Console,
-                modifier = Modifier.align(Left),
-                text =
-                    with(universe.ship) {
-                        val closest = universe.closestPlanet()
-                        val distToClosest = (closest.pos - pos).mag().toInt()
-                        listOfNotNull(
-                                landing?.let { "LND: ${it.planet.name}" }
-                                    ?: if (distToClosest < 10_000) {
-                                        "ALT: $distToClosest"
-                                    } else null,
-                                if (thrust != Vec2.Zero) "THR: %.0f%%".format(thrust.mag() * 100f)
-                                else null,
-                                "POS: %s".format(pos.str("%+7.0f")),
-                                "VEL: %.0f".format(velocity.mag())
-                            )
-                            .joinToString("\n")
+                onTextLayout = { textLayoutResult ->
+                    if (textLayoutResult.didOverflowHeight) {
+                        catalogFontSize = 8.sp
                     }
+                },
+                text =
+                    (with(universe.star) {
+                            listOf(
+                                "  STAR: $name (UDC-${universe.randomSeed % 100_000})",
+                                " CLASS: ${cls.name}",
+                                "RADIUS: ${radius.toInt()}",
+                                "  MASS: %.3g".format(mass),
+                                "BODIES: ${explored.size} / ${universe.planets.size}",
+                                ""
+                            )
+                        } +
+                            explored
+                                .map {
+                                    listOf(
+                                        "  BODY: ${it.name}",
+                                        "  TYPE: ${it.description.capitalize()}",
+                                        "  ATMO: ${it.atmosphere.capitalize()}",
+                                        " FAUNA: ${it.fauna.capitalize()}",
+                                        " FLORA: ${it.flora.capitalize()}",
+                                        ""
+                                    )
+                                }
+                                .flatten())
+                        .joinToString("\n")
+
+                // TODO: different colors, highlight latest discovery
             )
         }
     }
@@ -246,6 +275,8 @@
 
         onWindowLayoutInfoChange()
 
+        enableEdgeToEdge()
+
         val universe = VisibleUniverse(namer = Namer(resources), randomSeed = randomSeed())
 
         if (TEST_UNIVERSE) {
@@ -254,6 +285,15 @@
             universe.initRandom()
         }
 
+        com.android.egg.ComponentActivationActivity.lockUnlockComponents(applicationContext)
+
+        // for autopilot testing in the activity
+        //        val autopilot = Autopilot(universe.ship, universe)
+        //        universe.ship.autopilot = autopilot
+        //        universe.add(autopilot)
+        //        autopilot.enabled = true
+        //        DYNAMIC_ZOOM = autopilot.enabled
+
         setContent {
             Spaaaace(modifier = Modifier.fillMaxSize(), u = universe, foldState = foldState)
             DebugText(DEBUG_TEXT)
@@ -437,8 +477,13 @@
         val distToNearestSurf = max(0f, (u.ship.pos - closest.pos).mag() - closest.radius * 1.2f)
         //        val normalizedDist = clamp(distToNearestSurf, 50f, 50_000f) / 50_000f
         if (DYNAMIC_ZOOM) {
-            //            cameraZoom = lerp(0.1f, 5f, smooth(1f-normalizedDist))
-            cameraZoom = clamp(500f / distToNearestSurf, MIN_CAMERA_ZOOM, MAX_CAMERA_ZOOM)
+            cameraZoom =
+                expSmooth(
+                    cameraZoom,
+                    clamp(500f / distToNearestSurf, MIN_CAMERA_ZOOM, MAX_CAMERA_ZOOM),
+                    dt = u.dt,
+                    speed = 1.5f
+                )
         } else if (!TOUCH_CAMERA_ZOOM) cameraZoom = DEFAULT_CAMERA_ZOOM
         if (!TOUCH_CAMERA_PAN) cameraOffset = (u.follow?.pos ?: Vec2.Zero) * -1f
 
@@ -478,26 +523,26 @@
                 "star: '${u.star.name}' designation=UDC-${u.randomSeed % 100_000} " +
                 "class=${u.star.cls.name} r=${u.star.radius.toInt()} m=${u.star.mass}\n" +
                 "planets: ${u.planets.size}\n" +
-                    u.planets.joinToString("\n") {
-                        val range = (u.ship.pos - it.pos).mag()
-                        val vorbit = sqrt(GRAVITATION * it.mass / range)
-                        val vescape = sqrt(2 * GRAVITATION * it.mass / it.radius)
-                        " * ${it.name}:\n" +
-                                if (it.explored) {
-                                    "   TYPE:  ${it.description.capitalize()}\n" +
-                                            "   ATMO:  ${it.atmosphere.capitalize()}\n" +
-                                            "   FAUNA: ${it.fauna.capitalize()}\n" +
-                                            "   FLORA: ${it.flora.capitalize()}\n"
-                                } else {
-                                    "   (Unexplored)\n"
-                                } +
-                                "   orbit=${(it.pos - it.orbitCenter).mag().toInt()}" +
-                                " radius=${it.radius.toInt()}" +
-                                " mass=${"%g".format(it.mass)}" +
-                                " vel=${(it.speed).toInt()}" +
-                                " // range=${"%.0f".format(range)}" +
-                                " vorbit=${vorbit.toInt()} vescape=${vescape.toInt()}"
-                    })
+                u.planets.joinToString("\n") {
+                    val range = (u.ship.pos - it.pos).mag()
+                    val vorbit = sqrt(GRAVITATION * it.mass / range)
+                    val vescape = sqrt(2 * GRAVITATION * it.mass / it.radius)
+                    " * ${it.name}:\n" +
+                        if (it.explored) {
+                            "   TYPE:  ${it.description.capitalize()}\n" +
+                                "   ATMO:  ${it.atmosphere.capitalize()}\n" +
+                                "   FAUNA: ${it.fauna.capitalize()}\n" +
+                                "   FLORA: ${it.flora.capitalize()}\n"
+                        } else {
+                            "   (Unexplored)\n"
+                        } +
+                        "   orbit=${(it.pos - it.orbitCenter).mag().toInt()}" +
+                        " radius=${it.radius.toInt()}" +
+                        " mass=${"%g".format(it.mass)}" +
+                        " vel=${(it.speed).toInt()}" +
+                        " // range=${"%.0f".format(range)}" +
+                        " vorbit=${vorbit.toInt()} vescape=${vescape.toInt()}"
+                })
 
         zoom(cameraZoom) {
             // All coordinates are space coordinates now.
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Maths.kt b/packages/EasterEgg/src/com/android/egg/landroid/Maths.kt
index fdf29f7..a1e8212 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/Maths.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Maths.kt
@@ -16,6 +16,7 @@
 
 package com.android.egg.landroid
 
+import kotlin.math.exp
 import kotlin.math.pow
 
 /** smoothstep. Ken Perlin's version */
@@ -32,3 +33,8 @@
 fun lexp(start: Float, end: Float, progress: Float): Float {
     return (progress - start) / (end - start)
 }
+
+/** Exponentially smooth current toward target by a factor of speed. */
+fun expSmooth(current: Float, target: Float, dt: Float = 1f / 60, speed: Float = 5f): Float {
+    return current + (target - current) * (1 - exp(-dt * speed))
+}
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Namer.kt b/packages/EasterEgg/src/com/android/egg/landroid/Namer.kt
index 67d536e..7331807 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/Namer.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Namer.kt
@@ -17,9 +17,8 @@
 package com.android.egg.landroid
 
 import android.content.res.Resources
-import kotlin.random.Random
-
 import com.android.egg.R
+import kotlin.random.Random
 
 const val SUFFIX_PROB = 0.75f
 const val LETTER_PROB = 0.3f
@@ -62,6 +61,11 @@
             0.1f to "(^*!%@##!!"
         )
 
+    private var activities = Bag(resources.getStringArray(R.array.activities))
+    private var floraGenericPlurals = Bag(resources.getStringArray(R.array.flora_generic_plurals))
+    private var faunaGenericPlurals = Bag(resources.getStringArray(R.array.fauna_generic_plurals))
+    private var atmoGenericPlurals = Bag(resources.getStringArray(R.array.atmo_generic_plurals))
+
     fun describePlanet(rng: Random): String {
         return planetTable.roll(rng).pull(rng) + " " + planetTypes.pull(rng)
     }
@@ -93,4 +97,30 @@
     fun describeAtmo(rng: Random): String {
         return atmoTable.roll(rng).pull(rng)
     }
+
+    fun floraPlural(rng: Random): String {
+        return floraGenericPlurals.pull(rng)
+    }
+    fun faunaPlural(rng: Random): String {
+        return faunaGenericPlurals.pull(rng)
+    }
+    fun atmoPlural(rng: Random): String {
+        return atmoGenericPlurals.pull(rng)
+    }
+
+    val TEMPLATE_REGEX = Regex("""\{(flora|fauna|planet|atmo)\}""")
+    fun describeActivity(rng: Random, target: Planet?): String {
+        return activities
+            .pull(rng)
+            .replace(TEMPLATE_REGEX) {
+                when (it.groupValues[1]) {
+                    "flora" -> (target?.flora ?: "SOME") + " " + floraPlural(rng)
+                    "fauna" -> (target?.fauna ?: "SOME") + " " + faunaPlural(rng)
+                    "atmo" -> (target?.atmosphere ?: "SOME") + " " + atmoPlural(rng)
+                    "planet" -> (target?.description ?: "SOME BODY") // once told me
+                    else -> "unknown template tag: ${it.groupValues[0]}"
+                }
+            }
+            .toUpperCase()
+    }
 }
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/PathTools.kt b/packages/EasterEgg/src/com/android/egg/landroid/PathTools.kt
index 8510640..cd87335 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/PathTools.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/PathTools.kt
@@ -32,6 +32,13 @@
     }
 }
 
+fun createPolygonPoints(radius: Float, sides: Int): List<Vec2> {
+    val angleStep = PI2f / sides
+    return (0 until sides).map { i ->
+        Vec2(radius * cos(angleStep * i), radius * sin(angleStep * i))
+    }
+}
+
 fun createStar(radius1: Float, radius2: Float, points: Int): Path {
     return Path().apply {
         val angleStep = PI2f / points
@@ -46,15 +53,16 @@
 }
 
 fun Path.parseSvgPathData(d: String) {
-    Regex("([A-Z])([-.,0-9e ]+)").findAll(d.trim()).forEach {
+    Regex("([A-Za-z])\\s*([-.,0-9e ]+)").findAll(d.trim()).forEach {
         val cmd = it.groups[1]!!.value
         val args =
             it.groups[2]?.value?.split(Regex("\\s+"))?.map { v -> v.toFloat() } ?: emptyList()
-        Log.d("Landroid", "cmd = $cmd, args = " + args.joinToString(","))
+        // Log.d("Landroid", "cmd = $cmd, args = " + args.joinToString(","))
         when (cmd) {
             "M" -> moveTo(args[0], args[1])
             "C" -> cubicTo(args[0], args[1], args[2], args[3], args[4], args[5])
             "L" -> lineTo(args[0], args[1])
+            "l" -> relativeLineTo(args[0], args[1])
             "Z" -> close()
             else -> Log.v("Landroid", "unsupported SVG command: $cmd")
         }
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Randomness.kt b/packages/EasterEgg/src/com/android/egg/landroid/Randomness.kt
index ebbb2bd..2903534 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/Randomness.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Randomness.kt
@@ -61,6 +61,7 @@
 /** Return a random float in the range [start, end). */
 fun Random.nextFloatInRange(fromUntil: ClosedFloatingPointRange<Float>): Float =
     nextFloatInRange(fromUntil.start, fromUntil.endInclusive)
+
 /** Return a random float in the range [first, second). */
 fun Random.nextFloatInRange(fromUntil: Pair<Float, Float>): Float =
     nextFloatInRange(fromUntil.first, fromUntil.second)
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/Universe.kt b/packages/EasterEgg/src/com/android/egg/landroid/Universe.kt
index 11dce61..1e54569 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/Universe.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/Universe.kt
@@ -155,10 +155,7 @@
                     speed = speed,
                     color = Colors.Eigengrau4
                 )
-            android.util.Log.v(
-                "Landroid",
-                "created planet $p with period $period and vel $speed"
-            )
+            android.util.Log.v("Landroid", "created planet $p with period $period and vel $speed")
             val num = it + 1
             p.description = "TEST PLANET #$num"
             p.atmosphere = "radius=$radius"
@@ -215,10 +212,7 @@
                     speed = speed,
                     color = Colors.Eigengrau4
                 )
-            android.util.Log.v(
-                "Landroid",
-                "created planet $p with period $period and vel $speed"
-            )
+            android.util.Log.v("Landroid", "created planet $p with period $period and vel $speed")
             p.description = namer.describePlanet(rng)
             p.atmosphere = namer.describeAtmo(rng)
             p.flora = namer.describeLife(rng)
@@ -302,7 +296,7 @@
                     //                        &&
                     //                        vDiff < 100f
                     ) {
-                        val landing = Landing(ship, planet, a)
+                        val landing = Landing(ship, planet, a, namer.describeActivity(rng, planet))
                         ship.landing = landing
                         ship.velocity = planet.velocity
                         add(landing)
@@ -370,12 +364,15 @@
     }
 }
 
-class Landing(val ship: Spacecraft, val planet: Planet, val angle: Float) : Constraint {
-    private val landingVector = Vec2.makeWithAngleMag(angle, ship.radius + planet.radius)
+class Landing(var ship: Spacecraft?, val planet: Planet, val angle: Float, val text: String = "") :
+    Constraint {
     override fun solve(sim: Simulator, dt: Float) {
-        val desiredPos = planet.pos + landingVector
-        ship.pos = (ship.pos * 0.5f) + (desiredPos * 0.5f) // @@@ FIXME
-        ship.angle = angle
+        ship?.let { ship ->
+            val landingVector = Vec2.makeWithAngleMag(angle, ship.radius + planet.radius)
+            val desiredPos = planet.pos + landingVector
+            ship.pos = (ship.pos * 0.5f) + (desiredPos * 0.5f) // @@@ FIXME
+            ship.angle = angle
+        }
     }
 }
 
@@ -435,6 +432,7 @@
     val track = Track()
 
     var landing: Landing? = null
+    var autopilot: Autopilot? = null
 
     init {
         mass = SPACECRAFT_MASS
@@ -448,23 +446,19 @@
             var deltaV = MAIN_ENGINE_ACCEL * dt
             if (SCALED_THRUST) deltaV *= thrustMag.coerceIn(0f, 1f)
 
-            if (landing == null) {
-                // we are free in space, so we attempt to pivot toward the desired direction
-                // NOTE: no longer required thanks to FlightStick
-                // angle = thrust.angle()
-            } else
-                landing?.let { landing ->
-                    if (launchClock == 0f) launchClock = sim.now + 1f /* @@@ TODO extract */
+            // check if we are currently attached to a landing
+            landing?.let { landing ->
+                // launch clock is 1 second long
+                if (launchClock == 0f) launchClock = sim.now + 1f /* @@@ TODO extract */
 
-                    if (sim.now > launchClock) {
-                        // first-stage to orbit has 1000x power
-                        //                    deltaV *= 1000f
-                        sim.remove(landing)
-                        this.landing = null
-                    } else {
-                        deltaV = 0f
-                    }
+                if (sim.now > launchClock) {
+                    // detach from landing site
+                    landing.ship = null
+                    this.landing = null
+                } else {
+                    deltaV = 0f
                 }
+            }
 
             // this is it. impart thrust to the ship.
             // note that we always thrust in the forward direction
diff --git a/packages/EasterEgg/src/com/android/egg/landroid/VisibleUniverse.kt b/packages/EasterEgg/src/com/android/egg/landroid/VisibleUniverse.kt
index 6baf36e..974784d 100644
--- a/packages/EasterEgg/src/com/android/egg/landroid/VisibleUniverse.kt
+++ b/packages/EasterEgg/src/com/android/egg/landroid/VisibleUniverse.kt
@@ -28,11 +28,10 @@
 import androidx.compose.ui.graphics.drawscope.translate
 import androidx.compose.ui.util.lerp
 import androidx.core.math.MathUtils.clamp
+import com.android.egg.flags.Flags.flagFlag
 import java.lang.Float.max
 import kotlin.math.sqrt
 
-import com.android.egg.flags.Flags.flagFlag
-
 const val DRAW_ORBITS = true
 const val DRAW_GRAVITATIONAL_FIELDS = true
 const val DRAW_STAR_GRAVITATIONAL_FIELDS = true
@@ -71,16 +70,6 @@
     with(universe) {
         triggerDraw.value // Please recompose when this value changes.
 
-        //        star.drawZoomed(ds, zoom)
-        //        planets.forEach { p ->
-        //            p.drawZoomed(ds, zoom)
-        //            if (p == follow) {
-        //                drawCircle(Color.Red, 20f / zoom, p.pos)
-        //            }
-        //        }
-        //
-        //        ship.drawZoomed(ds, zoom)
-
         constraints.forEach {
             when (it) {
                 is Landing -> drawLanding(it)
@@ -89,13 +78,14 @@
         }
         drawStar(star)
         entities.forEach {
-            if (it === ship || it === star) return@forEach // draw the ship last
+            if (it === star) return@forEach // don't draw the star as a planet
             when (it) {
-                is Spacecraft -> drawSpacecraft(it)
                 is Spark -> drawSpark(it)
                 is Planet -> drawPlanet(it)
+                else -> Unit // draw these at a different time, or not at all
             }
         }
+        ship.autopilot?.let { drawAutopilot(it) }
         drawSpacecraft(ship)
     }
 }
@@ -111,15 +101,6 @@
                 pathEffect = PathEffect.dashPathEffect(floatArrayOf(8f / zoom, 8f / zoom), 0f)
             )
     )
-    //    val path = Path().apply {
-    //        fillType = PathFillType.EvenOdd
-    //        addOval(Rect(center = Vec2.Zero, radius = container.radius))
-    //        addOval(Rect(center = Vec2.Zero, radius = container.radius + 10_000))
-    //    }
-    //    drawPath(
-    //        path = path,
-    //
-    //    )
 }
 
 fun ZoomedDrawScope.drawGravitationalField(planet: Planet) {
@@ -226,23 +207,47 @@
 """
         )
     }
-val thrustPath = createPolygon(-3f, 3).also { it.translate(Vec2(-4f, 0f)) }
+val spaceshipLegs =
+    Path().apply {
+        parseSvgPathData(
+            """
+M-7   -6.5
+l-3.5  0
+l-1   -2
+l 0    4
+l 1   -2
+Z
+M-7    6.5
+l-3.5  0
+l-1   -2
+l 0    4
+l 1   -2
+Z
+"""
+        )
+    }
+val thrustPath = createPolygon(-3f, 3).also { it.translate(Vec2(-5f, 0f)) }
 
 fun ZoomedDrawScope.drawSpacecraft(ship: Spacecraft) {
     with(ship) {
         rotateRad(angle, pivot = pos) {
             translate(pos.x, pos.y) {
-                //                drawPath(
-                //                    path = createStar(200f, 100f, 3),
-                //                    color = Color.White,
-                //                    style = Stroke(width = 2f / zoom)
-                //                )
+                // new in V: little landing legs
+                ship.landing?.let {
+                    drawPath(
+                        path = spaceshipLegs,
+                        color = Color(0xFFCCCCCC),
+                        style = Stroke(width = 2f / this@drawSpacecraft.zoom)
+                    )
+                }
+                // draw the ship
                 drawPath(path = spaceshipPath, color = Colors.Eigengrau) // fauxpaque
                 drawPath(
                     path = spaceshipPath,
                     color = if (transit) Color.Black else Color.White,
                     style = Stroke(width = 2f / this@drawSpacecraft.zoom)
                 )
+                // draw thrust
                 if (thrust != Vec2.Zero) {
                     drawPath(
                         path = thrustPath,
@@ -254,27 +259,8 @@
                             )
                     )
                 }
-                //                drawRect(
-                //                    topLeft = Offset(-1f, -1f),
-                //                    size = Size(2f, 2f),
-                //                    color = Color.Cyan,
-                //                    style = Stroke(width = 2f / zoom)
-                //                )
-                //                drawLine(
-                //                    start = Vec2.Zero,
-                //                    end = Vec2(20f, 0f),
-                //                    color = Color.Cyan,
-                //                    strokeWidth = 2f / zoom
-                //                )
             }
         }
-        //        // DEBUG: draw velocity vector
-        //        drawLine(
-        //            start = pos,
-        //            end = pos + velocity,
-        //            color = Color.Red,
-        //            strokeWidth = 3f / zoom
-        //        )
         drawTrack(track)
     }
 }
@@ -287,14 +273,15 @@
         val height = 80f
         rotateRad(landing.angle, pivot = v) {
             translate(v.x, v.y) {
-                drawPath(
+                val flagPath =
                     Path().apply {
                         moveTo(0f, 0f)
                         lineTo(height, 0f)
                         lineTo(height * 0.875f, height * 0.25f)
                         lineTo(height * 0.75f, 0f)
                         close()
-                    }, Color.Yellow, style = Stroke(width = strokeWidth))
+                    }
+                drawPath(flagPath, Colors.Flag, style = Stroke(width = strokeWidth))
             }
         }
     }
@@ -311,10 +298,7 @@
             Spark.Style.DOT -> drawCircle(color, size, pos)
             Spark.Style.DOT_ABSOLUTE -> drawCircle(color, size, pos / zoom)
             Spark.Style.RING -> drawCircle(color, size, pos, style = Stroke(width = 1f / zoom))
-        //                drawPoints(listOf(pos), PointMode.Points, color, strokeWidth = 2f/zoom)
-        //            drawCircle(color, 2f/zoom, pos)
         }
-        //        drawCircle(Color.Gray, center = pos, radius = 1.5f / zoom)
     }
 }
 
@@ -324,19 +308,9 @@
             drawPoints(
                 positions,
                 pointMode = PointMode.Lines,
-                color = Color.Green,
+                color = Colors.Track,
                 strokeWidth = 1f / zoom
             )
-            //            if (positions.size < 2) return
-            //            drawPath(Path()
-            //                .apply {
-            //                    val p = positions[positions.size - 1]
-            //                    moveTo(p.x, p.y)
-            //                    positions.reversed().subList(1, positions.size).forEach { p ->
-            //                        lineTo(p.x, p.y)
-            //                    }
-            //                },
-            //                color = Color.Green, style = Stroke(1f/zoom))
         } else {
             if (positions.size < 2) return
             var prev: Vec2 = positions[positions.size - 1]
@@ -349,3 +323,43 @@
         }
     }
 }
+
+fun ZoomedDrawScope.drawAutopilot(autopilot: Autopilot) {
+    val color = Colors.Autopilot.copy(alpha = 0.5f)
+
+    autopilot.target?.let { target ->
+        val zoom = zoom
+        rotateRad(autopilot.universe.now * PI2f / 10f, target.pos) {
+            translate(target.pos.x, target.pos.y) {
+                drawPath(
+                    path =
+                        createPolygon(
+                            radius = target.radius + autopilot.brakingDistance,
+                            sides = 15 // Autopilot introduced in Android 15
+                        ),
+                    color = color,
+                    style = Stroke(1f / zoom)
+                )
+                drawCircle(
+                    color,
+                    radius = target.radius + autopilot.landingAltitude / 2,
+                    center = Vec2.Zero,
+                    alpha = 0.25f,
+                    style = Stroke(autopilot.landingAltitude)
+                )
+            }
+        }
+        drawLine(
+            color,
+            start = autopilot.ship.pos,
+            end = autopilot.leadingPos,
+            strokeWidth = 1f / zoom
+        )
+        drawCircle(
+            color,
+            radius = 5f / zoom,
+            center = autopilot.leadingPos,
+            style = Stroke(1f / zoom)
+        )
+    }
+}
diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml
index 7e2561f..f7dc457 100644
--- a/packages/InputDevices/res/values-af/strings.xml
+++ b/packages/InputDevices/res/values-af/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgies"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thais (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serwies (Latyns)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegryns (Latyns)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
index 3053c44..712ca00 100644
--- a/packages/InputDevices/res/values-am/strings.xml
+++ b/packages/InputDevices/res/values-am/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ጂዮርጂያኛ"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ታይላንድኛ (ኬድማኒ)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ታይላንድኛ (ፓታሾት)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ሰርቢያኛ (ላቲን)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ሞንቴኔግሮኛ (ላቲን)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml
index 15aa34d..c2ea39e 100644
--- a/packages/InputDevices/res/values-as/strings.xml
+++ b/packages/InputDevices/res/values-as/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"থাই (কেডমানি)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"থাই (পাটাচ’টে)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ছাৰ্বিয়ান (লেটিন)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মণ্টেনেগ্ৰিণ (লেটিন)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml
index 765d55b..d90c3c8 100644
--- a/packages/InputDevices/res/values-az/strings.xml
+++ b/packages/InputDevices/res/values-az/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcü"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tay (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tay (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serb dili (Latın)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monteneqro dili (Latın)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
index 9b52c34..0d9a211 100644
--- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml
+++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijska"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"tajski (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajski (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
index 4d70bf5..e02fd0c 100644
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ b/packages/InputDevices/res/values-bg/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузински"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"тайландски (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тайландски (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"сръбски (латиница)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"черногорски (латиница)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml
index 7c430d3..3fdbcc1 100644
--- a/packages/InputDevices/res/values-bn/strings.xml
+++ b/packages/InputDevices/res/values-bn/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"জর্জিয়ান"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"থাই (কেডমানি)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"থাই (পাট্টাচোটে)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"সার্বিয়ান (ল্যাটিন)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মন্টেনেগ্রিন (ল্যাটিন)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml
index c47dad3..934da2c 100644
--- a/packages/InputDevices/res/values-bs/strings.xml
+++ b/packages/InputDevices/res/values-bs/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijski"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"tajlandski (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajlandski (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
index fe5a092..2082c05 100644
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ b/packages/InputDevices/res/values-ca/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgià"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbi (llatí)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrí (llatí)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml
index 4e3416c..cd211c9 100644
--- a/packages/InputDevices/res/values-cs/strings.xml
+++ b/packages/InputDevices/res/values-cs/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzínština"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"thajština (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thajština (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbština (latinka)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"černohorština (latinka)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
index c263224..9635810 100644
--- a/packages/InputDevices/res/values-da/strings.xml
+++ b/packages/InputDevices/res/values-da/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisk (latinsk)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinsk (latinsk)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
index 5876891..35db12e 100644
--- a/packages/InputDevices/res/values-de/strings.xml
+++ b/packages/InputDevices/res/values-de/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisch"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thailändisch (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailändisch (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisch (lat. Alphabet)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinisch (lat. Alphabet)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml
index 356ebd4..0296067 100644
--- a/packages/InputDevices/res/values-en-rAU/strings.xml
+++ b/packages/InputDevices/res/values-en-rAU/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
index 356ebd4..0296067 100644
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ b/packages/InputDevices/res/values-en-rGB/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
index 356ebd4..0296067 100644
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ b/packages/InputDevices/res/values-en-rIN/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
index c20d928..4d32333 100644
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ b/packages/InputDevices/res/values-es-rUS/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tailandés (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandés (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbio (latino)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml
index 57af1f7..08d96a9b 100644
--- a/packages/InputDevices/res/values-eu/strings.xml
+++ b/packages/InputDevices/res/values-eu/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiarra"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thailandiarra (kedmanee-a)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailandiarra (pattachote-a)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbiarra (latindarra)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegroarra (latindarra)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
index 6ab8411..8dcae86b 100644
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ b/packages/InputDevices/res/values-fa/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"گرجستانی"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"تایلندی (کدمانی)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"تایلندی (پاتاچوته)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"صربی (لاتین)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونته‌نگرویی (لاتین)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
index 2c69b29..8748854 100644
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ b/packages/InputDevices/res/values-fi/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgia"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"thai (kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thai (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"serbia (latinalainen)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegro (latinalainen)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml
index a4656ff..ee498aa 100644
--- a/packages/InputDevices/res/values-fr-rCA/strings.xml
+++ b/packages/InputDevices/res/values-fr-rCA/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thaï (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thaï (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbe (latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
index 76c4815..f12e1db 100644
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ b/packages/InputDevices/res/values-fr/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thaï (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thaï (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbe (latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml
index 133fbf7..2d96c89 100644
--- a/packages/InputDevices/res/values-gl/strings.xml
+++ b/packages/InputDevices/res/values-gl/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Xeorxiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tailandés (kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandés (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbio (alfabeto latino)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (alfabeto latino)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml
index a3c98ae..3c02208 100644
--- a/packages/InputDevices/res/values-gu/strings.xml
+++ b/packages/InputDevices/res/values-gu/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"જ્યોર્જિઅન"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"થાઇ (કેડમાની)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"થાઇ (પટ્ટાશોટે)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"સર્બિયન (લેટિન)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"મોંટેનેગ્રીન (લેટિન)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
index fafc42d..88729ea1 100644
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ b/packages/InputDevices/res/values-hi/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन कीबोर्ड का लेआउट"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"थाई (केडमेनी)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पटैचोटे)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियन (लैटिन)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनीग्रिन (लैटिन)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml
index d8e7ec4..39da355 100644
--- a/packages/InputDevices/res/values-hr/strings.xml
+++ b/packages/InputDevices/res/values-hr/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijski"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"tajski (kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajski (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
index 88c532e..edceda2 100644
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ b/packages/InputDevices/res/values-hu/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"grúz"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"thai (kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thai (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"szerb (latin betűs)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrói (latin betűs)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml
index ef4128e..8f3652a 100644
--- a/packages/InputDevices/res/values-hy/strings.xml
+++ b/packages/InputDevices/res/values-hy/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"վրացերեն"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"թայերեն (քեդմանի)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"թայերեն (պատաչոտ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"սերբերեն (լատինատառ)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"չեռնոգորերեն (լատինատառ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
index 97a2359..b6b9e8d 100644
--- a/packages/InputDevices/res/values-it/strings.xml
+++ b/packages/InputDevices/res/values-it/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbo (latino)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
index 0f7a341..93f7426 100644
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ b/packages/InputDevices/res/values-iw/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"גיאורגית"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"‏תאית (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"‏תאית (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"סרבית (לטינית)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"מונטנגרית (לטינית)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml
index f6cfd43..bb9fc8c 100644
--- a/packages/InputDevices/res/values-ja/strings.xml
+++ b/packages/InputDevices/res/values-ja/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ジョージア語"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"タイ語(Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"タイ語(Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"セルビア語(ラテン文字)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"モンテネグロ語(ラテン)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml
index 4eebe6b..e09d65b 100644
--- a/packages/InputDevices/res/values-ka/strings.xml
+++ b/packages/InputDevices/res/values-ka/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ქართული"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ტაილანდური (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ტაილანდური (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"სერბული (ლათინური)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"მონტენეგრული (ლათინური)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml
index b1ca40a..176aa24 100644
--- a/packages/InputDevices/res/values-kk/strings.xml
+++ b/packages/InputDevices/res/values-kk/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузин"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Тай (кедмани)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тай (паттачот)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Серб (латын жазуы)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногор (латын жазуы)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml
index 94d65bd..3b0def4 100644
--- a/packages/InputDevices/res/values-kn/strings.xml
+++ b/packages/InputDevices/res/values-kn/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ಜಾರ್ಜಿಯನ್"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ಥಾಯ್ (ಕೆಡ್‍ಮನೀ)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ಥಾಯ್ (ಪಟ್ಟಚೋಟ್)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ಸೆರ್ಬಿಯನ್ (ಲ್ಯಾಟಿನ್)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಲ್ಯಾಟಿನ್)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml
index fa2d9da..689d3fff 100644
--- a/packages/InputDevices/res/values-ko/strings.xml
+++ b/packages/InputDevices/res/values-ko/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"조지아어"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"태국어(Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"태국어(Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"세르비아어(로마자)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"몬테네그로어(로마자)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml
index 9434840..97dbc2a 100644
--- a/packages/InputDevices/res/values-ky/strings.xml
+++ b/packages/InputDevices/res/values-ky/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинче"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Тайча (Kedmanee баскычтобу)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайча (Pattachote баскычтобу)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербче (Латын)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Монтенегрочо (Латын)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml
index 95a8903..da2b868 100644
--- a/packages/InputDevices/res/values-lo/strings.xml
+++ b/packages/InputDevices/res/values-lo/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ຈໍຈຽນ"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ໄທ (ເກດມະນີ)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ໄທ (ປັດຕະໂຊຕິ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ເຊີບຽນ (ລາຕິນ)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ມອນເທເນກຣິນ (ລາຕິນ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
index 3cd4da7..827480c 100644
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ b/packages/InputDevices/res/values-lv/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzīnu"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Taju valoda (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Taju (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbu (latīņu)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Melnkalniešu (latīņu)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index b91fcc1..0aef324 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузиски"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"тајландски (кедмани)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тајландски (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"српски (латиница)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml
index 408ae13..b8f4d32 100644
--- a/packages/InputDevices/res/values-ml/strings.xml
+++ b/packages/InputDevices/res/values-ml/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ജോര്‍ജ്ജിയൻ"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"തായ് (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"തായ് (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"സെർബിയൻ (ലാറ്റിൻ)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"മോണ്ടിനെഗ്രിൻ (ലാറ്റിൻ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml
index 47cebf1..63c4c90 100644
--- a/packages/InputDevices/res/values-mr/strings.xml
+++ b/packages/InputDevices/res/values-mr/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"थाई (केडमानी)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पट्टाचोटे)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियन (लॅटिन)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनेग्रिन (लॅटिन)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml
index 9a1c4f7..6444ae0 100644
--- a/packages/InputDevices/res/values-ms/strings.xml
+++ b/packages/InputDevices/res/values-ms/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Bahasa Georgia"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbia (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index 2545448..43a172f 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisk (latinsk)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrisk (latinsk)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml
index e85d615..ab1ec1d 100644
--- a/packages/InputDevices/res/values-ne/strings.xml
+++ b/packages/InputDevices/res/values-ne/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जर्जियाली"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"थाई (केडमानी)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पत्ताचोते)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियाली (ल्याटिन)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मोन्टेनिग्रिन (ल्याटिन)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml
index 8df615e..94fc9b3 100644
--- a/packages/InputDevices/res/values-or/strings.xml
+++ b/packages/InputDevices/res/values-or/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ଜର୍ଜିଆନ୍"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ଥାଇ (କେଡମାନି)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ଥାଇ (ପାଟ୍ଟାଚୋଟେ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ସର୍ବିଆନ (ଲାଟିନ)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ମଣ୍ଟେନେଗ୍ରିନ (ଲାଟିନ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml
index b0a140e..970343f 100644
--- a/packages/InputDevices/res/values-pa/strings.xml
+++ b/packages/InputDevices/res/values-pa/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ਜਾਰਜੀਆਈ"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ਥਾਈ (ਕੇਦਮਨੀ)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ਥਾਈ (ਪੈਟਾਸ਼ੋਟੇ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ਸਰਬੀਆਈ (ਲਾਤੀਨੀ)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ਮਾਂਟੇਨੀਗਰਿਨ (ਲਾਤੀਨੀ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml
index 6fa852b..18c334f 100644
--- a/packages/InputDevices/res/values-pt-rBR/strings.xml
+++ b/packages/InputDevices/res/values-pt-rBR/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tailandês (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml
index b768467..ea1d9c1 100644
--- a/packages/InputDevices/res/values-pt-rPT/strings.xml
+++ b/packages/InputDevices/res/values-pt-rPT/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tailandês (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml
index 6fa852b..18c334f 100644
--- a/packages/InputDevices/res/values-pt/strings.xml
+++ b/packages/InputDevices/res/values-pt/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tailandês (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
index 9dc2841..9fa3017 100644
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ b/packages/InputDevices/res/values-ro/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiană"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thailandeză (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailandeză (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sârbă (caractere latine)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Muntenegreană (caractere latine)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml
index 9612717b..90b2461 100644
--- a/packages/InputDevices/res/values-ru/strings.xml
+++ b/packages/InputDevices/res/values-ru/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузинский"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Тайский (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайский (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербский (латиница)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногорский (латиница)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml
index 2151f44..8d42385 100644
--- a/packages/InputDevices/res/values-si/strings.xml
+++ b/packages/InputDevices/res/values-si/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ජෝර්ජියානු"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"තායි (කෙඩ්මනී)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"තායි (පට්ටචෝටේ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"සර්බියානු (ලතින්)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"මොන්ටෙනේග්‍රීන් (ලතින්)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml
index c8b6021..64b4ef2 100644
--- a/packages/InputDevices/res/values-sk/strings.xml
+++ b/packages/InputDevices/res/values-sk/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzínske"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"thajčina (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thajčina (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbčina (latinka)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"čiernohorčina (latinka)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml
index 1e04ae1..fdbbca7 100644
--- a/packages/InputDevices/res/values-sl/strings.xml
+++ b/packages/InputDevices/res/values-sl/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzinščina"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"tajščina (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajščina (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbščina (latinica)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"črnogorščina (latinica)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml
index 8ad13f4..06a598c 100644
--- a/packages/InputDevices/res/values-sq/strings.xml
+++ b/packages/InputDevices/res/values-sq/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gjeorgjisht"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tajlandisht (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tajlandisht (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisht (latine)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Malazisht (latine)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml
index 28cd5ca..d8beac6 100644
--- a/packages/InputDevices/res/values-sr/strings.xml
+++ b/packages/InputDevices/res/values-sr/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузијска"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"тајски (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тајски (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"српски (латиница)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml
index c24c300..f1046bd 100644
--- a/packages/InputDevices/res/values-sv/strings.xml
+++ b/packages/InputDevices/res/values-sv/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgiska"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thailändska (pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"serbiska (latinskt)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrinska (latinskt)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
index 0cf002e..52efd2f 100644
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ b/packages/InputDevices/res/values-sw/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Kijojia"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Kithai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Kitai (Kipatachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Kiserbia (Kilatini)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Kimontenegri (Kilatini)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml
index 87e9105..14fd630 100644
--- a/packages/InputDevices/res/values-ta/strings.xml
+++ b/packages/InputDevices/res/values-ta/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ஜார்ஜியன்"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"தாய் (கேட்மேனி)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"தாய் (பட்டாசொட்டே)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"செர்பியன் (லத்தீன்)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"மாண்டினெக்ரன் (லத்தீன்)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml
index 4cf1b14..891fd6c 100644
--- a/packages/InputDevices/res/values-te/strings.xml
+++ b/packages/InputDevices/res/values-te/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"జార్జియన్"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"థాయ్ (కెడ్మనీ)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"థాయ్ (పత్తచోత్)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"సెర్బియన్ (లాటిన్)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"మాంటెనెగ్రిన్ (లాటిన్)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml
index 88cf752..b58cc29 100644
--- a/packages/InputDevices/res/values-th/strings.xml
+++ b/packages/InputDevices/res/values-th/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ภาษาจอร์เจีย"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"ไทย (เกษมณี)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ไทย (ปัตตะโชติ)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"เซอร์เบีย (ละติน)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"มอนเตเนโกร (ละติน)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
index 787c851..3278899 100644
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ b/packages/InputDevices/res/values-tl/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
index 62360b5..6582aaf2 100644
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ b/packages/InputDevices/res/values-tr/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcüce"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Tayca (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tayca (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sırpça (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Karadağca (Latin)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
index 15b1a25..3a544e0 100644
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ b/packages/InputDevices/res/values-uk/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинська"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Тайська (кедмані)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайська (паттачоте)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербська (латиниця)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Чорногорська (латиниця)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml
index d10c798..4b29326 100644
--- a/packages/InputDevices/res/values-ur/strings.xml
+++ b/packages/InputDevices/res/values-ur/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"جارجیائی"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"تھائی (کیڈمینی)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"تھائی (پٹاچوٹے)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"سربیائی (لاطینی)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونٹے نیگریائی (لاطینی)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
index 5934e3b..6a5dd74 100644
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ b/packages/InputDevices/res/values-zh-rCN/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格鲁吉亚语"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"泰语 (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰语 (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞尔维亚语(拉丁字母)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"黑山语(拉丁字母)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
index dbcfd1c..a5a934a 100644
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ b/packages/InputDevices/res/values-zh-rHK/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格魯吉亞文"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"泰文 (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰文 (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞爾維亞文 (拉丁)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
index c87f2ac..54c8b23 100644
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ b/packages/InputDevices/res/values-zh-rTW/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"喬治亞文"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"泰文 (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰文 (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞爾維亞文 (拉丁字母)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁字母)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
index f62afba..78dfa3b5 100644
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ b/packages/InputDevices/res/values-zu/strings.xml
@@ -52,8 +52,6 @@
     <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
     <string name="keyboard_layout_thai_kedmanee" msgid="6637147314580760938">"Isi-Thai (Kedmanee)"</string>
     <string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Isi-Thai (Pattachote)"</string>
-    <!-- no translation found for keyboard_layout_serbian_latin (3128791759390046571) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_montenegrin_latin (1467832503378949945) -->
-    <skip />
+    <string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"IsiSerbian (Latin)"</string>
+    <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"IsiMontenegrin (Latin)"</string>
 </resources>
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_content_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_content_layout.xml
index 72b569f..9848749 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_content_layout.xml
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_content_layout.xml
@@ -32,21 +32,9 @@
             android:id="@+id/collapsing_toolbar"
             android:layout_width="match_parent"
             android:layout_height="@dimen/settingslib_toolbar_layout_height"
-            android:clipToPadding="false"
-            app:forceApplySystemWindowInsetTop="true"
-            app:extraMultilineHeightEnabled="true"
-            app:contentScrim="@color/settingslib_colorSurfaceHeader"
-            app:maxLines="3"
             app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
-            app:scrimAnimationDuration="50"
-            app:scrimVisibleHeightTrigger="@dimen/settingslib_scrim_visible_height_trigger"
-            app:statusBarScrim="@null"
-            app:titleCollapseMode="fade"
-            app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed"
-            app:expandedTitleTextAppearance="@style/CollapsingToolbarTitle.Expanded"
-            app:expandedTitleMarginStart="@dimen/expanded_title_margin_start"
-            app:expandedTitleMarginEnd="@dimen/expanded_title_margin_end"
-            app:toolbarId="@id/action_bar">
+            app:toolbarId="@id/action_bar"
+            style="@style/CollapsingToolbarLayoutStyle.SettingsLib">
 
             <Toolbar
                 android:id="@+id/action_bar"
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/dimens.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/dimens.xml
index 15c1abb..40b9fcd 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/dimens.xml
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/dimens.xml
@@ -20,4 +20,5 @@
     <dimen name="settingslib_scrim_visible_height_trigger">137dp</dimen>
     <dimen name="expanded_title_margin_start">24dp</dimen>
     <dimen name="expanded_title_margin_end">24dp</dimen>
+    <dimen name="expanded_title_margin_bottom">32dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/styles.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/styles.xml
index d0b6c4d..afd0d76a 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/styles.xml
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v31/styles.xml
@@ -18,11 +18,27 @@
     <style name="CollapsingToolbarTitle.Collapsed" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
         <item name="android:fontFamily">@string/settingslib_config_headlineFontFamily</item>
         <item name="android:textSize">20dp</item>
-        <item name="android:textColor">@color/settingslib_text_color_primary_device_default</item>
     </style>
 
     <style name="CollapsingToolbarTitle.Expanded" parent="CollapsingToolbarTitle.Collapsed">
         <item name="android:textSize">36dp</item>
-        <item name="android:textColor">@color/settingslib_text_color_primary_device_default</item>
+    </style>
+
+    <style name="Base.CollapsingToolbarLayoutStyle.SettingsLib" parent="@style/Widget.Material3.CollapsingToolbar">
+        <item name="expandedTitleTextAppearance">@style/CollapsingToolbarTitle.Expanded</item>
+        <item name="collapsedTitleTextAppearance">@style/CollapsingToolbarTitle.Collapsed</item>
+        <item name="expandedTitleMarginStart">@dimen/expanded_title_margin_start</item>
+        <item name="expandedTitleMarginEnd">@dimen/expanded_title_margin_end</item>
+        <item name="expandedTitleMarginBottom">@dimen/expanded_title_margin_bottom</item>
+        <item name="maxLines">3</item>
+        <item name="scrimVisibleHeightTrigger">@dimen/settingslib_scrim_visible_height_trigger</item>
+        <item name="contentScrim">@color/settingslib_colorSurfaceHeader</item>
+        <item name="statusBarScrim">@null</item>
+        <item name="scrimAnimationDuration">50</item>
+    </style>
+
+    <style name="CollapsingToolbarLayoutStyle.SettingsLib" parent="@style/Base.CollapsingToolbarLayoutStyle.SettingsLib">
+        <item name="collapsedTitleTextColor">@color/settingslib_text_color_primary_device_default</item>
+        <item name="expandedTitleTextColor">@color/settingslib_text_color_primary_device_default</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml
index 0c20287..0f71a78 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-v35/styles.xml
@@ -15,14 +15,8 @@
   limitations under the License.
 -->
 <resources>
-    <style name="CollapsingToolbarTitle.Collapsed" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
-        <item name="android:fontFamily">@string/settingslib_config_headlineFontFamily</item>
-        <item name="android:textSize">20dp</item>
-        <item name="android:textColor">@color/settingslib_materialColorOnSurface</item>
-    </style>
-
-    <style name="CollapsingToolbarTitle.Expanded" parent="CollapsingToolbarTitle.Collapsed">
-        <item name="android:textSize">36dp</item>
-        <item name="android:textColor">@color/settingslib_materialColorOnSurface</item>
+    <style name="CollapsingToolbarLayoutStyle.SettingsLib" parent="@style/Base.CollapsingToolbarLayoutStyle.SettingsLib">
+        <item name="collapsedTitleTextColor">@color/settingslib_materialColorOnSurface</item>
+        <item name="expandedTitleTextColor">@color/settingslib_materialColorOnSurface</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/Color/res/values/colors.xml b/packages/SettingsLib/Color/res/values/colors.xml
index 7097523..7b08a5b6 100644
--- a/packages/SettingsLib/Color/res/values/colors.xml
+++ b/packages/SettingsLib/Color/res/values/colors.xml
@@ -17,6 +17,7 @@
 
 <resources>
     <!-- Dynamic colors-->
+    <color name="settingslib_color_blue700">#0B57D0</color>
     <color name="settingslib_color_blue600">#1a73e8</color>
     <color name="settingslib_color_blue400">#669df6</color>
     <color name="settingslib_color_blue300">#8ab4f8</color>
diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
index cf645f7..0ab33b7 100644
--- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
+++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/LottieColorUtils.java
@@ -59,6 +59,9 @@
                 ".black",
                 android.R.color.white);
         map.put(
+                ".blue200",
+                R.color.settingslib_color_blue700);
+        map.put(
                 ".blue400",
                 R.color.settingslib_color_blue600);
         map.put(
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt
index 83cb549..61b8b7f 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt
@@ -20,6 +20,7 @@
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.combine
@@ -61,10 +62,8 @@
     lifecycleOwner: LifecycleOwner,
     minActiveState: Lifecycle.State = Lifecycle.State.STARTED,
     action: suspend (value: T) -> Unit,
-) {
-    lifecycleOwner.lifecycleScope.launch {
-        lifecycleOwner.repeatOnLifecycle(minActiveState) {
-            collectLatest(action)
-        }
+): Job = lifecycleOwner.lifecycleScope.launch {
+    lifecycleOwner.repeatOnLifecycle(minActiveState) {
+        collectLatest(action)
     }
 }
diff --git a/packages/SettingsLib/SpaPrivileged/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SpaPrivileged/res/values-pt-rPT/strings.xml
index e7030df..59b19ba 100644
--- a/packages/SettingsLib/SpaPrivileged/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/SpaPrivileged/res/values-pt-rPT/strings.xml
@@ -20,8 +20,8 @@
     <string name="no_applications" msgid="5800789569715871963">"Sem apps."</string>
     <string name="menu_show_system" msgid="906304605807554788">"Mostrar sistema"</string>
     <string name="menu_hide_system" msgid="374571689914923020">"Ocultar sistema"</string>
-    <string name="app_permission_summary_allowed" msgid="6115213465364138103">"Permitida"</string>
-    <string name="app_permission_summary_not_allowed" msgid="58396132188553920">"Não permitida"</string>
+    <string name="app_permission_summary_allowed" msgid="6115213465364138103">"Permitido"</string>
+    <string name="app_permission_summary_not_allowed" msgid="58396132188553920">"Não permitido"</string>
     <string name="version_text" msgid="4001669804596458577">"versão <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
     <string name="cloned_app_info_label" msgid="1765651167024478391">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
 </resources>
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
index 120b75e..050527e 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
@@ -68,8 +68,7 @@
     open val permissionHasAppOpFlag: Boolean = true
 
     /** These not changeable packages will also be hidden from app list. */
-    private val notChangeablePackages =
-        setOf("android", "com.android.systemui", context.packageName)
+    private val notChangeablePackages = setOf("com.android.systemui")
 
     private fun createAppOpsPermissionController(app: ApplicationInfo) =
         AppOpsPermissionController(context, app, appOps, permission)
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
index 27e00c0..ea6a272 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
@@ -110,7 +110,7 @@
     app: ApplicationInfo,
 ) {
     val record = remember { transformItem(app) }
-    if (!remember { isChangeable(record) }) return
+    if (!remember { isChangeableWithSystemUidCheck(record) }) return
     val context = LocalContext.current
     val internalListModel = remember {
         TogglePermissionInternalAppListModel(
@@ -178,6 +178,6 @@
 private fun <T : AppRecord> TogglePermissionAppListModel<T>.rememberIsChangeable(record: T) =
     remember(record) {
         flow {
-            emit(isChangeable(record))
+            emit(isChangeableWithSystemUidCheck(record))
         }.flowOn(Dispatchers.Default)
     }.collectAsStateWithLifecycle(initialValue = false)
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
index 3f7a852..2a04424 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
@@ -18,6 +18,7 @@
 
 import android.content.Context
 import android.content.pm.ApplicationInfo
+import android.os.Process
 import androidx.compose.runtime.Composable
 import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
 import com.android.settingslib.spa.framework.common.SettingsPageProvider
@@ -79,9 +80,26 @@
     fun setAllowed(record: T, newAllowed: Boolean)
 
     @Composable
-    fun InfoPageAdditionalContent(record: T, isAllowed: () -> Boolean?){}
+    fun InfoPageAdditionalContent(record: T, isAllowed: () -> Boolean?) {}
 }
 
+/**
+ * And if the given app has system or root UID.
+ *
+ * If true, the app gets all permissions, so the permission toggle always not changeable.
+ */
+fun AppRecord.isSystemOrRootUid(): Boolean = app.uid in listOf(Process.SYSTEM_UID, Process.ROOT_UID)
+
+/**
+ * Gets whether the permission on / off is changeable for the given app.
+ *
+ * And if the given app has system or root UID, it gets all permissions, so always not changeable.
+ */
+fun <T : AppRecord> TogglePermissionAppListModel<T>.isChangeableWithSystemUidCheck(
+    record: T,
+): Boolean = !record.isSystemOrRootUid() && isChangeable(record)
+
+
 interface TogglePermissionAppListProvider {
     val permissionType: String
 
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
index 2e8b76a..57102ba 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
@@ -33,6 +33,7 @@
 import com.android.settingslib.spa.framework.common.SettingsPageProvider
 import com.android.settingslib.spa.framework.compose.navigator
 import com.android.settingslib.spa.framework.compose.rememberContext
+import com.android.settingslib.spa.framework.util.filterItem
 import com.android.settingslib.spa.framework.util.getStringArg
 import com.android.settingslib.spa.widget.preference.Preference
 import com.android.settingslib.spa.widget.preference.PreferenceModel
@@ -143,7 +144,7 @@
         listModel.transform(userIdFlow, appListFlow)
 
     override fun filter(userIdFlow: Flow<Int>, option: Int, recordListFlow: Flow<List<T>>) =
-        listModel.filter(userIdFlow, recordListFlow)
+        listModel.filter(userIdFlow, recordListFlow.filterItem { !it.isSystemOrRootUid() })
 
     @Composable
     override fun getSummary(option: Int, record: T) = getSummary(record)
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
index 9d12fc7..60eccd9 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
@@ -278,7 +278,7 @@
         const val PERMISSION = "PERMISSION"
         const val BROADER_PERMISSION = "BROADER_PERMISSION"
         val APP = ApplicationInfo().apply { packageName = PACKAGE_NAME }
-        val NOT_CHANGEABLE_APP = ApplicationInfo().apply { packageName = "android" }
+        val NOT_CHANGEABLE_APP = ApplicationInfo().apply { packageName = "com.android.systemui" }
     }
 }
 
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPageTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPageTest.kt
index 270b3fa..d7147b5 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPageTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPageTest.kt
@@ -228,6 +228,7 @@
         const val PACKAGE_NAME = "package.name"
         val APP = ApplicationInfo().apply {
             packageName = PACKAGE_NAME
+            uid = 11000
         }
         val PACKAGE_INFO = PackageInfo().apply {
             packageName = PACKAGE_NAME
diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
index ea3dbd9..0e71a1b 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
+++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
@@ -38,8 +38,9 @@
 import java.util.regex.Pattern;
 
 /**
- * Progres bar preference with a usage summary and a total summary.
- * This preference shows number in usage summary with enlarged font size.
+ * Progress bar preference with a usage summary and a total summary.
+ *
+ * <p>This preference shows number in usage summary with enlarged font size.
  */
 public class UsageProgressBarPreference extends Preference {
 
@@ -48,18 +49,18 @@
     private CharSequence mUsageSummary;
     private CharSequence mTotalSummary;
     private CharSequence mBottomSummary;
+    private CharSequence mBottomSummaryContentDescription;
     private ImageView mCustomImageView;
     private int mPercent = -1;
 
     /**
      * Perform inflation from XML and apply a class-specific base style.
      *
-     * @param context  The {@link Context} this is associated with, through which it can
-     *                 access the current theme, resources, {@link SharedPreferences}, etc.
-     * @param attrs    The attributes of the XML tag that is inflating the preference
+     * @param context The {@link Context} this is associated with, through which it can access the
+     *     current theme, resources, {@link SharedPreferences}, etc.
+     * @param attrs The attributes of the XML tag that is inflating the preference
      * @param defStyle An attribute in the current theme that contains a reference to a style
-     *                 resource that supplies default values for the view. Can be 0 to not
-     *                 look for defaults.
+     *     resource that supplies default values for the view. Can be 0 to not look for defaults.
      */
     public UsageProgressBarPreference(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
@@ -69,9 +70,9 @@
     /**
      * Perform inflation from XML and apply a class-specific base style.
      *
-     * @param context The {@link Context} this is associated with, through which it can
-     *                access the current theme, resources, {@link SharedPreferences}, etc.
-     * @param attrs   The attributes of the XML tag that is inflating the preference
+     * @param context The {@link Context} this is associated with, through which it can access the
+     *     current theme, resources, {@link SharedPreferences}, etc.
+     * @param attrs The attributes of the XML tag that is inflating the preference
      */
     public UsageProgressBarPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -114,9 +115,17 @@
         notifyChanged();
     }
 
+    /** Set content description for the bottom summary. */
+    public void setBottomSummaryContentDescription(CharSequence contentDescription) {
+        if (!TextUtils.equals(mBottomSummaryContentDescription, contentDescription)) {
+            mBottomSummaryContentDescription = contentDescription;
+            notifyChanged();
+        }
+    }
+
     /** Set percentage of the progress bar. */
     public void setPercent(long usage, long total) {
-        if (usage >  total) {
+        if (usage > total) {
             return;
         }
         if (total == 0L) {
@@ -146,14 +155,13 @@
     /**
      * Binds the created View to the data for this preference.
      *
-     * <p>This is a good place to grab references to custom Views in the layout and set
-     * properties on them.
+     * <p>This is a good place to grab references to custom Views in the layout and set properties
+     * on them.
      *
      * <p>Make sure to call through to the superclass's implementation.
      *
      * @param holder The ViewHolder that provides references to the views to fill in. These views
-     *               will be recycled, so you should not hold a reference to them after this method
-     *               returns.
+     *     will be recycled, so you should not hold a reference to them after this method returns.
      */
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder) {
@@ -177,6 +185,9 @@
             bottomSummary.setVisibility(View.VISIBLE);
             bottomSummary.setMovementMethod(LinkMovementMethod.getInstance());
             bottomSummary.setText(mBottomSummary);
+            if (!TextUtils.isEmpty(mBottomSummaryContentDescription)) {
+                bottomSummary.setContentDescription(mBottomSummaryContentDescription);
+            }
         }
 
         final ProgressBar progressBar = (ProgressBar) holder.findViewById(android.R.id.progress);
@@ -205,9 +216,12 @@
 
         final Matcher matcher = mNumberPattern.matcher(summary);
         if (matcher.find()) {
-            final SpannableString spannableSummary =  new SpannableString(summary);
-            spannableSummary.setSpan(new AbsoluteSizeSpan(64, true /* dip */), matcher.start(),
-                    matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+            final SpannableString spannableSummary = new SpannableString(summary);
+            spannableSummary.setSpan(
+                    new AbsoluteSizeSpan(64, true /* dip */),
+                    matcher.start(),
+                    matcher.end(),
+                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             return spannableSummary;
         }
         return summary;
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index a723223..95586ea 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -84,7 +84,7 @@
     <string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
     <string name="bluetooth_disconnected" msgid="7739366554710388701">"Адключана"</string>
     <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Адключэнне..."</string>
-    <string name="bluetooth_connecting" msgid="5871702668260192755">"Злучэнне..."</string>
+    <string name="bluetooth_connecting" msgid="5871702668260192755">"Падключэнне..."</string>
     <string name="bluetooth_connected" msgid="8065345572198502293">"Падключана прылада <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
     <string name="bluetooth_pairing" msgid="4269046942588193600">"Спалучэнне..."</string>
     <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"Падключана прылада <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> (без званкоў)"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index cc67420..45f08da 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -283,9 +283,9 @@
     <string name="keep_screen_on_summary" msgid="1510731514101925829">"La pantalla no entra mai en mode de repòs si el dispositiu s\'està carregant"</string>
     <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Activa el registre de Bluetooth HCI"</string>
     <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Captura els paquets de Bluetooth. Activa el Bluetooth un cop hagis canviat aquesta opció."</string>
-    <string name="oem_unlock_enable" msgid="5334869171871566731">"Desbloqueig d\'OEM"</string>
+    <string name="oem_unlock_enable" msgid="5334869171871566731">"Desbloqueig OEM"</string>
     <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Permet desbloquejar el bootloader"</string>
-    <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Permetre el desbloqueig d\'OEM?"</string>
+    <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Permetre el desbloqueig OEM?"</string>
     <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ADVERTIMENT: les funcions de protecció del dispositiu no funcionaran mentre aquesta opció estigui activada."</string>
     <string name="mock_location_app" msgid="6269380172542248304">"Selecciona una aplicació d\'ubicació simulada"</string>
     <string name="mock_location_app_not_set" msgid="6972032787262831155">"No s\'ha definit cap aplicació d\'ubicació simulada"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 3c63119..0b96faa 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -127,7 +127,7 @@
     <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de archivos"</string>
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string>
     <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string>
-    <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Acceso a contactos e historial de llamadas"</string>
+    <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Permitir acceso a contactos e historial de llamadas"</string>
     <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"La información se usará para avisos de llamada y más"</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 25f002a2..6376ad5 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -710,7 +710,7 @@
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Lehenetsia"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"Pantaila pizteko modua kontrolatzeko aukera"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Eman pantaila pizteko baimena"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Eman pantaila pizteko baimena aplikazioei. Baimena emanez gero, aplikazioek edonoiz piztu ahal izango dute pantaila, zuk halako asmorik izan ez arren."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Eman pantaila pizteko baimena aplikazioari. Baimena emanez gero, aplikazioak edonoiz piztu ahal izango du pantaila, zuk halako asmorik izan ez arren."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren audioa igortzeari utzi nahi diozu?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"<xliff:g id="SWITCHAPP">%1$s</xliff:g> aplikazioaren audioa igortzen edo audio-irteera aldatzen baduzu, une hartako igorpena etengo da"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Igorri <xliff:g id="SWITCHAPP">%1$s</xliff:g> aplikazioaren audioa"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 399e396..6eb8bd1 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -710,7 +710,7 @@
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"پیش‌فرض"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"کنترل روشن شدن صفحه‌نمایش"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"اجازه روشن کردن صفحه‌نمایش"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"به برنامه اجازه می‌دهد صفحه‌نمایش را روشن کند. اگر اجازه داده شود، ممکن است این برنامه در هر زمانی بدون هدف صریح شما صفحه‌نمایش را روشن کند."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"به برنامه اجازه می‌دهد صفحه‌نمایش را روشن کند. اگر این اجازه داده شود، ممکن است این برنامه در هر زمانی بدون توجه به منظور صریح شما صفحه‌نمایش را روشن کند."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"همه‌فرستی <xliff:g id="APP_NAME">%1$s</xliff:g> متوقف شود؟"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"اگر <xliff:g id="SWITCHAPP">%1$s</xliff:g> را همه‌فرستی کنید یا خروجی را تغییر دهید، همه‌فرستی کنونی متوقف خواهد شد"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"همه‌فرستی <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index d2afaac..a0dc830 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -632,7 +632,7 @@
     <string name="profile_info_settings_title" msgid="105699672534365099">"Profiilin tiedot"</string>
     <string name="user_need_lock_message" msgid="4311424336209509301">"Ennen kuin voit luoda rajoitetun profiilin, määritä näytön lukitus, joka suojelee sovelluksiasi ja henkilökohtaisia tietojasi."</string>
     <string name="user_set_lock_button" msgid="1427128184982594856">"Aseta lukitus"</string>
-    <string name="user_switch_to_user" msgid="6975428297154968543">"Vaihda tähän käyttäjään: <xliff:g id="USER_NAME">%s</xliff:g>"</string>
+    <string name="user_switch_to_user" msgid="6975428297154968543">"Vaihda käyttäjään: <xliff:g id="USER_NAME">%s</xliff:g>"</string>
     <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Luodaan uutta käyttäjää…"</string>
     <string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"Luodaan uutta vierasta…"</string>
     <string name="add_user_failed" msgid="4809887794313944872">"Uuden käyttäjän luominen epäonnistui"</string>
@@ -709,8 +709,8 @@
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Valitse näppäimistöasettelu"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Oletus"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"Näytön päälle laittamisen asetukset"</string>
-    <string name="allow_turn_screen_on" msgid="6194845766392742639">"Salli näytön käynnistäminen"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Salli sovelluksen käynnistää näyttö. Jos sovellus saa luvan, se voi käynnistää näytön itsenäisesti milloin tahansa."</string>
+    <string name="allow_turn_screen_on" msgid="6194845766392742639">"Salli näytön laittaminen päälle"</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Salli sovelluksen laittaa näyttö päälle. Jos sovellus saa luvan, se voi laittaa näytön päälle itsenäisesti milloin tahansa."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Lopetetaanko <xliff:g id="APP_NAME">%1$s</xliff:g>-sovelluksen lähettäminen?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Jos lähetät <xliff:g id="SWITCHAPP">%1$s</xliff:g>-sovellusta tai muutat ulostuloa, nykyinen lähetyksesi loppuu"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Lähetä <xliff:g id="SWITCHAPP">%1$s</xliff:g>-sovellusta"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 1d9d5c8..0e03d18 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -514,7 +514,7 @@
     <string name="disabled" msgid="8017887509554714950">"Désactivée"</string>
     <string name="external_source_trusted" msgid="1146522036773132905">"Autorisée"</string>
     <string name="external_source_untrusted" msgid="5037891688911672227">"Non autorisée"</string>
-    <string name="install_other_apps" msgid="3232595082023199454">"Installer les applications inconnues"</string>
+    <string name="install_other_apps" msgid="3232595082023199454">"Installer les applis inconnues"</string>
     <string name="home" msgid="973834627243661438">"Accueil des paramètres"</string>
   <string-array name="battery_labels">
     <item msgid="7878690469765357158">"0 %"</item>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 5f4480c..ed4bf48 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -710,7 +710,7 @@
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Par défaut"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"Commande d\'activation de l\'écran"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Autoriser l\'activation de l\'écran"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Autoriser une appli à activer l\'écran. Si elle y est autorisée, l\'appli pourra activer l\'écran à tout moment sans que vous le lui demandiez."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Vous permet d\'autoriser une appli à activer l\'écran. Si elle y est autorisée, l\'appli pourra activer l\'écran à tout moment sans que vous le lui demandiez."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Arrêter la diffusion de <xliff:g id="APP_NAME">%1$s</xliff:g> ?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Si vous diffusez <xliff:g id="SWITCHAPP">%1$s</xliff:g> ou que vous modifiez le résultat, votre annonce actuelle s\'arrêtera"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Diffuser <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index f66499f..7db157e 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -708,9 +708,9 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"फ़िज़िकल कीबोर्ड"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"कीबोर्ड का लेआउट चुनें"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"डिफ़ॉल्ट"</string>
-    <string name="turn_screen_on_title" msgid="2662312432042116026">"इस ऐप के पास स्क्रीन को चालू करने का कंट्रोल है"</string>
+    <string name="turn_screen_on_title" msgid="2662312432042116026">"स्क्रीन को चालू करने से जुड़ा कंट्रोल"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"स्क्रीन चालू करने की अनुमति दें"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"ऐप्लिकेशन को स्क्रीन चालू करने की अनुमति दें. ऐसा करने पर, ऐप्लिकेशन आपकी अनुमति लिए बिना भी, जब चाहे स्क्रीन चालू कर सकता है."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"ऐप्लिकेशन को स्क्रीन चालू करने की अनुमति दें. इससे आपके न चाहते हुए भी, ऐप्लिकेशन जब चाहे स्क्रीन चालू कर सकता है."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर ब्रॉडकास्ट करना रोकें?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"<xliff:g id="SWITCHAPP">%1$s</xliff:g> पर ब्रॉडकास्ट शुरू करने पर या आउटपुट बदलने पर, आपका मौजूदा ब्रॉडकास्ट बंद हो जाएगा"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"<xliff:g id="SWITCHAPP">%1$s</xliff:g> पर ब्रॉडकास्ट करें"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 8ce90ec..ef0d589 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -710,7 +710,7 @@
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Zadano"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"Kontrola za uključivanje zaslona"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Dopusti uključivanje zaslona"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dopustite aplikaciji da uključuje zaslon. Ako date to dopuštenje, aplikacija može uključiti zaslon u bilo kojem trenutku bez vaše izričite namjere."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dopušta aplikaciji da uključuje zaslon. Ako date to dopuštenje, aplikacija može uključiti zaslon u bilo kojem trenutku bez vaše izričite namjere."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Zaustaviti emitiranje aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Ako emitirate aplikaciju <xliff:g id="SWITCHAPP">%1$s</xliff:g> ili promijenite izlaz, vaše će se trenutačno emitiranje zaustaviti"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Emitiranje aplikacije <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index acdad9c..17e902e 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -708,7 +708,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"物理キーボード"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"キーボード レイアウトの選択"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"デフォルト"</string>
-    <string name="turn_screen_on_title" msgid="2662312432042116026">"画面をオンにする設定"</string>
+    <string name="turn_screen_on_title" msgid="2662312432042116026">"画面をオンにする"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"画面をオンにすることを許可する"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"画面をオンにすることをアプリに許可します。許可すると、ユーザーからの明示的インテントを必要とせずに、アプリがいつでも画面をオンにできるようになります。"</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"<xliff:g id="APP_NAME">%1$s</xliff:g> のブロードキャストを停止しますか?"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 72e7760..f80ec8d 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -239,7 +239,7 @@
     <string name="category_work" msgid="4014193632325996115">"ਕੰਮ ਸੰਬੰਧੀ"</string>
     <string name="category_private" msgid="4244892185452788977">"ਪ੍ਰਾਈਵੇਟ"</string>
     <string name="category_clone" msgid="1554511758987195974">"ਕਲੋਨ ਕਰੋ"</string>
-    <string name="development_settings_title" msgid="140296922921597393">"ਵਿਕਾਸਕਾਰ ਚੋਣਾਂ"</string>
+    <string name="development_settings_title" msgid="140296922921597393">"ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ"</string>
     <string name="development_settings_enable" msgid="4285094651288242183">"ਵਿਕਾਸਕਾਰ ਵਿਕਲਪਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
     <string name="development_settings_summary" msgid="8718917813868735095">"ਐਪ ਵਿਕਾਸ ਲਈ ਚੋਣਾਂ ਸੈੱਟ ਕਰੋ"</string>
     <string name="development_settings_not_available" msgid="355070198089140951">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
@@ -422,7 +422,7 @@
     <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ਐਪ ਵੱਲੋਂ ਵੈਧ ਚੈਨਲ ਤੋਂ ਬਿਨਾਂ ਸੂਚਨਾ ਪੋਸਟ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ \'ਤੇ ਚਿਤਾਵਨੀ ਦਿਖਾਉਂਦੀ ਹੈ"</string>
     <string name="force_allow_on_external" msgid="9187902444231637880">"ਐਪਾਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਆਗਿਆ ਦਿਓ"</string>
     <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ਮੈਨੀਫੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਲਿਖਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ"</string>
-    <string name="force_resizable_activities" msgid="7143612144399959606">"ਵਿੰਡੋ ਮੁਤਾਬਕ ਸਰਗਰਮੀਆਂ ਦਾ ਆਕਾਰ ਬਦਲਣ ਦਿਓ"</string>
+    <string name="force_resizable_activities" msgid="7143612144399959606">"ਸਰਗਰਮੀਆਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਆਕਾਰ ਬਦਲਣਯੋਗ ਬਣਾਓ"</string>
     <string name="force_resizable_activities_summary" msgid="2490382056981583062">"ਮੈਨੀਫ਼ੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਮਲਟੀ-ਵਿੰਡੋ ਲਈ ਸਾਰੀਆਂ ਸਰਗਰਮੀਆਂ ਨੂੰ ਆਕਾਰ ਬਦਲਣਯੋਗ ਬਣਾਓ।"</string>
     <string name="enable_freeform_support" msgid="7599125687603914253">"ਫ੍ਰੀਫਾਰਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
     <string name="enable_freeform_support_summary" msgid="1822862728719276331">"ਪ੍ਰਯੋਗਮਈ ਫ੍ਰੀਫਾਰਮ ਵਿੰਡੋਜ਼ ਲਈ ਸਮਰਥਨ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 3b6d758..8babb8b 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -288,7 +288,7 @@
     <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Zezwolić na zdjęcie blokady OEM?"</string>
     <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"UWAGA: gdy to ustawienie jest włączone, na urządzeniu nie będą działać funkcje ochrony."</string>
     <string name="mock_location_app" msgid="6269380172542248304">"Aplikacja do pozorowania lokalizacji"</string>
-    <string name="mock_location_app_not_set" msgid="6972032787262831155">"Nie ustawiono aplikacji do pozorowania lokalizacji"</string>
+    <string name="mock_location_app_not_set" msgid="6972032787262831155">"Nie wybrano aplikacji"</string>
     <string name="mock_location_app_set" msgid="4706722469342913843">"Aplikacja do pozorowania lokalizacji: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="debug_networking_category" msgid="6829757985772659599">"Sieci"</string>
     <string name="wifi_display_certification" msgid="1805579519992520381">"Certyfikacja wyświetlacza bezprzewodowego"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 1c76fdd..4bddeb9a 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -94,7 +94,7 @@
     <string name="bluetooth_connected_no_headset_battery_level" msgid="2661863370509206428">"Conectat (fără telefon), baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
     <string name="bluetooth_connected_no_a2dp_battery_level" msgid="6499078454894324287">"Conectat (fără conținut media), baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
     <string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="8477440576953067242">"Conectat (fără telefon sau conținut media), baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
-    <string name="bluetooth_active_battery_level" msgid="2685517576209066008">"Activ. Nivelul bateriei <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
+    <string name="bluetooth_active_battery_level" msgid="2685517576209066008">"Activ. Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_battery_level_untethered" msgid="4961338936672922617">"Activ. Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_active_battery_level_untethered_left" msgid="2895644748625343977">"Activ. Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_battery_level_untethered_right" msgid="7407517998880370179">"Activ. Nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 2972e61..f7d1ce2 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -281,7 +281,7 @@
     <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Показывать в меню кнопки питания пункт для отправки отчета об ошибке"</string>
     <string name="keep_screen_on" msgid="1187161672348797558">"Не выключать экран"</string>
     <string name="keep_screen_on_summary" msgid="1510731514101925829">"Во время зарядки экран будет всегда включен"</string>
-    <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Включить snoop-логи HCI Bluetooth"</string>
+    <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Включить snoop-логи Bluetooth HCI"</string>
     <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Сохранять все пакеты Bluetooth (перезапустите Bluetooth после изменения этой настройки)"</string>
     <string name="oem_unlock_enable" msgid="5334869171871566731">"Заводская разблокировка"</string>
     <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Разрешить разблокировку загрузчика ОС"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index c4677be..636d969 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -341,7 +341,7 @@
     <string name="allow_mock_location_summary" msgid="179780881081354579">"Tillåt skenplatser"</string>
     <string name="debug_view_attributes" msgid="3539609843984208216">"Aktivera inspektion av visningsattribut"</string>
     <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Håll alltid mobildata aktiverad, även när wifi är aktiverat (så att du snabbt kan byta mellan nätverk)."</string>
-    <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Använd maskinvaruacceleration för internetdelning om tillgängligt"</string>
+    <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Använd hårdvaruacceleration för internetdelning om tillgängligt"</string>
     <string name="adb_warning_title" msgid="7708653449506485728">"Ska USB-felsökning tillåtas?"</string>
     <string name="adb_warning_message" msgid="8145270656419669221">"USB-felsökning ska endast användas i utvecklingssyfte. Använd den för att kopiera data mellan datorn och enheten, installera appar på enheten utan meddelanden och läsa loggdata."</string>
     <string name="adbwifi_warning_title" msgid="727104571653031865">"Vill du tillåta trådlös felsökning?"</string>
@@ -369,7 +369,7 @@
     <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Felsökaren måste ansluta till appen först"</string>
     <string name="debug_input_category" msgid="7349460906970849771">"Indata"</string>
     <string name="debug_drawing_category" msgid="5066171112313666619">"Ritning"</string>
-    <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Maskinvaruaccelererad rendering"</string>
+    <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hårdvaruaccelererad rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Övervakning"</string>
     <string name="strict_mode" msgid="889864762140862437">"Strikt läge aktiverat"</string>
@@ -384,8 +384,8 @@
     <string name="show_screen_updates_summary" msgid="2126932969682087406">"Hela fönstret blinkar vid uppdatering"</string>
     <string name="show_hw_screen_updates" msgid="2021286231267747506">"Visa visningsuppdatering"</string>
     <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Visningar blinkar i fönster vid ritningar"</string>
-    <string name="show_hw_layers_updates" msgid="5268370750002509767">"Visa maskinvaruskiktuppdatering"</string>
-    <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Låt maskinvaruskikt blinka grönt vid uppdateringar"</string>
+    <string name="show_hw_layers_updates" msgid="5268370750002509767">"Visa hårdvaruskiktuppdatering"</string>
+    <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Låt hårdvaruskikt blinka grönt vid uppdateringar"</string>
     <string name="debug_hw_overdraw" msgid="8944851091008756796">"Felsök GPU-överritning"</string>
     <string name="disable_overlays" msgid="4206590799671557143">"Inaktivera HW-överlagringar"</string>
     <string name="disable_overlays_summary" msgid="1954852414363338166">"Använd alltid GPU för skärmsammansättning"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index b7446c2..16d40c2 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -281,7 +281,7 @@
     <string name="bugreport_in_power_summary" msgid="1885529649381831775">"బగ్ రిపోర్ట్‌ను తీసుకోవడానికి పవర్ మెనూలో బటన్‌ను చూపు"</string>
     <string name="keep_screen_on" msgid="1187161672348797558">"యాక్టివ్‌గా ఉంచు"</string>
     <string name="keep_screen_on_summary" msgid="1510731514101925829">"ఛార్జ్ చేస్తున్నప్పుడు స్క్రీన్ ఎప్పటికీ నిద్రావస్థలోకి వెళ్లదు"</string>
-    <string name="bt_hci_snoop_log" msgid="7291287955649081448">"బ్లూటూత్ HCI స్నూప్ లాగ్‌ను ఎనేబుల్ చేయి"</string>
+    <string name="bt_hci_snoop_log" msgid="7291287955649081448">"బ్లూటూత్ HCI స్నూప్ లాగ్‌ను ఎనేబుల్ చేయండి"</string>
     <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"బ్లూటూత్‌ ప్యాకెట్‌లను క్యాప్చర్ చేయి. (ఈ సెట్టింగ్‌ని మార్చిన తర్వాత బ్లూటూత్‌ని టోగుల్ చేయండి)"</string>
     <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM అన్‌లాకింగ్"</string>
     <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"బూట్‌లోడర్ అన్‌లాక్ కావడానికి అనుమతించండి"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 0400e0e..deb0a40 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -710,7 +710,7 @@
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"За умовчанням"</string>
     <string name="turn_screen_on_title" msgid="2662312432042116026">"Керування ввімкненням екрана"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Дозволити ввімкнення екрана"</string>
-    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Дозвольте додатку вмикати екран. Якщо ви надасте цей дозвіл, додаток зможе будь-коли вмикати екран пристрою навіть без вашого явного наміру."</string>
+    <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Додатку буде дозволено вмикати екран. З таким дозволом додаток зможе будь-коли вмикати екран пристрою навіть без вашого явного наміру."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Зупинити трансляцію з додатка <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Якщо ви зміните додаток (<xliff:g id="SWITCHAPP">%1$s</xliff:g>) або аудіовихід, поточну трансляцію буде припинено"</string>
     <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Змінити додаток для трансляції на <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 7a355b9..e16e46a 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -708,8 +708,8 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"实体键盘"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"选择键盘布局"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"默认"</string>
-    <string name="turn_screen_on_title" msgid="2662312432042116026">"屏幕开启控件"</string>
-    <string name="allow_turn_screen_on" msgid="6194845766392742639">"允许开启屏幕"</string>
+    <string name="turn_screen_on_title" msgid="2662312432042116026">"屏幕唤醒设置"</string>
+    <string name="allow_turn_screen_on" msgid="6194845766392742639">"允许唤醒屏幕"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"允许应用唤醒屏幕。如获授权,该应用便可在您未明确表达意愿的情况下随时唤醒屏幕。"</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"要停止广播“<xliff:g id="APP_NAME">%1$s</xliff:g>”的内容吗?"</string>
     <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"如果广播“<xliff:g id="SWITCHAPP">%1$s</xliff:g>”的内容或更改输出来源,当前的广播就会停止"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 3f35957..fdb4cf3 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -708,7 +708,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"實體鍵盤"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"選擇鍵盤配置"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"預設"</string>
-    <string name="turn_screen_on_title" msgid="2662312432042116026">"螢幕開啟控制選項"</string>
+    <string name="turn_screen_on_title" msgid="2662312432042116026">"螢幕開啟設定"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"允許開啟螢幕"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"允許應用程式開啟螢幕。如果授予這項權限,即使你未明確指示,應用程式也隨時可能會開啟螢幕。"</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"要停止播送「<xliff:g id="APP_NAME">%1$s</xliff:g>」的內容嗎?"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
index cdb8740..063807a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
@@ -17,6 +17,8 @@
 
 import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothHearingAid;
@@ -37,21 +39,14 @@
 
     private static final String TAG = "BluetoothMediaDevice";
 
-    private CachedBluetoothDevice mCachedDevice;
+    private final CachedBluetoothDevice mCachedDevice;
     private final AudioManager mAudioManager;
 
     BluetoothMediaDevice(
-            Context context,
-            CachedBluetoothDevice device,
-            MediaRoute2Info info) {
-        this(context, device, info, null);
-    }
-
-    BluetoothMediaDevice(
-            Context context,
-            CachedBluetoothDevice device,
-            MediaRoute2Info info,
-            RouteListingPreference.Item item) {
+            @NonNull Context context,
+            @NonNull CachedBluetoothDevice device,
+            @Nullable MediaRoute2Info info,
+            @Nullable RouteListingPreference.Item item) {
         super(context, info, item);
         mCachedDevice = device;
         mAudioManager = context.getSystemService(AudioManager.class);
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java
index 338fb87..a87daf9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java
@@ -16,6 +16,8 @@
 
 package com.android.settingslib.media;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.media.MediaRoute2Info;
@@ -32,9 +34,9 @@
     private final String mSummary = "";
 
     ComplexMediaDevice(
-            Context context,
-            MediaRoute2Info info,
-            RouteListingPreference.Item item) {
+            @NonNull Context context,
+            @NonNull MediaRoute2Info info,
+            @Nullable RouteListingPreference.Item item) {
         super(context, info, item);
     }
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/DeviceIconUtil.java b/packages/SettingsLib/src/com/android/settingslib/media/DeviceIconUtil.java
index 3de4933..f3ff0fe 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/DeviceIconUtil.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/DeviceIconUtil.java
@@ -16,135 +16,124 @@
 
 package com.android.settingslib.media;
 
+import static android.media.AudioDeviceInfo.AudioDeviceType;
+import static android.media.AudioDeviceInfo.TYPE_BUILTIN_SPEAKER;
+import static android.media.AudioDeviceInfo.TYPE_DOCK;
+import static android.media.AudioDeviceInfo.TYPE_HDMI;
+import static android.media.AudioDeviceInfo.TYPE_HDMI_ARC;
+import static android.media.AudioDeviceInfo.TYPE_HDMI_EARC;
+import static android.media.AudioDeviceInfo.TYPE_USB_ACCESSORY;
+import static android.media.AudioDeviceInfo.TYPE_USB_DEVICE;
+import static android.media.AudioDeviceInfo.TYPE_USB_HEADSET;
+import static android.media.AudioDeviceInfo.TYPE_WIRED_HEADPHONES;
+import static android.media.AudioDeviceInfo.TYPE_WIRED_HEADSET;
+
 import android.annotation.DrawableRes;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
-import android.media.AudioDeviceInfo;
 import android.media.MediaRoute2Info;
+import android.util.SparseIntArray;
 
+import androidx.annotation.NonNull;
+
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.settingslib.R;
 import com.android.settingslib.media.flags.Flags;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.Objects;
 
 /** A util class to get the appropriate icon for different device types. */
 public class DeviceIconUtil {
 
-    // A default icon to use if the type is not present in the map.
-    @DrawableRes private static final int DEFAULT_ICON = R.drawable.ic_smartphone;
-    @DrawableRes private static final int DEFAULT_ICON_TV = R.drawable.ic_media_speaker_device;
-
-    // A map from a @AudioDeviceInfo.AudioDeviceType to full device information.
-    private final Map<Integer, Device> mAudioDeviceTypeToIconMap = new HashMap<>();
-    // A map from a @MediaRoute2Info.Type to full device information.
-    private final Map<Integer, Device> mMediaRouteTypeToIconMap = new HashMap<>();
+    private static final SparseIntArray AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE = new SparseIntArray();
 
     private final boolean mIsTv;
-
-    public DeviceIconUtil(Context context) {
-        this(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK));
+    private final Context mContext;
+    public DeviceIconUtil(@NonNull Context context) {
+        mContext = Objects.requireNonNull(context);
+        mIsTv =
+                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)
+                        && Flags.enableTvMediaOutputDialog();
     }
 
-    public DeviceIconUtil(boolean isTv) {
-        mIsTv = isTv && Flags.enableTvMediaOutputDialog();
-        List<Device> deviceList = Arrays.asList(
-                        new Device(
-                                AudioDeviceInfo.TYPE_USB_DEVICE,
-                                MediaRoute2Info.TYPE_USB_DEVICE,
-                                R.drawable.ic_headphone),
-                        new Device(
-                                AudioDeviceInfo.TYPE_USB_HEADSET,
-                                MediaRoute2Info.TYPE_USB_HEADSET,
-                                R.drawable.ic_headphone),
-                        new Device(
-                                AudioDeviceInfo.TYPE_USB_ACCESSORY,
-                                MediaRoute2Info.TYPE_USB_ACCESSORY,
-                                mIsTv ? R.drawable.ic_usb : R.drawable.ic_headphone),
-                        new Device(
-                                AudioDeviceInfo.TYPE_DOCK,
-                                MediaRoute2Info.TYPE_DOCK,
-                                R.drawable.ic_dock_device),
-                        new Device(
-                                AudioDeviceInfo.TYPE_HDMI,
-                                MediaRoute2Info.TYPE_HDMI,
-                                mIsTv ? R.drawable.ic_tv : R.drawable.ic_external_display),
-                        new Device(
-                                AudioDeviceInfo.TYPE_HDMI_ARC,
-                                MediaRoute2Info.TYPE_HDMI_ARC,
-                                mIsTv ? R.drawable.ic_hdmi : R.drawable.ic_external_display),
-                        new Device(
-                                AudioDeviceInfo.TYPE_HDMI_EARC,
-                                MediaRoute2Info.TYPE_HDMI_EARC,
-                                mIsTv ? R.drawable.ic_hdmi : R.drawable.ic_external_display),
-                        new Device(
-                                AudioDeviceInfo.TYPE_WIRED_HEADSET,
-                                MediaRoute2Info.TYPE_WIRED_HEADSET,
-                                mIsTv ? R.drawable.ic_wired_device : R.drawable.ic_headphone),
-                        new Device(
-                                AudioDeviceInfo.TYPE_WIRED_HEADPHONES,
-                                MediaRoute2Info.TYPE_WIRED_HEADPHONES,
-                                mIsTv ? R.drawable.ic_wired_device : R.drawable.ic_headphone),
-                        new Device(
-                                AudioDeviceInfo.TYPE_BUILTIN_SPEAKER,
-                                MediaRoute2Info.TYPE_BUILTIN_SPEAKER,
-                                mIsTv ? R.drawable.ic_tv : R.drawable.ic_smartphone));
-        for (int i = 0; i < deviceList.size(); i++) {
-            Device device = deviceList.get(i);
-            mAudioDeviceTypeToIconMap.put(device.mAudioDeviceType, device);
-            mMediaRouteTypeToIconMap.put(device.mMediaRouteType, device);
-        }
-    }
-
-    private int getDefaultIcon() {
-        return mIsTv ? DEFAULT_ICON_TV : DEFAULT_ICON;
+    @VisibleForTesting
+    /* package */ DeviceIconUtil(boolean isTv) {
+        mContext = null;
+        mIsTv = isTv;
     }
 
     /** Returns a drawable for an icon representing the given audioDeviceType. */
-    public Drawable getIconFromAudioDeviceType(
-            @AudioDeviceInfo.AudioDeviceType int audioDeviceType, Context context) {
-        return context.getDrawable(getIconResIdFromAudioDeviceType(audioDeviceType));
+    public Drawable getIconFromAudioDeviceType(@AudioDeviceType int audioDeviceType) {
+        return mContext.getDrawable(getIconResIdFromAudioDeviceType(audioDeviceType));
     }
 
     /** Returns a drawable res ID for an icon representing the given audioDeviceType. */
     @DrawableRes
-    public int getIconResIdFromAudioDeviceType(
-            @AudioDeviceInfo.AudioDeviceType int audioDeviceType) {
-        if (mAudioDeviceTypeToIconMap.containsKey(audioDeviceType)) {
-            return mAudioDeviceTypeToIconMap.get(audioDeviceType).mIconDrawableRes;
-        }
-        return getDefaultIcon();
+    public int getIconResIdFromAudioDeviceType(@AudioDeviceType int audioDeviceType) {
+        int mediaRouteType =
+                AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.get(audioDeviceType, /* defaultValue */ -1);
+        return getIconResIdFromMediaRouteType(mediaRouteType);
     }
 
     /** Returns a drawable res ID for an icon representing the given mediaRouteType. */
     @DrawableRes
-    public int getIconResIdFromMediaRouteType(
-            @MediaRoute2Info.Type int mediaRouteType) {
-        if (mMediaRouteTypeToIconMap.containsKey(mediaRouteType)) {
-            return mMediaRouteTypeToIconMap.get(mediaRouteType).mIconDrawableRes;
-        }
-        return getDefaultIcon();
+    public int getIconResIdFromMediaRouteType(@MediaRoute2Info.Type int type) {
+        return mIsTv ? getIconResourceIdForTv(type) : getIconResourceIdForPhone(type);
     }
 
-    private static class Device {
-        @AudioDeviceInfo.AudioDeviceType
-        private final int mAudioDeviceType;
+    @SuppressLint("SwitchIntDef")
+    @DrawableRes
+    private static int getIconResourceIdForPhone(@MediaRoute2Info.Type int type) {
+        return switch (type) {
+            case MediaRoute2Info.TYPE_USB_DEVICE,
+                            MediaRoute2Info.TYPE_USB_HEADSET,
+                            MediaRoute2Info.TYPE_USB_ACCESSORY,
+                            MediaRoute2Info.TYPE_WIRED_HEADSET,
+                            MediaRoute2Info.TYPE_WIRED_HEADPHONES ->
+                    R.drawable.ic_headphone;
+            case MediaRoute2Info.TYPE_DOCK -> R.drawable.ic_dock_device;
+            case MediaRoute2Info.TYPE_HDMI,
+                            MediaRoute2Info.TYPE_HDMI_ARC,
+                            MediaRoute2Info.TYPE_HDMI_EARC ->
+                    R.drawable.ic_external_display;
+            default -> R.drawable.ic_smartphone; // Includes TYPE_BUILTIN_SPEAKER.
+        };
+    }
 
-        @MediaRoute2Info.Type
-        private final int mMediaRouteType;
+    @SuppressLint("SwitchIntDef")
+    @DrawableRes
+    private static int getIconResourceIdForTv(@MediaRoute2Info.Type int type) {
+        return switch (type) {
+            case MediaRoute2Info.TYPE_USB_DEVICE, MediaRoute2Info.TYPE_USB_HEADSET ->
+                    R.drawable.ic_headphone;
+            case MediaRoute2Info.TYPE_USB_ACCESSORY -> R.drawable.ic_usb;
+            case MediaRoute2Info.TYPE_DOCK -> R.drawable.ic_dock_device;
+            case MediaRoute2Info.TYPE_HDMI, MediaRoute2Info.TYPE_BUILTIN_SPEAKER ->
+                    R.drawable.ic_tv;
+            case MediaRoute2Info.TYPE_HDMI_ARC, MediaRoute2Info.TYPE_HDMI_EARC ->
+                    R.drawable.ic_hdmi;
+            case MediaRoute2Info.TYPE_WIRED_HEADSET, MediaRoute2Info.TYPE_WIRED_HEADPHONES ->
+                    R.drawable.ic_wired_device;
+            default -> R.drawable.ic_media_speaker_device;
+        };
+    }
 
-        @DrawableRes
-        private final int mIconDrawableRes;
-
-        Device(@AudioDeviceInfo.AudioDeviceType int audioDeviceType,
-                @MediaRoute2Info.Type int mediaRouteType,
-                @DrawableRes int iconDrawableRes) {
-            mAudioDeviceType = audioDeviceType;
-            mMediaRouteType = mediaRouteType;
-            mIconDrawableRes = iconDrawableRes;
-        }
+    static {
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_USB_DEVICE, MediaRoute2Info.TYPE_USB_DEVICE);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_USB_HEADSET, MediaRoute2Info.TYPE_USB_HEADSET);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(
+                TYPE_USB_ACCESSORY, MediaRoute2Info.TYPE_USB_ACCESSORY);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_DOCK, MediaRoute2Info.TYPE_DOCK);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_HDMI, MediaRoute2Info.TYPE_HDMI);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_HDMI_ARC, MediaRoute2Info.TYPE_HDMI_ARC);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(TYPE_HDMI_EARC, MediaRoute2Info.TYPE_HDMI_EARC);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(
+                TYPE_WIRED_HEADSET, MediaRoute2Info.TYPE_WIRED_HEADSET);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(
+                TYPE_WIRED_HEADPHONES, MediaRoute2Info.TYPE_WIRED_HEADPHONES);
+        AUDIO_DEVICE_TO_MEDIA_ROUTE_TYPE.put(
+                TYPE_BUILTIN_SPEAKER, MediaRoute2Info.TYPE_BUILTIN_SPEAKER);
     }
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
index 1347dd1..21873ef 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
@@ -26,6 +26,8 @@
 import static android.media.MediaRoute2Info.TYPE_REMOTE_TABLET_DOCKED;
 import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.media.MediaRoute2Info;
@@ -43,17 +45,13 @@
     private static final String TAG = "InfoMediaDevice";
 
     InfoMediaDevice(
-            Context context,
-            MediaRoute2Info info,
-            RouteListingPreference.Item item) {
+            @NonNull Context context,
+            @NonNull MediaRoute2Info info,
+            @Nullable RouteListingPreference.Item item) {
         super(context, info, item);
         initDeviceRecord();
     }
 
-    InfoMediaDevice(Context context, MediaRoute2Info info) {
-        this(context, info, null);
-    }
-
     @Override
     public String getName() {
         return mRouteInfo.getName().toString();
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index cfa825b..72a60fb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -570,7 +570,7 @@
                 final CachedBluetoothDevice cachedDevice =
                         cachedDeviceManager.findDevice(device);
                 if (isBondedMediaDevice(cachedDevice) && isMutingExpectedDevice(cachedDevice)) {
-                    return new BluetoothMediaDevice(mContext, cachedDevice, null);
+                    return new BluetoothMediaDevice(mContext, cachedDevice, null, /* item */ null);
                 }
             }
             return null;
@@ -617,7 +617,7 @@
             mDisconnectedMediaDevices.clear();
             for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) {
                 final MediaDevice mediaDevice =
-                        new BluetoothMediaDevice(mContext, cachedDevice, null);
+                        new BluetoothMediaDevice(mContext, cachedDevice, null, /* item */ null);
                 if (!mMediaDevices.contains(mediaDevice)) {
                     cachedDevice.registerCallback(mDeviceAttributeChangeCallback);
                     mDisconnectedMediaDevices.add(mediaDevice);
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
index 0c4cf76..ce1f297 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
@@ -49,6 +49,8 @@
 import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED;
 import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
@@ -123,9 +125,9 @@
     protected final RouteListingPreference.Item mItem;
 
     MediaDevice(
-            Context context,
-            MediaRoute2Info info,
-            RouteListingPreference.Item item) {
+            @NonNull Context context,
+            @Nullable MediaRoute2Info info,
+            @Nullable RouteListingPreference.Item item) {
         mContext = context;
         mRouteInfo = info;
         mItem = item;
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
index ba9180d..9eaf8d3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
@@ -29,6 +29,8 @@
 import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
 
 import android.Manifest;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
@@ -40,7 +42,6 @@
 import android.os.SystemProperties;
 import android.util.Log;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.settingslib.R;
@@ -100,17 +101,6 @@
                         R.string.media_transfer_external_device_name);
                 break;
             case TYPE_HDMI_ARC:
-                if (isTv) {
-                    String deviceName = getHdmiOutDeviceName(context);
-                    if (deviceName != null) {
-                        name = deviceName;
-                    } else {
-                        name = context.getString(R.string.tv_media_transfer_arc_fallback_title);
-                    }
-                } else {
-                    name = context.getString(R.string.media_transfer_external_device_name);
-                }
-                break;
             case TYPE_HDMI_EARC:
                 if (isTv) {
                     String deviceName = getHdmiOutDeviceName(context);
@@ -130,14 +120,10 @@
         return name.toString();
     }
 
-    PhoneMediaDevice(Context context, MediaRoute2Info info) {
-        this(context, info, null);
-    }
-
     PhoneMediaDevice(
-            Context context,
-            MediaRoute2Info info,
-            RouteListingPreference.Item item) {
+            @NonNull Context context,
+            @NonNull MediaRoute2Info info,
+            @Nullable RouteListingPreference.Item item) {
         super(context, info, item);
         mDeviceIconUtil = new DeviceIconUtil(mContext);
         initDeviceRecord();
diff --git a/packages/SettingsLib/src/com/android/settingslib/qrcode/QrDecorateView.java b/packages/SettingsLib/src/com/android/settingslib/qrcode/QrDecorateView.java
index e034254..eb57b40 100644
--- a/packages/SettingsLib/src/com/android/settingslib/qrcode/QrDecorateView.java
+++ b/packages/SettingsLib/src/com/android/settingslib/qrcode/QrDecorateView.java
@@ -24,6 +24,7 @@
 import android.graphics.PorterDuffXfermode;
 import android.graphics.RectF;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.util.TypedValue;
 import android.view.View;
 
@@ -33,6 +34,7 @@
     private static final float CORNER_STROKE_WIDTH = 4f;    // 4dp
     private static final float CORNER_LINE_LENGTH = 264f;   // 264dp
     private static final float CORNER_RADIUS = 16f;         // 16dp
+    private static final String TAG = "QrDecorateView";
 
     private final int mCornerColor;
     private final int mFocusedCornerColor;
@@ -94,6 +96,10 @@
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);
+        if (getWidth() <= 0 || getHeight() <= 0) {
+            Log.e(TAG, "width and height must be > 0");
+            return;
+        }
 
         if (mMaskBitmap == null) {
             mMaskBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt
index 8204569..20b949f4 100644
--- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt
@@ -37,6 +37,7 @@
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.emptyFlow
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.filterIsInstance
@@ -161,6 +162,7 @@
                 },
                 volumeSettingChanges(audioStream),
             )
+            .conflate()
             .map { getCurrentAudioStream(audioStream) }
             .onStart { emit(getCurrentAudioStream(audioStream)) }
             .flowOn(backgroundCoroutineContext)
@@ -184,10 +186,11 @@
         }
     }
 
-    override suspend fun setVolume(audioStream: AudioStream, volume: Int) =
+    override suspend fun setVolume(audioStream: AudioStream, volume: Int) {
         withContext(backgroundCoroutineContext) {
             audioManager.setStreamVolume(audioStream.value, volume, 0)
         }
+    }
 
     override suspend fun setMuted(audioStream: AudioStream, isMuted: Boolean): Boolean {
         return withContext(backgroundCoroutineContext) {
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
index 0665308..6647a27 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
@@ -65,7 +65,7 @@
         MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
 
-        mInfoMediaDevice = new InfoMediaDevice(mContext, mRouteInfo);
+        mInfoMediaDevice = new InfoMediaDevice(mContext, mRouteInfo, /* item */ null);
     }
 
     @Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
index ce07fe9..c9b35a0a 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
@@ -559,7 +559,7 @@
         routingSessionInfos.add(info);
 
         final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
-        final MediaDevice device = new InfoMediaDevice(mContext, route2Info);
+        final MediaDevice device = new InfoMediaDevice(mContext, route2Info, /* item */ null);
 
         final List<String> list = new ArrayList<>();
         list.add(TEST_ID);
@@ -580,7 +580,7 @@
         routingSessionInfos.add(info);
 
         final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
-        final MediaDevice device = new InfoMediaDevice(mContext, route2Info);
+        final MediaDevice device = new InfoMediaDevice(mContext, route2Info, /* item */ null);
 
         final List<String> list = new ArrayList<>();
         list.add("fake_id");
@@ -602,7 +602,7 @@
         routingSessionInfos.add(info);
 
         final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
-        final MediaDevice device = new InfoMediaDevice(mContext, route2Info);
+        final MediaDevice device = new InfoMediaDevice(mContext, route2Info, /* item */ null);
 
         final List<String> list = new ArrayList<>();
         list.add(TEST_ID);
@@ -623,7 +623,7 @@
         routingSessionInfos.add(info);
 
         final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
-        final MediaDevice device = new InfoMediaDevice(mContext, route2Info);
+        final MediaDevice device = new InfoMediaDevice(mContext, route2Info, /* item */ null);
 
         final List<String> list = new ArrayList<>();
         list.add("fake_id");
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
index 12541bb..a30d6a7 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
@@ -135,8 +135,8 @@
                 .when(mInfoMediaManager)
                 .getRoutingSessionsForPackage();
 
-        mInfoMediaDevice1 = spy(new InfoMediaDevice(mContext, mRouteInfo1));
-        mInfoMediaDevice2 = new InfoMediaDevice(mContext, mRouteInfo2);
+        mInfoMediaDevice1 = spy(new InfoMediaDevice(mContext, mRouteInfo1, /* item */ null));
+        mInfoMediaDevice2 = new InfoMediaDevice(mContext, mRouteInfo2, /* item */ null);
         mLocalMediaManager =
                 new LocalMediaManager(
                         mContext, mLocalBluetoothManager, mInfoMediaManager, TEST_PACKAGE_NAME);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
index 098ab16..3d16d6f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
@@ -171,17 +171,17 @@
 
         mBluetoothMediaDevice1 =
                 new BluetoothMediaDevice(
-                        mContext, mCachedDevice1, mBluetoothRouteInfo1);
+                        mContext, mCachedDevice1, mBluetoothRouteInfo1, /* item */ null);
         mBluetoothMediaDevice2 =
                 new BluetoothMediaDevice(
-                        mContext, mCachedDevice2, mBluetoothRouteInfo2);
+                        mContext, mCachedDevice2, mBluetoothRouteInfo2, /* item */ null);
         mBluetoothMediaDevice3 =
                 new BluetoothMediaDevice(
-                        mContext, mCachedDevice3, mBluetoothRouteInfo3);
-        mInfoMediaDevice1 = new InfoMediaDevice(mContext, mRouteInfo1);
-        mInfoMediaDevice2 = new InfoMediaDevice(mContext, mRouteInfo2);
-        mInfoMediaDevice3 = new InfoMediaDevice(mContext, mRouteInfo3);
-        mPhoneMediaDevice = new PhoneMediaDevice(mContext, mPhoneRouteInfo);
+                        mContext, mCachedDevice3, mBluetoothRouteInfo3, /* item */ null);
+        mInfoMediaDevice1 = new InfoMediaDevice(mContext, mRouteInfo1, /* item */ null);
+        mInfoMediaDevice2 = new InfoMediaDevice(mContext, mRouteInfo2, /* item */ null);
+        mInfoMediaDevice3 = new InfoMediaDevice(mContext, mRouteInfo3, /* item */ null);
+        mPhoneMediaDevice = new PhoneMediaDevice(mContext, mPhoneRouteInfo, /* item */ null);
     }
 
     @Test
@@ -316,7 +316,7 @@
         when(phoneRouteInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES);
 
         final PhoneMediaDevice phoneMediaDevice =
-                new PhoneMediaDevice(mContext, phoneRouteInfo);
+                new PhoneMediaDevice(mContext, phoneRouteInfo, /* item */ null);
 
         mMediaDevices.add(mBluetoothMediaDevice1);
         mMediaDevices.add(phoneMediaDevice);
@@ -332,7 +332,7 @@
         when(phoneRouteInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES);
 
         final PhoneMediaDevice phoneMediaDevice =
-                new PhoneMediaDevice(mContext, phoneRouteInfo);
+                new PhoneMediaDevice(mContext, phoneRouteInfo, /* item */ null);
 
         mMediaDevices.add(mInfoMediaDevice1);
         mMediaDevices.add(phoneMediaDevice);
@@ -483,7 +483,7 @@
     public void getFeatures_noRouteInfo_returnEmptyList() {
         mBluetoothMediaDevice1 =
                 new BluetoothMediaDevice(
-                        mContext, mCachedDevice1, /* MediaRoute2Info */ null);
+                        mContext, mCachedDevice1, /* MediaRoute2Info */ null, /* item */ null);
 
         assertThat(mBluetoothMediaDevice1.getFeatures().size()).isEqualTo(0);
     }
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
index 1706a6f..4125a81f 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
@@ -101,7 +101,6 @@
         Settings.Global.Wearable.AMBIENT_TILT_TO_WAKE,
         Settings.Global.Wearable.AMBIENT_TOUCH_TO_WAKE,
         Settings.Global.Wearable.GESTURE_TOUCH_AND_HOLD_WATCH_FACE_ENABLED,
-        Settings.Global.Wearable.BATTERY_SAVER_MODE,
         Settings.Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_MS,
         Settings.Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_SET_BY_USER,
         Settings.Global.Wearable.DYNAMIC_COLOR_THEME_ENABLED,
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
index 11fa8f4..5245456 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
@@ -79,6 +79,7 @@
                 Settings.System.SIP_CALL_OPTIONS,
                 Settings.System.SIP_RECEIVE_CALLS,
                 Settings.System.POINTER_SPEED,
+                Settings.System.POINTER_FILL_STYLE,
                 Settings.System.VIBRATE_ON,
                 Settings.System.VIBRATE_WHEN_RINGING,
                 Settings.System.RINGTONE,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
index 011b42f..2c3be4c 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
@@ -26,6 +26,8 @@
 import static android.provider.settings.validators.SettingsValidators.NON_NEGATIVE_INTEGER_VALIDATOR;
 import static android.provider.settings.validators.SettingsValidators.URI_VALIDATOR;
 import static android.provider.settings.validators.SettingsValidators.VIBRATION_INTENSITY_VALIDATOR;
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_BEGIN;
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_END;
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -206,6 +208,9 @@
         VALIDATORS.put(System.SIP_ADDRESS_ONLY, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.SIP_ASK_ME_EACH_TIME, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.POINTER_SPEED, new InclusiveFloatRangeValidator(-7, 7));
+        VALIDATORS.put(System.POINTER_FILL_STYLE,
+                new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_FILL_BEGIN,
+                        POINTER_ICON_VECTOR_STYLE_FILL_END));
         VALIDATORS.put(System.TOUCHPAD_POINTER_SPEED, new InclusiveIntegerRangeValidator(-7, 7));
         VALIDATORS.put(System.TOUCHPAD_NATURAL_SCROLLING, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.TOUCHPAD_TAP_TO_CLICK, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 70ce202..625b8e4 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -2911,6 +2911,11 @@
         // Settings.System.NOTIFICATIONS_USE_RING_VOLUME intentionally excluded since it's deprecated.
         p.end(notificationToken);
 
+        final long pointerToken = p.start(SystemSettingsProto.POINTER);
+        dumpSetting(s, p,
+                Settings.System.POINTER_FILL_STYLE,
+                SystemSettingsProto.Pointer.POINTER_FILL_STYLE);
+        p.end(pointerToken);
         dumpSetting(s, p,
                 Settings.System.POINTER_SPEED,
                 SystemSettingsProto.POINTER_SPEED);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 096cccc..15f8a7b 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -1972,7 +1972,7 @@
 
         File cacheFile = getCacheFile(name, callingUserId);
         if (cacheFile != null) {
-            if (!isValidAudioUri(name, value)) {
+            if (!isValidMediaUri(name, value)) {
                 return false;
             }
             // Invalidate any relevant cache files
@@ -2031,7 +2031,7 @@
         return true;
     }
 
-    private boolean isValidAudioUri(String name, String uri) {
+    private boolean isValidMediaUri(String name, String uri) {
         if (uri != null) {
             Uri audioUri = Uri.parse(uri);
             if (Settings.AUTHORITY.equals(
@@ -2049,10 +2049,13 @@
                 return false;
             }
             if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
-                    || mimeType.equals("application/x-flac"))) {
+                    || mimeType.equals("application/x-flac")
+                    // also check for video ringtones
+                    || mimeType.startsWith("video/") || mimeType.equals("application/mp4"))) {
                 Slog.e(LOG_TAG,
                         "mutateSystemSetting for setting: " + name + " URI: " + audioUri
-                        + " ignored: associated mimeType: " + mimeType + " is not an audio type");
+                        + " ignored: associated MIME type:" + mimeType
+                        + " is not a recognized audio or video type");
                 return false;
             }
         }
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 4ec170d..c6ae96e 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -595,6 +595,7 @@
                     Settings.Global.Wearable.MOBILE_SIGNAL_DETECTOR,
                     Settings.Global.Wearable.AMBIENT_LOW_BIT_ENABLED_DEV,
                     Settings.Global.Wearable.AMBIENT_TILT_TO_BRIGHT,
+                    Settings.Global.Wearable.BATTERY_SAVER_MODE,
                     Settings.Global.Wearable.DECOMPOSABLE_WATCHFACE,
                     Settings.Global.Wearable.AMBIENT_FORCE_WHEN_DOCKED,
                     Settings.Global.Wearable.AMBIENT_LOW_BIT_ENABLED,
diff --git a/packages/SoundPicker/res/values-vi/strings.xml b/packages/SoundPicker/res/values-vi/strings.xml
index bed0e96..b6f8793 100644
--- a/packages/SoundPicker/res/values-vi/strings.xml
+++ b/packages/SoundPicker/res/values-vi/strings.xml
@@ -20,7 +20,7 @@
     <string name="notification_sound_default" msgid="8133121186242636840">"Âm thanh thông báo mặc định"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Âm thanh chuông báo mặc định"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Thêm nhạc chuông"</string>
-    <string name="add_alarm_text" msgid="3545497316166999225">"Thêm báo thức"</string>
+    <string name="add_alarm_text" msgid="3545497316166999225">"Thêm chuông báo"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Thêm thông báo"</string>
     <string name="delete_ringtone_text" msgid="201443984070732499">"Xóa"</string>
     <string name="unable_to_add_ringtone" msgid="4583511263449467326">"Không thể thêm nhạc chuông tùy chỉnh"</string>
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 7a098ee..1e79bb7 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -82,7 +82,12 @@
 filegroup {
     name: "SystemUI-tests-broken-robofiles-sysui-run",
     srcs: [
+        "tests/src/**/systemui/broadcast/BroadcastDispatcherTest.kt",
+        "tests/src/**/systemui/broadcast/ActionReceiverTest.kt",
+        "tests/src/**/systemui/doze/DozeMachineTest.java",
         "tests/src/**/systemui/globalactions/GlobalActionsDialogLiteTest.java",
+        "tests/src/**/systemui/globalactions/GlobalActionsImeTest.java",
+        "tests/src/**/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt",
         "tests/src/**/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt",
         "tests/src/**/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt",
         "tests/src/**/systemui/media/dialog/MediaOutputAdapterTest.java",
@@ -93,14 +98,35 @@
     ],
 }
 
+// Tests where robolectric failed at runtime. (go/multivalent-tests)
 filegroup {
     name: "SystemUI-tests-broken-robofiles-run",
     srcs: [
+        "tests/src/**/systemui/accessibility/AccessibilityButtonModeObserverTest.java",
+        "tests/src/**/systemui/accessibility/AccessibilityButtonTargetsObserverTest.java",
+        "tests/src/**/systemui/accessibility/FullscreenMagnificationControllerTest.java",
+        "tests/src/**/systemui/accessibility/WindowMagnificationAnimationControllerTest.java",
+        "tests/src/**/systemui/animation/FontInterpolatorTest.kt",
+        "tests/src/**/systemui/animation/TextAnimatorTest.kt",
+        "tests/src/**/systemui/animation/TextInterpolatorTest.kt",
+        "tests/src/**/systemui/animation/ActivityTransitionAnimatorTest.kt",
+        "tests/src/**/systemui/animation/AnimatorTestRuleOrderTest.kt",
+        "tests/src/**/systemui/animation/DialogTransitionAnimatorTest.kt",
+        "tests/src/**/systemui/broadcast/ActionReceiverTest.kt",
+        "tests/src/**/systemui/broadcast/BroadcastDispatcherTest.kt",
+        "tests/src/**/systemui/compose/ComposeInitializerTest.kt",
+        "tests/src/**/systemui/controls/ui/ControlsActivityTest.kt",
+        "tests/src/**/systemui/controls/management/ControlsEditingActivityTest.kt",
+        "tests/src/**/systemui/controls/management/ControlsRequestDialogTest.kt",
+        "tests/src/**/systemui/controls/ui/DetailDialogTest.kt",
+        "tests/src/**/systemui/doze/DozeMachineTest.kt",
+        "tests/src/**/systemui/fontscaling/FontScalingDialogDelegateTest.kt",
         "tests/src/**/systemui/keyguard/CustomizationProviderTest.kt",
         "tests/src/**/systemui/globalactions/GlobalActionsColumnLayoutTest.java",
         "tests/src/**/systemui/globalactions/GlobalActionsDialogLiteTest.java",
         "tests/src/**/systemui/globalactions/GlobalActionsImeTest.java",
         "tests/src/**/systemui/graphics/ImageLoaderTest.kt",
+        "tests/src/**/systemui/keyguard/CustomizationProviderTest.kt",
         "tests/src/**/systemui/keyguard/KeyguardViewMediatorTest.java",
         "tests/src/**/systemui/keyguard/LifecycleTest.java",
         "tests/src/**/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt",
@@ -114,12 +140,22 @@
         "tests/src/**/systemui/media/dialog/MediaOutputDialogTest.java",
         "tests/src/**/systemui/media/controls/domain/resume/MediaResumeListenerTest.kt",
         "tests/src/**/systemui/mediaprojection/taskswitcher/ui/TaskSwitcherNotificationCoordinatorTest.kt",
-        "tests/src/**/systemui/util/LifecycleFragmentTest.java",
-        "tests/src/**/systemui/util/TestableAlertDialogTest.kt",
-        "tests/src/**/systemui/util/kotlin/PairwiseFlowTest",
-        "tests/src/**/systemui/util/sensors/AsyncManagerTest.java",
-        "tests/src/**/systemui/util/sensors/ThresholdSensorImplTest.java",
-        "tests/src/**/systemui/util/wakelock/KeepAwakeAnimationListenerTest.java",
+        "tests/src/**/systemui/navigationbar/NavigationBarButtonTest.java",
+        "tests/src/**/systemui/people/PeopleProviderTest.java",
+        "tests/src/**/systemui/people/PeopleSpaceUtilsTest.java",
+        "tests/src/**/systemui/people/widget/PeopleSpaceWidgetManagerTest.java",
+        "tests/src/**/systemui/people/PeopleTileViewHelperTest.java",
+        "tests/src/**/systemui/power/data/repository/PowerRepositoryImplTest.kt",
+        "tests/src/**/systemui/privacy/PrivacyConfigFlagsTest.kt",
+        "tests/src/**/systemui/privacy/PrivacyDialogV2Test.kt",
+        "tests/src/**/systemui/qs/external/TileRequestDialogEventLoggerTest.kt",
+        "tests/src/**/systemui/qs/AutoAddTrackerTest.kt",
+        "tests/src/**/systemui/qs/external/TileRequestDialogEventLoggerTest.kt",
+        "tests/src/**/systemui/qs/tiles/DndTileTest.kt",
+        "tests/src/**/systemui/qs/tiles/DreamTileTest.java",
+        "tests/src/**/systemui/qs/FgsManagerControllerTest.java",
+        "tests/src/**/systemui/qs/QSPanelTest.kt",
+        "tests/src/**/systemui/reardisplay/RearDisplayDialogControllerTest.java",
         "tests/src/**/systemui/statusbar/KeyboardShortcutListSearchTest.java",
         "tests/src/**/systemui/statusbar/KeyboardShortcutsTest.java",
         "tests/src/**/systemui/statusbar/KeyguardIndicationControllerWithCoroutinesTest.kt",
@@ -166,12 +202,21 @@
         "tests/src/**/systemui/statusbar/policy/RemoteInputViewTest.java",
         "tests/src/**/systemui/statusbar/policy/SmartReplyViewTest.java",
         "tests/src/**/systemui/statusbar/StatusBarStateControllerImplTest.kt",
+        "tests/src/**/systemui/theme/ThemeOverlayApplierTest.java",
+        "tests/src/**/systemui/touch/TouchInsetManagerTest.java",
+        "tests/src/**/systemui/util/LifecycleFragmentTest.java",
+        "tests/src/**/systemui/util/TestableAlertDialogTest.kt",
+        "tests/src/**/systemui/util/kotlin/PairwiseFlowTest",
+        "tests/src/**/systemui/util/sensors/AsyncManagerTest.java",
+        "tests/src/**/systemui/util/sensors/ThresholdSensorImplTest.java",
+        "tests/src/**/systemui/util/wakelock/KeepAwakeAnimationListenerTest.java",
+        "tests/src/**/systemui/volume/VolumeDialogImplTest.java",
+        "tests/src/**/systemui/wallet/controller/QuickAccessWalletControllerTest.java",
+        "tests/src/**/systemui/wallet/ui/WalletScreenControllerTest.java",
     ],
 }
 
-// We are running robolectric tests in the tests directory as well as
-// multivalent tests.  If you add a test, and it doesn't run in robolectric,
-// it should be added to this exclusion list. go/multivalent-tests
+// Tests where robolectric failed at compile time. (go/multivalent-tests)
 filegroup {
     name: "SystemUI-tests-broken-robofiles-compile",
     srcs: [
@@ -476,6 +521,7 @@
         "androidx.compose.material_material-icons-extended",
         "androidx.activity_activity-compose",
         "androidx.compose.animation_animation-graphics",
+        "androidx.lifecycle_lifecycle-viewmodel-compose",
         "device_policy_aconfig_flags_lib",
     ],
     libs: [
@@ -637,6 +683,7 @@
         "androidx.compose.material_material-icons-extended",
         "androidx.activity_activity-compose",
         "androidx.compose.animation_animation-graphics",
+        "androidx.lifecycle_lifecycle-viewmodel-compose",
         "TraceurCommon",
     ],
 }
@@ -800,9 +847,9 @@
         ":SystemUI-tests-robofiles",
     ],
     exclude_srcs: [
-        ":SystemUI-tests-broken-robofiles-sysui-run",
         ":SystemUI-tests-broken-robofiles-compile",
         ":SystemUI-tests-broken-robofiles-run",
+        ":SystemUI-tests-broken-robofiles-sysui-run",
     ],
     static_libs: [
         "RoboTestLibraries",
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 9c58371..a9c4399 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -475,6 +475,15 @@
             android:exported="false"
             android:noHistory="true" />
 
+        <activity android:name=".touchpad.tutorial.ui.view.TouchpadTutorialActivity"
+            android:exported="true"
+            android:theme="@style/Theme.AppCompat.NoActionBar">
+            <intent-filter>
+                <action android:name="com.android.systemui.action.TOUCHPAD_TUTORIAL"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+
         <service android:name=".screenshot.appclips.AppClipsScreenshotHelperService"
             android:exported="false"
             android:singleUser="true"
diff --git a/packages/SystemUI/aconfig/communal.aconfig b/packages/SystemUI/aconfig/communal.aconfig
index 2e9af7e..afcd8a9 100644
--- a/packages/SystemUI/aconfig/communal.aconfig
+++ b/packages/SystemUI/aconfig/communal.aconfig
@@ -7,3 +7,13 @@
     description: "Enables the communal hub experience"
     bug: "304584416"
 }
+
+flag {
+    name: "enable_widget_picker_size_filter"
+    namespace: "communal"
+    description: "Enables passing a size filter to the widget picker"
+    bug: "345482907"
+   metadata {
+        purpose: PURPOSE_BUGFIX
+   }
+}
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 2cb297a..29b57c9 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -804,6 +804,13 @@
 }
 
 flag {
+    name: "brightness_slider_focus_state"
+    namespace: "systemui"
+    description: "enables new focus outline for the brightness slider when focused on with physical keyboard"
+    bug: "329244723"
+}
+
+flag {
    name: "edgeback_gesture_handler_get_running_tasks_background"
     namespace: "systemui"
     description: "Decide whether to get the running tasks from activity manager in EdgebackGestureHandler"
@@ -984,6 +991,16 @@
 }
 
 flag {
+  namespace: "systemui"
+  name: "privacy_dot_unfold_wrong_corner_fix"
+  description: "Fixes an issue where the privacy dot is at the wrong corner after unfolding/folding."
+  bug: "339335643"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
+
+flag {
   name: "validate_keyboard_shortcut_helper_icon_uri"
   namespace: "systemui"
   description: "Adds a check that the caller can access the content URI of an icon in the shortcut helper."
@@ -1022,6 +1039,16 @@
 }
 
 flag {
+  name: "glanceable_hub_animate_timer_activity_starts"
+  namespace: "systemui"
+  description: "Properly animates activity starts from live timers on the glanceable hub"
+  bug: "345741071"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
+
+flag {
   name: "new_touchpad_gestures_tutorial"
   namespace: "systemui"
   description: "Enables new interactive tutorial for learning touchpad gestures"
@@ -1047,3 +1074,23 @@
     purpose: PURPOSE_BUGFIX
   }
 }
+
+flag {
+  name: "dozeui_scheduling_alarms_background_execution"
+  namespace: "systemui"
+  description: "Decide whether to execute binder calls to schedule alarms in background thread"
+  bug: "330492575"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
+
+flag {
+  name: "notification_pulsing_fix"
+  namespace: "systemui"
+  description: "Allow showing new pulsing notifications when the device is already pulsing."
+  bug: "335560575"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PinBouncer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PinBouncer.kt
index 64ace2f..54f3969 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PinBouncer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PinBouncer.kt
@@ -24,6 +24,7 @@
 import androidx.compose.animation.core.animateDpAsState
 import androidx.compose.animation.core.animateFloatAsState
 import androidx.compose.animation.core.tween
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.aspectRatio
@@ -41,6 +42,8 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.geometry.CornerRadius
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.graphicsLayer
@@ -284,6 +287,8 @@
         contentAlignment = Alignment.Center,
         modifier =
             modifier
+                .focusRequester(FocusRequester.Default)
+                .focusable()
                 .sizeIn(maxWidth = pinButtonMaxSize, maxHeight = pinButtonMaxSize)
                 .aspectRatio(1f)
                 .drawBehind {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
index c329384..a1f8f1b 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
@@ -1,6 +1,6 @@
 package com.android.systemui.communal.ui.compose
 
-import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.CubicBezierEasing
 import androidx.compose.animation.core.RepeatMode
 import androidx.compose.animation.core.animateFloat
 import androidx.compose.animation.core.infiniteRepeatable
@@ -20,20 +20,18 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.composed
 import androidx.compose.ui.draw.alpha
+import androidx.compose.ui.draw.drawBehind
 import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.BlendMode
 import androidx.compose.ui.graphics.Brush
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.res.dimensionResource
-import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
 import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.android.compose.animation.scene.CommunalSwipeDetector
@@ -217,6 +215,7 @@
             CommunalBackgroundType.DEFAULT -> DefaultBackground(colors = colors)
             CommunalBackgroundType.STATIC_GRADIENT -> StaticLinearGradient()
             CommunalBackgroundType.ANIMATED -> AnimatedLinearGradient()
+            CommunalBackgroundType.NONE -> BackgroundTopScrim()
         }
     }
     with(content) { Content(modifier = modifier) }
@@ -252,7 +251,8 @@
     val colors = LocalAndroidColorScheme.current
     Box(
         Modifier.matchParentSize()
-            .animatedGradientBackground(colors = listOf(colors.primary, colors.primaryContainer))
+            .background(colors.primary)
+            .animatedRadialGradientBackground(colors.primary, colors.primaryContainer)
     )
     BackgroundTopScrim()
 }
@@ -265,29 +265,76 @@
     Box(Modifier.matchParentSize().alpha(0.34f).background(scrimOnTopColor))
 }
 
-/** Modifier which sets the background of a composable to an animated gradient */
+/** The duration to use for the gradient background animation. */
+private const val ANIMATION_DURATION_MS = 10_000
+
+/** The offset to use in order to place the center of each gradient offscreen. */
+private val ANIMATION_OFFSCREEN_OFFSET = 128.dp
+
+/** Modifier which creates two radial gradients that animate up and down. */
 @Composable
-private fun Modifier.animatedGradientBackground(colors: List<Color>): Modifier = composed {
-    var size by remember { mutableStateOf(IntSize.Zero) }
-    val transition = rememberInfiniteTransition(label = "scrim background")
-    val startOffsetX by
-        transition.animateFloat(
-            initialValue = -size.width.toFloat(),
-            targetValue = size.width.toFloat(),
+fun Modifier.animatedRadialGradientBackground(toColor: Color, fromColor: Color): Modifier {
+    val density = LocalDensity.current
+    val infiniteTransition = rememberInfiniteTransition(label = "radial gradient transition")
+    val centerFraction by
+        infiniteTransition.animateFloat(
+            initialValue = 0f,
+            targetValue = 1f,
             animationSpec =
                 infiniteRepeatable(
-                    animation = tween(durationMillis = 5_000, easing = LinearEasing),
-                    repeatMode = RepeatMode.Reverse,
+                    animation =
+                        tween(
+                            durationMillis = ANIMATION_DURATION_MS,
+                            easing = CubicBezierEasing(0.33f, 0f, 0.67f, 1f),
+                        ),
+                    repeatMode = RepeatMode.Reverse
                 ),
-            label = "scrim start offset"
+            label = "radial gradient center fraction"
         )
-    background(
+
+    // Offset to place the center of the gradients offscreen. This is applied to both the
+    // x and y coordinates.
+    val offsetPx = remember(density) { with(density) { ANIMATION_OFFSCREEN_OFFSET.toPx() } }
+
+    return drawBehind {
+        val gradientRadius = (size.width / 2) + offsetPx
+        val totalHeight = size.height + 2 * offsetPx
+
+        val leftCenter =
+            Offset(
+                x = -offsetPx,
+                y = totalHeight * centerFraction - offsetPx,
+            )
+        val rightCenter =
+            Offset(
+                x = offsetPx + size.width,
+                y = totalHeight * (1f - centerFraction) - offsetPx,
+            )
+
+        // Right gradient
+        drawCircle(
             brush =
-                Brush.linearGradient(
-                    colors = colors,
-                    start = Offset(startOffsetX, 0f),
-                    end = Offset(startOffsetX + size.width.toFloat(), size.height.toFloat()),
-                )
+                Brush.radialGradient(
+                    colors = listOf(fromColor, toColor),
+                    center = rightCenter,
+                    radius = gradientRadius
+                ),
+            center = rightCenter,
+            radius = gradientRadius,
+            blendMode = BlendMode.SrcAtop,
         )
-        .onGloballyPositioned { size = it.size }
+
+        // Left gradient
+        drawCircle(
+            brush =
+                Brush.radialGradient(
+                    colors = listOf(fromColor, toColor),
+                    center = leftCenter,
+                    radius = gradientRadius
+                ),
+            center = leftCenter,
+            radius = gradientRadius,
+            blendMode = BlendMode.SrcAtop,
+        )
+    }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
index 77665155..60b6f62 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
@@ -24,6 +24,7 @@
 import com.android.compose.animation.scene.SceneScope
 import com.android.compose.theme.LocalAndroidColorScheme
 import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
+import com.android.systemui.communal.widgets.WidgetInteractionHandler
 import com.android.systemui.keyguard.ui.composable.blueprint.BlueprintAlignmentLines
 import com.android.systemui.keyguard.ui.composable.section.LockSection
 import com.android.systemui.statusbar.phone.SystemUIDialogFactory
@@ -34,6 +35,7 @@
 @Inject
 constructor(
     private val viewModel: CommunalViewModel,
+    private val interactionHandler: WidgetInteractionHandler,
     private val dialogFactory: SystemUIDialogFactory,
     private val lockSection: LockSection,
 ) {
@@ -45,6 +47,7 @@
             content = {
                 CommunalHub(
                     viewModel = viewModel,
+                    interactionHandler = interactionHandler,
                     dialogFactory = dialogFactory,
                     modifier = Modifier.element(Communal.Elements.Grid)
                 )
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
index 1f7f07b..eccb072 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
@@ -16,13 +16,13 @@
 
 package com.android.systemui.communal.ui.compose
 
-import android.appwidget.AppWidgetHostView
 import android.graphics.drawable.Icon
 import android.os.Bundle
 import android.util.SizeF
 import android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO
 import android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
 import android.widget.FrameLayout
+import android.widget.RemoteViews
 import androidx.annotation.VisibleForTesting
 import androidx.compose.animation.AnimatedVisibility
 import androidx.compose.animation.AnimatedVisibilityScope
@@ -132,6 +132,7 @@
 import com.android.compose.theme.LocalAndroidColorScheme
 import com.android.compose.ui.graphics.painter.rememberDrawablePainter
 import com.android.internal.R.dimen.system_app_widget_background_radius
+import com.android.systemui.Flags.glanceableHubAnimateTimerActivityStarts
 import com.android.systemui.communal.domain.model.CommunalContentModel
 import com.android.systemui.communal.shared.model.CommunalContentSize
 import com.android.systemui.communal.shared.model.CommunalScenes
@@ -144,6 +145,7 @@
 import com.android.systemui.communal.ui.viewmodel.CommunalEditModeViewModel
 import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
 import com.android.systemui.communal.ui.viewmodel.PopupType
+import com.android.systemui.communal.widgets.SmartspaceAppWidgetHostView
 import com.android.systemui.communal.widgets.WidgetConfigurator
 import com.android.systemui.res.R
 import com.android.systemui.statusbar.phone.SystemUIDialogFactory
@@ -154,6 +156,7 @@
 fun CommunalHub(
     modifier: Modifier = Modifier,
     viewModel: BaseCommunalViewModel,
+    interactionHandler: RemoteViews.InteractionHandler? = null,
     dialogFactory: SystemUIDialogFactory? = null,
     widgetConfigurator: WidgetConfigurator? = null,
     onOpenWidgetPicker: (() -> Unit)? = null,
@@ -262,6 +265,7 @@
                     contentListState = contentListState,
                     selectedKey = selectedKey,
                     widgetConfigurator = widgetConfigurator,
+                    interactionHandler = interactionHandler,
                 )
             }
         }
@@ -391,6 +395,7 @@
     setGridCoordinates: (coordinates: LayoutCoordinates) -> Unit,
     updateDragPositionForRemove: (offset: Offset) -> Boolean,
     widgetConfigurator: WidgetConfigurator?,
+    interactionHandler: RemoteViews.InteractionHandler?,
 ) {
     var gridModifier =
         Modifier.align(Alignment.TopStart).onGloballyPositioned { setGridCoordinates(it) }
@@ -468,7 +473,8 @@
                         selected = selected && !isDragging,
                         widgetConfigurator = widgetConfigurator,
                         index = index,
-                        contentListState = contentListState
+                        contentListState = contentListState,
+                        interactionHandler = interactionHandler,
                     )
                 }
             } else {
@@ -479,7 +485,8 @@
                     size = size,
                     selected = false,
                     index = index,
-                    contentListState = contentListState
+                    contentListState = contentListState,
+                    interactionHandler = interactionHandler,
                 )
             }
         }
@@ -759,6 +766,7 @@
     widgetConfigurator: WidgetConfigurator? = null,
     index: Int,
     contentListState: ContentListState,
+    interactionHandler: RemoteViews.InteractionHandler?,
 ) {
     when (model) {
         is CommunalContentModel.WidgetContent.Widget ->
@@ -778,7 +786,7 @@
         is CommunalContentModel.WidgetContent.PendingWidget ->
             PendingWidgetPlaceholder(model, modifier)
         is CommunalContentModel.CtaTileInViewMode -> CtaTileInViewModeContent(viewModel, modifier)
-        is CommunalContentModel.Smartspace -> SmartspaceContent(model, modifier)
+        is CommunalContentModel.Smartspace -> SmartspaceContent(interactionHandler, model, modifier)
         is CommunalContentModel.Tutorial -> TutorialContent(modifier)
         is CommunalContentModel.Umo -> Umo(viewModel, modifier)
     }
@@ -1091,13 +1099,19 @@
 
 @Composable
 private fun SmartspaceContent(
+    interactionHandler: RemoteViews.InteractionHandler?,
     model: CommunalContentModel.Smartspace,
     modifier: Modifier = Modifier,
 ) {
     AndroidView(
         modifier = modifier,
         factory = { context ->
-            AppWidgetHostView(context).apply { updateAppWidget(model.remoteViews) }
+            SmartspaceAppWidgetHostView(context).apply {
+                if (glanceableHubAnimateTimerActivityStarts()) {
+                    interactionHandler?.let { setInteractionHandler(it) }
+                }
+                updateAppWidget(model.remoteViews)
+            }
         },
         // For reusing composition in lazy lists.
         onReset = {},
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
index 9e905ac..94018bb 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
@@ -24,6 +24,7 @@
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
 import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
+import com.android.systemui.communal.widgets.WidgetInteractionHandler
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.ui.composable.ComposableScene
@@ -40,6 +41,7 @@
 constructor(
     private val viewModel: CommunalViewModel,
     private val dialogFactory: SystemUIDialogFactory,
+    private val interactionHandler: WidgetInteractionHandler,
 ) : ComposableScene {
     override val key = Scenes.Communal
 
@@ -53,6 +55,6 @@
 
     @Composable
     override fun SceneScope.Content(modifier: Modifier) {
-        CommunalHub(modifier, viewModel, dialogFactory)
+        CommunalHub(modifier, viewModel, interactionHandler, dialogFactory)
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
index ee3ffce..27a834b 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
@@ -170,6 +170,7 @@
     maxScrimTop: () -> Float,
     shouldPunchHoleBehindScrim: Boolean,
     shouldFillMaxSize: Boolean = true,
+    shouldReserveSpaceForNavBar: Boolean = true,
     shadeMode: ShadeMode,
     modifier: Modifier = Modifier,
 ) {
@@ -353,7 +354,7 @@
                         .fillMaxWidth()
                         .notificationStackHeight(
                             view = stackScrollView,
-                            padding = navBarHeight.toInt()
+                            padding = if (shouldReserveSpaceForNavBar) navBarHeight.toInt() else 0
                         )
                         .onSizeChanged { size -> stackHeight.intValue = size.height },
             )
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeScene.kt
index 7ca68fb..f62a28c 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeScene.kt
@@ -16,11 +16,11 @@
 
 package com.android.systemui.notifications.ui.composable
 
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
 import com.android.compose.animation.scene.SceneScope
@@ -75,7 +75,7 @@
         OverlayShade(
             modifier = modifier,
             viewModel = overlayShadeViewModel,
-            horizontalArrangement = Arrangement.End,
+            panelAlignment = Alignment.TopEnd,
             lockscreenContent = lockscreenContent,
         ) {
             Column {
@@ -94,6 +94,7 @@
                     maxScrimTop = { 0f },
                     shouldPunchHoleBehindScrim = false,
                     shouldFillMaxSize = false,
+                    shouldReserveSpaceForNavBar = false,
                     shadeMode = ShadeMode.Dual,
                     modifier = Modifier.fillMaxWidth(),
                 )
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QSMediaMeasurePolicy.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QSMediaMeasurePolicy.kt
new file mode 100644
index 0000000..8fe8703
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QSMediaMeasurePolicy.kt
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.qs.ui.composable
+
+import androidx.compose.ui.layout.Measurable
+import androidx.compose.ui.layout.MeasurePolicy
+import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
+import androidx.compose.ui.layout.layoutId
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.util.fastFirst
+import kotlin.math.max
+
+/*
+ This layout puts QS taking all horizontal space and media taking the right half of the space.
+ However, QS (in QSPanel) puts an empty view taking half the horizontal space so that it can be
+ covered by media.
+*/
+class QSMediaMeasurePolicy(
+    val qsHeight: () -> Int,
+    val mediaVerticalOffset: Density.() -> Int = { 0 },
+) : MeasurePolicy {
+    override fun MeasureScope.measure(
+        measurables: List<Measurable>,
+        constraints: Constraints
+    ): MeasureResult {
+        val qsMeasurable = measurables.fastFirst { it.layoutId == LayoutId.QS }
+        val mediaMeasurable = measurables.fastFirst { it.layoutId == LayoutId.Media }
+
+        val qsPlaceable = qsMeasurable.measure(constraints)
+        val mediaPlaceable =
+            mediaMeasurable.measure(constraints.copy(maxWidth = constraints.maxWidth / 2))
+
+        val width = qsPlaceable.width
+        val height = max(qsHeight(), mediaPlaceable.height)
+        return layout(width, height) {
+            qsPlaceable.placeRelative(0, 0)
+            mediaPlaceable.placeRelative(width / 2, mediaVerticalOffset())
+        }
+    }
+
+    enum class LayoutId {
+        QS,
+        Media,
+    }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
index 8195df3..8058dcd 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt
@@ -29,6 +29,7 @@
 import androidx.compose.ui.draw.drawWithContent
 import androidx.compose.ui.layout.layout
 import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.unit.dp
 import androidx.compose.ui.viewinterop.AndroidView
 import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.android.compose.animation.scene.ElementKey
@@ -62,11 +63,21 @@
 
     object SharedValues {
         val TilesSquishiness = ValueKey("QuickSettingsTileSquishiness")
+
         object SquishinessValues {
             val Default = 1f
             val LockscreenSceneStarting = 0f
             val GoneSceneStarting = 0.3f
         }
+
+        val MediaLandscapeTopOffset = ValueKey("MediaLandscapeTopOffset")
+
+        object MediaOffset {
+            val InQQS = 0.dp
+            // Brightness + padding
+            val InQS = 92.dp
+            val Default = 0.dp
+        }
     }
 }
 
@@ -77,8 +88,8 @@
     return when (val transitionState = layoutState.transitionState) {
         is TransitionState.Idle -> {
             when (transitionState.currentScene) {
-                Scenes.Shade -> QSSceneAdapter.State.QQS.takeUnless { isSplitShade }
-                        ?: QSSceneAdapter.State.QS
+                Scenes.Shade ->
+                    QSSceneAdapter.State.QQS.takeUnless { isSplitShade } ?: QSSceneAdapter.State.QS
                 Scenes.QuickSettings -> QSSceneAdapter.State.QS
                 else -> QSSceneAdapter.State.CLOSED
             }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
index 0ee485c..1b49b67 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
@@ -46,6 +46,7 @@
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
+import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
 import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
@@ -56,6 +57,8 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.CompositingStrategy
 import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.layout.layoutId
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.compose.ui.res.colorResource
@@ -63,6 +66,7 @@
 import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.android.compose.animation.scene.SceneScope
 import com.android.compose.animation.scene.TransitionState
+import com.android.compose.animation.scene.animateSceneDpAsState
 import com.android.compose.animation.scene.animateSceneFloatAsState
 import com.android.compose.modifiers.thenIf
 import com.android.compose.windowsizeclass.LocalWindowSizeClass
@@ -79,6 +83,8 @@
 import com.android.systemui.media.dagger.MediaModule
 import com.android.systemui.notifications.ui.composable.HeadsUpNotificationSpace
 import com.android.systemui.qs.footer.ui.compose.FooterActionsWithAnimatedVisibility
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaLandscapeTopOffset
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaOffset.InQS
 import com.android.systemui.qs.ui.viewmodel.QuickSettingsSceneViewModel
 import com.android.systemui.res.R
 import com.android.systemui.scene.session.ui.composable.SaveableSession
@@ -258,6 +264,14 @@
             }
         }
 
+        // ############# Media ###############
+        val isMediaVisible by viewModel.isMediaVisible.collectAsStateWithLifecycle()
+        val mediaInRow =
+            isMediaVisible &&
+                LocalWindowSizeClass.current.heightSizeClass == WindowHeightSizeClass.Compact
+        val mediaOffset by
+            animateSceneDpAsState(value = InQS, key = MediaLandscapeTopOffset, canOverflow = false)
+
         // This is the background for the whole scene, as the elements don't necessarily provide
         // a background that extends to the edges.
         Spacer(
@@ -337,21 +351,37 @@
                     }
                     Spacer(modifier = Modifier.height(16.dp))
                     // This view has its own horizontal padding
-                    QuickSettings(
-                        viewModel.qsSceneAdapter,
-                        { viewModel.qsSceneAdapter.qsHeight },
-                        isSplitShade = false,
-                        modifier = Modifier
-                    )
+                    val content: @Composable () -> Unit = {
+                        QuickSettings(
+                            viewModel.qsSceneAdapter,
+                            { viewModel.qsSceneAdapter.qsHeight },
+                            isSplitShade = false,
+                            modifier = Modifier.layoutId(QSMediaMeasurePolicy.LayoutId.QS)
+                        )
 
-                    val isMediaVisible by viewModel.isMediaVisible.collectAsStateWithLifecycle()
-
-                    MediaCarousel(
-                        isVisible = isMediaVisible,
-                        mediaHost = mediaHost,
-                        modifier = Modifier.fillMaxWidth(),
-                        carouselController = mediaCarouselController,
-                    )
+                        MediaCarousel(
+                            isVisible = isMediaVisible,
+                            mediaHost = mediaHost,
+                            modifier =
+                                Modifier.fillMaxWidth()
+                                    .layoutId(QSMediaMeasurePolicy.LayoutId.Media),
+                            carouselController = mediaCarouselController,
+                        )
+                    }
+                    val landscapeQsMediaMeasurePolicy = remember {
+                        QSMediaMeasurePolicy(
+                            { viewModel.qsSceneAdapter.qsHeight },
+                            { mediaOffset.roundToPx() },
+                        )
+                    }
+                    if (mediaInRow) {
+                        Layout(
+                            content = content,
+                            measurePolicy = landscapeQsMediaMeasurePolicy,
+                        )
+                    } else {
+                        content()
+                    }
                 }
             }
 
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeScene.kt
index 4d946bf..a0d6be9 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeScene.kt
@@ -16,22 +16,44 @@
 
 package com.android.systemui.qs.ui.composable
 
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.EnterTransition
+import androidx.compose.animation.ExitTransition
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
 import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
 import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Button
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.android.compose.animation.scene.SceneScope
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
+import com.android.systemui.battery.BatteryMeterViewController
+import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.keyguard.ui.composable.LockscreenContent
+import com.android.systemui.qs.panels.ui.compose.EditMode
+import com.android.systemui.qs.panels.ui.compose.TileGrid
 import com.android.systemui.qs.ui.viewmodel.QuickSettingsShadeSceneViewModel
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.ui.composable.ComposableScene
+import com.android.systemui.shade.ui.composable.ExpandedShadeHeader
 import com.android.systemui.shade.ui.composable.OverlayShade
-import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
+import com.android.systemui.statusbar.phone.ui.StatusBarIconController
+import com.android.systemui.statusbar.phone.ui.TintedIconManager
 import dagger.Lazy
 import java.util.Optional
 import javax.inject.Inject
@@ -41,9 +63,12 @@
 class QuickSettingsShadeScene
 @Inject
 constructor(
-    viewModel: QuickSettingsShadeSceneViewModel,
-    private val overlayShadeViewModel: OverlayShadeViewModel,
+    private val viewModel: QuickSettingsShadeSceneViewModel,
     private val lockscreenContent: Lazy<Optional<LockscreenContent>>,
+    private val shadeHeaderViewModel: ShadeHeaderViewModel,
+    private val tintedIconManagerFactory: TintedIconManager.Factory,
+    private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
+    private val statusBarIconController: StatusBarIconController,
 ) : ComposableScene {
 
     override val key = Scenes.QuickSettingsShade
@@ -56,21 +81,101 @@
         modifier: Modifier,
     ) {
         OverlayShade(
-            viewModel = overlayShadeViewModel,
-            modifier = modifier,
-            horizontalArrangement = Arrangement.End,
+            viewModel = viewModel.overlayShadeViewModel,
+            panelAlignment = Alignment.TopEnd,
             lockscreenContent = lockscreenContent,
+            modifier = modifier,
         ) {
-            Text(
-                text = "Quick settings grid",
-                modifier = Modifier.padding(QuickSettingsShade.Dimensions.Padding)
+            Column {
+                ExpandedShadeHeader(
+                    viewModel = shadeHeaderViewModel,
+                    createTintedIconManager = tintedIconManagerFactory::create,
+                    createBatteryMeterViewController = batteryMeterViewControllerFactory::create,
+                    statusBarIconController = statusBarIconController,
+                    modifier = Modifier.padding(QuickSettingsShade.Dimensions.Padding),
+                )
+
+                ShadeBody(
+                    viewModel = viewModel,
+                )
+            }
+        }
+    }
+}
+
+@Composable
+private fun ShadeBody(
+    viewModel: QuickSettingsShadeSceneViewModel,
+) {
+    val isEditing by viewModel.editModeViewModel.isEditing.collectAsStateWithLifecycle()
+
+    Box {
+        // The main Quick Settings grid layout.
+        AnimatedVisibility(
+            visible = !isEditing,
+            enter = QuickSettingsShade.Transitions.QuickSettingsLayoutEnter,
+            exit = QuickSettingsShade.Transitions.QuickSettingsLayoutExit,
+        ) {
+            QuickSettingsLayout(
+                viewModel = viewModel,
+            )
+        }
+
+        // The Quick Settings Editor layout.
+        AnimatedVisibility(
+            visible = isEditing,
+            enter = QuickSettingsShade.Transitions.QuickSettingsEditorEnter,
+            exit = QuickSettingsShade.Transitions.QuickSettingsEditorExit,
+        ) {
+            EditMode(
+                viewModel = viewModel.editModeViewModel,
+                modifier = Modifier.fillMaxWidth().padding(QuickSettingsShade.Dimensions.Padding)
             )
         }
     }
 }
 
+@Composable
+private fun QuickSettingsLayout(
+    viewModel: QuickSettingsShadeSceneViewModel,
+    modifier: Modifier = Modifier,
+) {
+    Column(
+        verticalArrangement = Arrangement.spacedBy(QuickSettingsShade.Dimensions.Padding),
+        horizontalAlignment = Alignment.CenterHorizontally,
+        modifier = modifier.fillMaxWidth().padding(QuickSettingsShade.Dimensions.Padding),
+    ) {
+        BrightnessSliderContainer(
+            viewModel = viewModel.brightnessSliderViewModel,
+            modifier =
+                Modifier.fillMaxWidth()
+                    .height(QuickSettingsShade.Dimensions.BrightnessSliderHeight),
+        )
+        TileGrid(
+            viewModel = viewModel.tileGridViewModel,
+            modifier =
+                Modifier.fillMaxWidth().heightIn(max = QuickSettingsShade.Dimensions.GridMaxHeight),
+        )
+        Button(
+            onClick = { viewModel.editModeViewModel.startEditing() },
+        ) {
+            Text("Edit mode")
+        }
+    }
+}
+
 object QuickSettingsShade {
+
     object Dimensions {
         val Padding = 16.dp
+        val BrightnessSliderHeight = 64.dp
+        val GridMaxHeight = 400.dp
+    }
+
+    object Transitions {
+        val QuickSettingsLayoutEnter: EnterTransition = fadeIn(tween(500))
+        val QuickSettingsLayoutExit: ExitTransition = fadeOut(tween(500))
+        val QuickSettingsEditorEnter: EnterTransition = fadeIn(tween(500))
+        val QuickSettingsEditorExit: ExitTransition = fadeOut(tween(500))
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
index efda4cd..4e334c2 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
@@ -28,11 +28,14 @@
 import com.android.compose.animation.scene.SceneScope
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
+import com.android.compose.animation.scene.animateSceneDpAsState
 import com.android.compose.animation.scene.animateSceneFloatAsState
 import com.android.internal.policy.SystemBarUtils
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.notifications.ui.composable.HeadsUpNotificationSpace
 import com.android.systemui.qs.ui.composable.QuickSettings
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaLandscapeTopOffset
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaOffset.Default
 import com.android.systemui.res.R
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.ui.viewmodel.GoneSceneViewModel
@@ -67,6 +70,7 @@
             value = QuickSettings.SharedValues.SquishinessValues.GoneSceneStarting,
             key = QuickSettings.SharedValues.TilesSquishiness,
         )
+        animateSceneDpAsState(value = Default, key = MediaLandscapeTopOffset, canOverflow = false)
         Spacer(modifier.fillMaxSize())
         HeadsUpNotificationStack(
             stackScrollView = notificationStackScrolLView.get(),
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
index 3255b08..10c4030 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
@@ -104,9 +104,9 @@
         )
     }
     overscroll(Scenes.NotificationsShade, Orientation.Vertical) {
-        translate(OverlayShade.Elements.Panel, y = { OverlayShade.Dimensions.OverscrollLimit })
+        translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit)
     }
     overscroll(Scenes.QuickSettingsShade, Orientation.Vertical) {
-        translate(OverlayShade.Elements.Panel, y = { OverlayShade.Dimensions.OverscrollLimit })
+        translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit)
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
index d776e2a..c189d73 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
@@ -20,11 +20,9 @@
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.ExperimentalLayoutApi
 import androidx.compose.foundation.layout.PaddingValues
-import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.asPaddingValues
@@ -43,6 +41,7 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ReadOnlyComposable
 import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.graphics.Color
@@ -64,7 +63,7 @@
 @Composable
 fun SceneScope.OverlayShade(
     viewModel: OverlayShadeViewModel,
-    horizontalArrangement: Arrangement.Horizontal,
+    panelAlignment: Alignment,
     lockscreenContent: Lazy<Optional<LockscreenContent>>,
     modifier: Modifier = Modifier,
     content: @Composable () -> Unit,
@@ -81,9 +80,9 @@
 
         Scrim(onClicked = viewModel::onScrimClicked)
 
-        Row(
+        Box(
             modifier = Modifier.fillMaxSize().panelPadding(),
-            horizontalArrangement = horizontalArrangement,
+            contentAlignment = panelAlignment,
         ) {
             Panel(
                 modifier = Modifier.element(OverlayShade.Elements.Panel).panelSize(),
@@ -199,7 +198,7 @@
         val PanelCornerRadius = 46.dp
         val PanelWidthMedium = 390.dp
         val PanelWidthLarge = 474.dp
-        val OverscrollLimit = 100f
+        val OverscrollLimit = 32.dp
     }
 
     object Shapes {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
index 33a630c..d51cdd3 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
@@ -25,18 +25,15 @@
 import androidx.compose.foundation.clipScrollableContainer
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.asPaddingValues
 import androidx.compose.foundation.layout.displayCutoutPadding
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.navigationBars
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
@@ -55,6 +52,7 @@
 import androidx.compose.ui.graphics.CompositingStrategy
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.layout.layoutId
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.compose.ui.res.colorResource
@@ -66,6 +64,7 @@
 import com.android.compose.animation.scene.TransitionState
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
+import com.android.compose.animation.scene.animateSceneDpAsState
 import com.android.compose.animation.scene.animateSceneFloatAsState
 import com.android.compose.modifiers.padding
 import com.android.compose.modifiers.thenIf
@@ -85,7 +84,10 @@
 import com.android.systemui.notifications.ui.composable.NotificationScrollingStack
 import com.android.systemui.qs.footer.ui.compose.FooterActionsWithAnimatedVisibility
 import com.android.systemui.qs.ui.composable.BrightnessMirror
+import com.android.systemui.qs.ui.composable.QSMediaMeasurePolicy
 import com.android.systemui.qs.ui.composable.QuickSettings
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaLandscapeTopOffset
+import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaOffset.InQQS
 import com.android.systemui.res.R
 import com.android.systemui.scene.session.ui.composable.SaveableSession
 import com.android.systemui.scene.shared.model.Scenes
@@ -242,6 +244,8 @@
     val mediaInRow =
         isMediaVisible &&
             LocalWindowSizeClass.current.heightSizeClass == WindowHeightSizeClass.Compact
+    val mediaOffset by
+        animateSceneDpAsState(value = InQQS, key = MediaLandscapeTopOffset, canOverflow = false)
 
     Box(
         modifier =
@@ -282,10 +286,10 @@
                                 statusBarIconController = statusBarIconController,
                             )
 
-                            val content: @Composable (Modifier) -> Unit = { modifier ->
+                            val content: @Composable () -> Unit = {
                                 Box(
                                     Modifier.element(QuickSettings.Elements.QuickQuickSettings)
-                                        .then(modifier)
+                                        .layoutId(QSMediaMeasurePolicy.LayoutId.QS)
                                 ) {
                                     QuickSettings(
                                         viewModel.qsSceneAdapter,
@@ -298,23 +302,26 @@
                                 MediaCarousel(
                                     isVisible = isMediaVisible,
                                     mediaHost = mediaHost,
-                                    modifier = Modifier.fillMaxWidth().then(modifier),
+                                    modifier =
+                                        Modifier.fillMaxWidth()
+                                            .layoutId(QSMediaMeasurePolicy.LayoutId.Media),
                                     carouselController = mediaCarouselController,
                                 )
                             }
-
-                            if (!mediaInRow) {
-                                content(Modifier)
-                            } else {
-                                Row(
-                                    modifier = Modifier.fillMaxWidth(),
-                                    horizontalArrangement = spacedBy(16.dp),
-                                    verticalAlignment = Alignment.CenterVertically,
-                                ) {
-                                    content(Modifier.weight(1f))
-                                }
+                            val landscapeQsMediaMeasurePolicy = remember {
+                                QSMediaMeasurePolicy(
+                                    { viewModel.qsSceneAdapter.qqsHeight },
+                                    { mediaOffset.roundToPx() },
+                                )
                             }
-                            Spacer(modifier = Modifier.height(16.dp))
+                            if (mediaInRow) {
+                                Layout(
+                                    content = content,
+                                    measurePolicy = landscapeQsMediaMeasurePolicy,
+                                )
+                            } else {
+                                content()
+                            }
                         }
                     },
                     {
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt
index 48a348b..c2dd803 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt
@@ -109,8 +109,7 @@
                     layoutState.transitions.interruptionHandler.onInterruption(
                         transitionState,
                         target,
-                    )
-                        ?: DefaultInterruptionHandler.onInterruption(transitionState, target)
+                    ) ?: DefaultInterruptionHandler.onInterruption(transitionState, target)
 
                 val animateFrom = interruptionResult.animateFrom
                 if (
@@ -159,6 +158,7 @@
     val transition =
         if (reversed) {
             OneOffTransition(
+                key = transitionKey,
                 fromScene = targetScene,
                 toScene = fromScene,
                 currentScene = targetScene,
@@ -167,6 +167,7 @@
             )
         } else {
             OneOffTransition(
+                key = transitionKey,
                 fromScene = fromScene,
                 toScene = targetScene,
                 currentScene = targetScene,
@@ -178,7 +179,7 @@
     // Change the current layout state to start this new transition. This will compute the
     // TransformationSpec associated to this transition, which we need to initialize the Animatable
     // that will actually animate it.
-    layoutState.startTransition(transition, transitionKey, chain)
+    layoutState.startTransition(transition, chain)
 
     // The transition now contains the transformation spec that we should use to instantiate the
     // Animatable.
@@ -207,6 +208,7 @@
 }
 
 private class OneOffTransition(
+    override val key: TransitionKey?,
     fromScene: SceneKey,
     toScene: SceneKey,
     override val currentScene: SceneKey,
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
index e9633c2..60d78fe 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
@@ -257,7 +257,7 @@
 
     fun updateTransition(newTransition: SwipeTransition, force: Boolean = false) {
         if (isDrivingTransition || force) {
-            layoutState.startTransition(newTransition, newTransition.key)
+            layoutState.startTransition(newTransition)
         }
 
         swipeTransition = newTransition
@@ -555,7 +555,7 @@
     val layoutImpl: SceneTransitionLayoutImpl,
     val layoutState: BaseSceneTransitionLayoutState,
     val coroutineScope: CoroutineScope,
-    val key: TransitionKey?,
+    override val key: TransitionKey?,
     val _fromScene: Scene,
     val _toScene: Scene,
     val userActionDistanceScope: UserActionDistanceScope,
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
index f0fb9f6..980982a 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
@@ -33,9 +33,9 @@
 import androidx.compose.ui.layout.ApproachLayoutModifierNode
 import androidx.compose.ui.layout.ApproachMeasureScope
 import androidx.compose.ui.layout.LayoutCoordinates
-import androidx.compose.ui.layout.LookaheadScope
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
@@ -66,6 +66,9 @@
      */
     var lastTransition: TransitionState.Transition? = null
 
+    /** Whether this element was ever drawn in a scene. */
+    var wasDrawnInAnyScene = false
+
     override fun toString(): String {
         return "Element(key=$key)"
     }
@@ -248,15 +251,36 @@
     }
 
     @ExperimentalComposeUiApi
+    override fun MeasureScope.measure(
+        measurable: Measurable,
+        constraints: Constraints
+    ): MeasureResult {
+        check(isLookingAhead)
+
+        return measurable.measure(constraints).run {
+            // Update the size this element has in this scene when idle.
+            sceneState.targetSize = size()
+
+            layout(width, height) {
+                // Update the offset (relative to the SceneTransitionLayout) this element has in
+                // this scene when idle.
+                coordinates?.let { coords ->
+                    with(layoutImpl.lookaheadScope) {
+                        sceneState.targetOffset =
+                            lookaheadScopeCoordinates.localLookaheadPositionOf(coords)
+                    }
+                }
+                place(0, 0)
+            }
+        }
+    }
+
     override fun ApproachMeasureScope.approachMeasure(
         measurable: Measurable,
         constraints: Constraints,
     ): MeasureResult {
-        // Update the size this element has in this scene when idle.
-        sceneState.targetSize = lookaheadSize
-
         val transitions = currentTransitions
-        val transition = elementTransition(element, transitions)
+        val transition = elementTransition(layoutImpl, element, transitions)
 
         // If this element is not supposed to be laid out now, either because it is not part of any
         // ongoing transition or the other scene of its transition is overscrolling, then lay out
@@ -272,35 +296,116 @@
             val placeable = measurable.measure(constraints)
             sceneState.lastSize = placeable.size()
 
-            this as LookaheadScope
-            return layout(placeable.width, placeable.height) {
-                // Update the offset (relative to the SceneTransitionLayout) this element has in
-                // this scene when idle.
-                coordinates?.let { coords ->
-                    sceneState.targetOffset =
-                        lookaheadScopeCoordinates.localLookaheadPositionOf(coords)
-                }
-            }
+            return layout(placeable.width, placeable.height) { /* Do not place */ }
         }
 
         val placeable =
             measure(layoutImpl, scene, element, transition, sceneState, measurable, constraints)
         sceneState.lastSize = placeable.size()
-        return layout(placeable.width, placeable.height) {
-            place(
-                layoutImpl,
-                scene,
-                element,
-                transition,
-                sceneState,
-                placeable,
-                placementScope = this,
-            )
+        return layout(placeable.width, placeable.height) { place(transition, placeable) }
+    }
+
+    @OptIn(ExperimentalComposeUiApi::class)
+    private fun Placeable.PlacementScope.place(
+        transition: TransitionState.Transition?,
+        placeable: Placeable,
+    ) {
+        with(layoutImpl.lookaheadScope) {
+            // Update the offset (relative to the SceneTransitionLayout) this element has in this
+            // scene when idle.
+            val coords =
+                coordinates ?: error("Element ${element.key} does not have any coordinates")
+            val targetOffsetInScene = lookaheadScopeCoordinates.localLookaheadPositionOf(coords)
+
+            // No need to place the element in this scene if we don't want to draw it anyways.
+            if (!shouldPlaceElement(layoutImpl, scene.key, element, transition)) {
+                sceneState.lastOffset = Offset.Unspecified
+                sceneState.lastScale = Scale.Unspecified
+                sceneState.lastAlpha = Element.AlphaUnspecified
+                return
+            }
+
+            val currentOffset = lookaheadScopeCoordinates.localPositionOf(coords, Offset.Zero)
+            val targetOffset =
+                computeValue(
+                    layoutImpl,
+                    scene,
+                    element,
+                    transition,
+                    sceneValue = { it.targetOffset },
+                    transformation = { it.offset },
+                    idleValue = targetOffsetInScene,
+                    currentValue = { currentOffset },
+                    isSpecified = { it != Offset.Unspecified },
+                    ::lerp,
+                )
+
+            val interruptedOffset =
+                computeInterruptedValue(
+                    layoutImpl,
+                    transition,
+                    value = targetOffset,
+                    unspecifiedValue = Offset.Unspecified,
+                    zeroValue = Offset.Zero,
+                    getValueBeforeInterruption = { sceneState.offsetBeforeInterruption },
+                    setValueBeforeInterruption = { sceneState.offsetBeforeInterruption = it },
+                    getInterruptionDelta = { sceneState.offsetInterruptionDelta },
+                    setInterruptionDelta = { delta ->
+                        setPlacementInterruptionDelta(
+                            element = element,
+                            sceneState = sceneState,
+                            transition = transition,
+                            delta = delta,
+                            setter = { sceneState, delta ->
+                                sceneState.offsetInterruptionDelta = delta
+                            },
+                        )
+                    },
+                    diff = { a, b -> a - b },
+                    add = { a, b, bProgress -> a + b * bProgress },
+                )
+
+            sceneState.lastOffset = interruptedOffset
+
+            val offset = (interruptedOffset - currentOffset).round()
+            if (
+                isElementOpaque(scene, element, transition) &&
+                    interruptedAlpha(layoutImpl, element, transition, sceneState, alpha = 1f) == 1f
+            ) {
+                sceneState.lastAlpha = 1f
+
+                // TODO(b/291071158): Call placeWithLayer() if offset != IntOffset.Zero and size is
+                // not animated once b/305195729 is fixed. Test that drawing is not invalidated in
+                // that case.
+                placeable.place(offset)
+            } else {
+                placeable.placeWithLayer(offset) {
+                    // This layer might still run on its own (outside of the placement phase) even
+                    // if this element is not placed or composed anymore, so we need to double check
+                    // again here before calling [elementAlpha] (which will update
+                    // [SceneState.lastAlpha]). We also need to recompute the current transition to
+                    // make sure that we are using the current transition and not a reference to an
+                    // old one. See b/343138966 for details.
+                    if (_element == null) {
+                        return@placeWithLayer
+                    }
+
+                    val transition = elementTransition(layoutImpl, element, currentTransitions)
+                    if (!shouldPlaceElement(layoutImpl, scene.key, element, transition)) {
+                        return@placeWithLayer
+                    }
+
+                    alpha = elementAlpha(layoutImpl, scene, element, transition, sceneState)
+                    compositingStrategy = CompositingStrategy.ModulateAlpha
+                }
+            }
         }
     }
 
     override fun ContentDrawScope.draw() {
-        val transition = elementTransition(element, currentTransitions)
+        element.wasDrawnInAnyScene = true
+
+        val transition = elementTransition(layoutImpl, element, currentTransitions)
         val drawScale = getDrawScale(layoutImpl, scene, element, transition, sceneState)
         if (drawScale == Scale.Default) {
             drawContent()
@@ -341,6 +446,7 @@
  * its scenes contains the element.
  */
 private fun elementTransition(
+    layoutImpl: SceneTransitionLayoutImpl,
     element: Element,
     transitions: List<TransitionState.Transition>,
 ): TransitionState.Transition? {
@@ -354,7 +460,7 @@
 
     if (transition != previousTransition && transition != null && previousTransition != null) {
         // The previous transition was interrupted by another transition.
-        prepareInterruption(element, transition, previousTransition)
+        prepareInterruption(layoutImpl, element, transition, previousTransition)
     } else if (transition == null && previousTransition != null) {
         // The transition was just finished.
         element.sceneStates.values.forEach {
@@ -367,18 +473,43 @@
 }
 
 private fun prepareInterruption(
+    layoutImpl: SceneTransitionLayoutImpl,
     element: Element,
     transition: TransitionState.Transition,
     previousTransition: TransitionState.Transition,
 ) {
     val sceneStates = element.sceneStates
-    sceneStates[previousTransition.fromScene]?.selfUpdateValuesBeforeInterruption()
-    sceneStates[previousTransition.toScene]?.selfUpdateValuesBeforeInterruption()
-    sceneStates[transition.fromScene]?.selfUpdateValuesBeforeInterruption()
-    sceneStates[transition.toScene]?.selfUpdateValuesBeforeInterruption()
+    fun updatedSceneState(key: SceneKey): Element.SceneState? {
+        return sceneStates[key]?.also { it.selfUpdateValuesBeforeInterruption() }
+    }
+
+    val previousFromState = updatedSceneState(previousTransition.fromScene)
+    val previousToState = updatedSceneState(previousTransition.toScene)
+    val fromState = updatedSceneState(transition.fromScene)
+    val toState = updatedSceneState(transition.toScene)
 
     reconcileStates(element, previousTransition)
     reconcileStates(element, transition)
+
+    // Remove the interruption values to all scenes but the scene(s) where the element will be
+    // placed, to make sure that interruption deltas are computed only right after this interruption
+    // is prepared.
+    fun maybeCleanPlacementValuesBeforeInterruption(sceneState: Element.SceneState) {
+        if (!shouldPlaceElement(layoutImpl, sceneState.scene, element, transition)) {
+            sceneState.offsetBeforeInterruption = Offset.Unspecified
+            sceneState.alphaBeforeInterruption = Element.AlphaUnspecified
+            sceneState.scaleBeforeInterruption = Scale.Unspecified
+
+            sceneState.offsetInterruptionDelta = Offset.Zero
+            sceneState.alphaInterruptionDelta = 0f
+            sceneState.scaleInterruptionDelta = Scale.Zero
+        }
+    }
+
+    previousFromState?.let { maybeCleanPlacementValuesBeforeInterruption(it) }
+    previousToState?.let { maybeCleanPlacementValuesBeforeInterruption(it) }
+    fromState?.let { maybeCleanPlacementValuesBeforeInterruption(it) }
+    toState?.let { maybeCleanPlacementValuesBeforeInterruption(it) }
 }
 
 /**
@@ -485,9 +616,38 @@
     }
 }
 
+/**
+ * Set the interruption delta of a *placement/drawing*-related value (offset, alpha, scale). This
+ * ensures that the delta is also set on the other scene in the transition for shared elements, so
+ * that there is no jump cut if the scene where the element is placed has changed.
+ */
+private inline fun <T> setPlacementInterruptionDelta(
+    element: Element,
+    sceneState: Element.SceneState,
+    transition: TransitionState.Transition?,
+    delta: T,
+    setter: (Element.SceneState, T) -> Unit,
+) {
+    // Set the interruption delta on the current scene.
+    setter(sceneState, delta)
+
+    if (transition == null) {
+        return
+    }
+
+    // If the element is shared, also set the delta on the other scene so that it is used by that
+    // scene if we start overscrolling it and change the scene where the element is placed.
+    val otherScene =
+        if (sceneState.scene == transition.fromScene) transition.toScene else transition.fromScene
+    val otherSceneState = element.sceneStates[otherScene] ?: return
+    if (isSharedElementEnabled(element.key, transition)) {
+        setter(otherSceneState, delta)
+    }
+}
+
 private fun shouldPlaceElement(
     layoutImpl: SceneTransitionLayoutImpl,
-    scene: Scene,
+    scene: SceneKey,
     element: Element,
     transition: TransitionState.Transition?,
 ): Boolean {
@@ -498,16 +658,13 @@
 
     // Don't place the element in this scene if this scene is not part of the current element
     // transition.
-    if (scene.key != transition.fromScene && scene.key != transition.toScene) {
+    if (scene != transition.fromScene && scene != transition.toScene) {
         return false
     }
 
-    // Place the element if it is not shared or if the current scene is the one that is currently
-    // overscrolling with [OverscrollSpec].
+    // Place the element if it is not shared.
     if (
-        transition.fromScene !in element.sceneStates ||
-            transition.toScene !in element.sceneStates ||
-            transition.currentOverscrollSpec?.scene == scene.key
+        transition.fromScene !in element.sceneStates || transition.toScene !in element.sceneStates
     ) {
         return true
     }
@@ -517,20 +674,26 @@
         return true
     }
 
-    return shouldDrawOrComposeSharedElement(
+    return shouldPlaceOrComposeSharedElement(
         layoutImpl,
-        scene.key,
+        scene,
         element.key,
         transition,
     )
 }
 
-internal fun shouldDrawOrComposeSharedElement(
+internal fun shouldPlaceOrComposeSharedElement(
     layoutImpl: SceneTransitionLayoutImpl,
     scene: SceneKey,
     element: ElementKey,
     transition: TransitionState.Transition,
 ): Boolean {
+    // If we are overscrolling, only place/compose the element in the overscrolling scene.
+    val overscrollScene = transition.currentOverscrollSpec?.scene
+    if (overscrollScene != null) {
+        return scene == overscrollScene
+    }
+
     val scenePicker = element.scenePicker
     val fromScene = transition.fromScene
     val toScene = transition.toScene
@@ -541,10 +704,9 @@
             transition = transition,
             fromSceneZIndex = layoutImpl.scenes.getValue(fromScene).zIndex,
             toSceneZIndex = layoutImpl.scenes.getValue(toScene).zIndex,
-        )
-            ?: return false
+        ) ?: return false
 
-    return pickedScene == scene || transition.currentOverscrollSpec?.scene == scene
+    return pickedScene == scene
 }
 
 private fun isSharedElementEnabled(
@@ -638,13 +800,20 @@
             )
             .fastCoerceIn(0f, 1f)
 
-    val interruptedAlpha = interruptedAlpha(layoutImpl, transition, sceneState, alpha)
+    // If the element is fading during this transition and that it is drawn for the first time, make
+    // sure that it doesn't instantly appear on screen.
+    if (!element.wasDrawnInAnyScene && alpha > 0f) {
+        element.sceneStates.forEach { it.value.alphaBeforeInterruption = 0f }
+    }
+
+    val interruptedAlpha = interruptedAlpha(layoutImpl, element, transition, sceneState, alpha)
     sceneState.lastAlpha = interruptedAlpha
     return interruptedAlpha
 }
 
 private fun interruptedAlpha(
     layoutImpl: SceneTransitionLayoutImpl,
+    element: Element,
     transition: TransitionState.Transition?,
     sceneState: Element.SceneState,
     alpha: Float,
@@ -658,7 +827,15 @@
         getValueBeforeInterruption = { sceneState.alphaBeforeInterruption },
         setValueBeforeInterruption = { sceneState.alphaBeforeInterruption = it },
         getInterruptionDelta = { sceneState.alphaInterruptionDelta },
-        setInterruptionDelta = { sceneState.alphaInterruptionDelta = it },
+        setInterruptionDelta = { delta ->
+            setPlacementInterruptionDelta(
+                element = element,
+                sceneState = sceneState,
+                transition = transition,
+                delta = delta,
+                setter = { sceneState, delta -> sceneState.alphaInterruptionDelta = delta },
+            )
+        },
         diff = { a, b -> a - b },
         add = { a, b, bProgress -> a + b * bProgress },
     )
@@ -765,7 +942,15 @@
             getValueBeforeInterruption = { sceneState.scaleBeforeInterruption },
             setValueBeforeInterruption = { sceneState.scaleBeforeInterruption = it },
             getInterruptionDelta = { sceneState.scaleInterruptionDelta },
-            setInterruptionDelta = { sceneState.scaleInterruptionDelta = it },
+            setInterruptionDelta = { delta ->
+                setPlacementInterruptionDelta(
+                    element = element,
+                    sceneState = sceneState,
+                    transition = transition,
+                    delta = delta,
+                    setter = { sceneState, delta -> sceneState.scaleInterruptionDelta = delta },
+                )
+            },
             diff = { a, b ->
                 Scale(
                     scaleX = a.scaleX - b.scaleX,
@@ -796,88 +981,6 @@
     return interruptedScale
 }
 
-@OptIn(ExperimentalComposeUiApi::class)
-private fun ApproachMeasureScope.place(
-    layoutImpl: SceneTransitionLayoutImpl,
-    scene: Scene,
-    element: Element,
-    transition: TransitionState.Transition?,
-    sceneState: Element.SceneState,
-    placeable: Placeable,
-    placementScope: Placeable.PlacementScope,
-) {
-    this as LookaheadScope
-
-    with(placementScope) {
-        // Update the offset (relative to the SceneTransitionLayout) this element has in this scene
-        // when idle.
-        val coords = coordinates ?: error("Element ${element.key} does not have any coordinates")
-        val targetOffsetInScene = lookaheadScopeCoordinates.localLookaheadPositionOf(coords)
-        sceneState.targetOffset = targetOffsetInScene
-
-        // No need to place the element in this scene if we don't want to draw it anyways.
-        if (!shouldPlaceElement(layoutImpl, scene, element, transition)) {
-            sceneState.lastOffset = Offset.Unspecified
-            sceneState.lastScale = Scale.Unspecified
-            sceneState.lastAlpha = Element.AlphaUnspecified
-
-            sceneState.clearValuesBeforeInterruption()
-            sceneState.clearInterruptionDeltas()
-            return
-        }
-
-        val currentOffset = lookaheadScopeCoordinates.localPositionOf(coords, Offset.Zero)
-        val targetOffset =
-            computeValue(
-                layoutImpl,
-                scene,
-                element,
-                transition,
-                sceneValue = { it.targetOffset },
-                transformation = { it.offset },
-                idleValue = targetOffsetInScene,
-                currentValue = { currentOffset },
-                isSpecified = { it != Offset.Unspecified },
-                ::lerp,
-            )
-
-        val interruptedOffset =
-            computeInterruptedValue(
-                layoutImpl,
-                transition,
-                value = targetOffset,
-                unspecifiedValue = Offset.Unspecified,
-                zeroValue = Offset.Zero,
-                getValueBeforeInterruption = { sceneState.offsetBeforeInterruption },
-                setValueBeforeInterruption = { sceneState.offsetBeforeInterruption = it },
-                getInterruptionDelta = { sceneState.offsetInterruptionDelta },
-                setInterruptionDelta = { sceneState.offsetInterruptionDelta = it },
-                diff = { a, b -> a - b },
-                add = { a, b, bProgress -> a + b * bProgress },
-            )
-
-        sceneState.lastOffset = interruptedOffset
-
-        val offset = (interruptedOffset - currentOffset).round()
-        if (
-            isElementOpaque(scene, element, transition) &&
-                interruptedAlpha(layoutImpl, transition, sceneState, alpha = 1f) == 1f
-        ) {
-            sceneState.lastAlpha = 1f
-
-            // TODO(b/291071158): Call placeWithLayer() if offset != IntOffset.Zero and size is not
-            // animated once b/305195729 is fixed. Test that drawing is not invalidated in that
-            // case.
-            placeable.place(offset)
-        } else {
-            placeable.placeWithLayer(offset) {
-                alpha = elementAlpha(layoutImpl, scene, element, transition, sceneState)
-                compositingStrategy = CompositingStrategy.ModulateAlpha
-            }
-        }
-    }
-}
-
 /**
  * Return the value that should be used depending on the current layout state and transition.
  *
@@ -985,10 +1088,10 @@
 
     val transformation =
         transformation(transition.transformationSpec.transformations(element.key, scene.key))
-        // If there is no transformation explicitly associated to this element value, let's use
-        // the value given by the system (like the current position and size given by the layout
-        // pass).
-        ?: return currentValue()
+            // If there is no transformation explicitly associated to this element value, let's use
+            // the value given by the system (like the current position and size given by the layout
+            // pass).
+            ?: return currentValue()
 
     // Get the transformed value, i.e. the target value at the beginning (for entering elements) or
     // end (for leaving elements) of the transition.
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt
index be005ea..32eadde 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt
@@ -187,7 +187,7 @@
         } ?: return false
 
     // Always compose movable elements in the scene picked by their scene picker.
-    return shouldDrawOrComposeSharedElement(
+    return shouldPlaceOrComposeSharedElement(
         layoutImpl,
         scene,
         element,
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
index 2946b04..b925130 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
@@ -56,7 +56,7 @@
     modifier: Modifier = Modifier,
     swipeSourceDetector: SwipeSourceDetector = DefaultEdgeDetector,
     swipeDetector: SwipeDetector = DefaultSwipeDetector,
-    @FloatRange(from = 0.0, to = 0.5) transitionInterceptionThreshold: Float = 0f,
+    @FloatRange(from = 0.0, to = 0.5) transitionInterceptionThreshold: Float = 0.05f,
     scenes: SceneTransitionLayoutScope.() -> Unit,
 ) {
     SceneTransitionLayoutForTesting(
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
index 5fa7c87..f32720c 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
@@ -107,6 +107,13 @@
                     _userActionDistanceScope = it
                 }
 
+    /**
+     * The [LookaheadScope] of this layout, that can be used to compute offsets relative to the
+     * layout.
+     */
+    internal lateinit var lookaheadScope: LookaheadScope
+        private set
+
     init {
         updateScenes(builder)
 
@@ -195,6 +202,8 @@
                 .then(LayoutElement(layoutImpl = this))
         ) {
             LookaheadScope {
+                lookaheadScope = this
+
                 BackHandler()
 
                 scenesToCompose().fastForEach { scene -> key(scene.key) { scene.Content() } }
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt
index 44affd9..6a178c8 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt
@@ -226,6 +226,12 @@
         val toScene: SceneKey,
     ) : TransitionState {
         /**
+         * The key of this transition. This should usually be null, but it can be specified to use a
+         * specific set of transformations associated to this transition.
+         */
+        open val key: TransitionKey? = null
+
+        /**
          * The progress of the transition. This is usually in the `[0; 1]` range, but it can also be
          * less than `0` or greater than `1` when using transitions with a spring AnimationSpec or
          * when flinging quickly during a swipe gesture.
@@ -455,11 +461,7 @@
      *
      * Important: you *must* call [finishTransition] once the transition is finished.
      */
-    internal fun startTransition(
-        transition: TransitionState.Transition,
-        transitionKey: TransitionKey? = null,
-        chain: Boolean = true,
-    ) {
+    internal fun startTransition(transition: TransitionState.Transition, chain: Boolean = true) {
         checkThread()
 
         // Compute the [TransformationSpec] when the transition starts.
@@ -469,7 +471,9 @@
 
         // Update the transition specs.
         transition.transformationSpec =
-            transitions.transitionSpec(fromScene, toScene, key = transitionKey).transformationSpec()
+            transitions
+                .transitionSpec(fromScene, toScene, key = transition.key)
+                .transformationSpec()
         if (orientation != null) {
             transition.updateOverscrollSpecs(
                 fromSpec = transitions.overscrollSpec(fromScene, orientation),
@@ -568,9 +572,10 @@
                     originalTransition = transitionState,
                     fromScene = targetCurrentScene,
                     toScene = matchingLink.targetTo,
+                    key = matchingLink.targetTransitionKey,
                 )
 
-            stateLink.target.startTransition(linkedTransition, matchingLink.targetTransitionKey)
+            stateLink.target.startTransition(linkedTransition)
             activeTransitionLinks[stateLink] = linkedTransition
         }
     }
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredSize.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredSize.kt
index 124ec29..b54afae 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredSize.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredSize.kt
@@ -41,15 +41,20 @@
         value: IntSize,
     ): IntSize {
         fun anchorSizeIn(scene: SceneKey): IntSize {
-            val size = layoutImpl.elements[anchor]?.sceneStates?.get(scene)?.targetSize
-            return if (size != null && size != Element.SizeUnspecified) {
-                IntSize(
-                    width = if (anchorWidth) size.width else value.width,
-                    height = if (anchorHeight) size.height else value.height,
-                )
-            } else {
-                value
-            }
+            val size =
+                layoutImpl.elements[anchor]?.sceneStates?.get(scene)?.targetSize?.takeIf {
+                    it != Element.SizeUnspecified
+                }
+                    ?: throwMissingAnchorException(
+                        transformation = "AnchoredSize",
+                        anchor = anchor,
+                        scene = scene,
+                    )
+
+            return IntSize(
+                width = if (anchorWidth) size.width else value.width,
+                height = if (anchorHeight) size.height else value.height,
+            )
         }
 
         // This simple implementation assumes that the size of [element] is the same as the size of
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt
index 7aa702b..2bab4f8 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt
@@ -39,7 +39,15 @@
         transition: TransitionState.Transition,
         value: Offset,
     ): Offset {
-        val anchor = layoutImpl.elements[anchor] ?: return value
+        fun throwException(scene: SceneKey?): Nothing {
+            throwMissingAnchorException(
+                transformation = "AnchoredTranslate",
+                anchor = anchor,
+                scene = scene,
+            )
+        }
+
+        val anchor = layoutImpl.elements[anchor] ?: throwException(scene = null)
         fun anchorOffsetIn(scene: SceneKey): Offset? {
             return anchor.sceneStates[scene]?.targetOffset?.takeIf { it.isSpecified }
         }
@@ -47,8 +55,10 @@
         // [element] will move the same amount as [anchor] does.
         // TODO(b/290184746): Also support anchors that are not shared but translated because of
         // other transformations, like an edge translation.
-        val anchorFromOffset = anchorOffsetIn(transition.fromScene) ?: return value
-        val anchorToOffset = anchorOffsetIn(transition.toScene) ?: return value
+        val anchorFromOffset =
+            anchorOffsetIn(transition.fromScene) ?: throwException(transition.fromScene)
+        val anchorToOffset =
+            anchorOffsetIn(transition.toScene) ?: throwException(transition.toScene)
         val offset = anchorToOffset - anchorFromOffset
 
         return if (scene.key == transition.toScene) {
@@ -64,3 +74,20 @@
         }
     }
 }
+
+internal fun throwMissingAnchorException(
+    transformation: String,
+    anchor: ElementKey,
+    scene: SceneKey?,
+): Nothing {
+    error(
+        """
+        Anchor ${anchor.debugName} does not have a target state in scene ${scene?.debugName}.
+        This either means that it was not composed at all during the transition or that it was
+        composed too late, for instance during layout/subcomposition. To avoid flickers in
+        $transformation, you should make sure that the composition and layout of anchor is *not*
+        deferred, for instance by moving it out of lazy layouts.
+    """
+            .trimIndent()
+    )
+}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/LinkedTransition.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/LinkedTransition.kt
index 79f126d..ed98885 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/LinkedTransition.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/LinkedTransition.kt
@@ -17,6 +17,7 @@
 package com.android.compose.animation.scene.transition.link
 
 import com.android.compose.animation.scene.SceneKey
+import com.android.compose.animation.scene.TransitionKey
 import com.android.compose.animation.scene.TransitionState
 import kotlinx.coroutines.Job
 
@@ -25,6 +26,7 @@
     private val originalTransition: TransitionState.Transition,
     fromScene: SceneKey,
     toScene: SceneKey,
+    override val key: TransitionKey? = null,
 ) : TransitionState.Transition(fromScene, toScene) {
 
     override val currentScene: SceneKey
diff --git a/packages/SystemUI/compose/scene/tests/Android.bp b/packages/SystemUI/compose/scene/tests/Android.bp
index 3509504..2ab27af 100644
--- a/packages/SystemUI/compose/scene/tests/Android.bp
+++ b/packages/SystemUI/compose/scene/tests/Android.bp
@@ -37,6 +37,7 @@
     ],
 
     static_libs: [
+        "platform-test-annotations",
         "PlatformComposeSceneTransitionLayoutTestsUtils",
         "PlatformMotionTestingCompose",
         "androidx.test.runner",
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
index beb74bc..41cacb4 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
@@ -32,6 +32,7 @@
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.pager.HorizontalPager
 import androidx.compose.foundation.pager.PagerState
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.SideEffect
@@ -46,9 +47,11 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.layout.approachLayout
 import androidx.compose.ui.platform.LocalViewConfiguration
+import androidx.compose.ui.test.assertIsDisplayed
 import androidx.compose.ui.test.assertIsNotDisplayed
 import androidx.compose.ui.test.assertPositionInRootIsEqualTo
 import androidx.compose.ui.test.assertTopPositionInRootIsEqualTo
+import androidx.compose.ui.test.hasText
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onRoot
@@ -635,10 +638,7 @@
 
         // Change the current transition.
         rule.runOnUiThread {
-            state.startTransition(
-                transition(from = SceneA, to = SceneB, progress = { 0.5f }),
-                transitionKey = null,
-            )
+            state.startTransition(transition(from = SceneA, to = SceneB, progress = { 0.5f }))
         }
 
         // The size of Foo should still be 20dp given that the new state was not composed yet.
@@ -1167,7 +1167,7 @@
         val offsetInAToB = lerp(offsetInA, offsetInB, aToBProgress)
         val sizeInAToB = lerp(sizeInA, sizeInB, aToBProgress)
         val valueInAToB = lerp(valueInA, valueInB, aToBProgress)
-        rule.runOnUiThread { state.startTransition(aToB, transitionKey = null) }
+        rule.runOnUiThread { state.startTransition(aToB) }
         rule
             .onNode(isElement(TestElements.Foo, SceneB))
             .assertSizeIsEqualTo(sizeInAToB)
@@ -1187,7 +1187,7 @@
                 progress = { bToCProgress },
                 interruptionProgress = { interruptionProgress },
             )
-        rule.runOnUiThread { state.startTransition(bToC, transitionKey = null) }
+        rule.runOnUiThread { state.startTransition(bToC) }
 
         // The interruption deltas, which will be multiplied by the interruption progress then added
         // to the current transition offset and size.
@@ -1329,9 +1329,9 @@
                 interruptionProgress = { bToCInterruptionProgress },
                 onFinish = neverFinish(),
             )
-        rule.runOnUiThread { state.startTransition(aToB, transitionKey = null) }
+        rule.runOnUiThread { state.startTransition(aToB) }
         rule.waitForIdle()
-        rule.runOnUiThread { state.startTransition(bToC, transitionKey = null) }
+        rule.runOnUiThread { state.startTransition(bToC) }
 
         // Foo is placed in both B and C given that the shared transition is disabled. In B, its
         // offset is impacted by the interruption but in C it is not.
@@ -1367,7 +1367,7 @@
                 progress = { 0.7f },
                 interruptionProgress = { 1f },
             )
-        rule.runOnUiThread { state.startTransition(bToA, transitionKey = null) }
+        rule.runOnUiThread { state.startTransition(bToA) }
 
         // Foo should have the position it had in B right before the interruption.
         rule
@@ -1391,8 +1391,7 @@
                                 to = SceneB,
                                 progress = { -1f },
                                 orientation = Orientation.Horizontal
-                            ),
-                            transitionKey = null,
+                            )
                         )
                     }
             }
@@ -1418,4 +1417,306 @@
         assertThat(bState.targetSize).isNotEqualTo(Element.SizeUnspecified)
         assertThat(bState.targetOffset).isNotEqualTo(Offset.Unspecified)
     }
+
+    @Test
+    fun lastAlphaIsNotSetByOutdatedLayer() = runTest {
+        val state =
+            rule.runOnUiThread {
+                MutableSceneTransitionLayoutStateImpl(
+                    SceneA,
+                    transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } }
+                )
+            }
+
+        lateinit var layoutImpl: SceneTransitionLayoutImpl
+        rule.setContent {
+            SceneTransitionLayoutForTesting(state, onLayoutImpl = { layoutImpl = it }) {
+                scene(SceneA) {}
+                scene(SceneB) { Box(Modifier.element(TestElements.Foo)) }
+                scene(SceneC) { Box(Modifier.element(TestElements.Foo)) }
+            }
+        }
+
+        // Start A => B at 0.5f.
+        var aToBProgress by mutableStateOf(0.5f)
+        rule.runOnUiThread {
+            state.startTransition(
+                transition(
+                    from = SceneA,
+                    to = SceneB,
+                    progress = { aToBProgress },
+                    onFinish = neverFinish(),
+                )
+            )
+        }
+        rule.waitForIdle()
+
+        val foo = checkNotNull(layoutImpl.elements[TestElements.Foo])
+        assertThat(foo.sceneStates[SceneA]).isNull()
+
+        val fooInB = foo.sceneStates[SceneB]
+        assertThat(fooInB).isNotNull()
+        assertThat(fooInB!!.lastAlpha).isEqualTo(0.5f)
+
+        // Move the progress of A => B to 0.7f.
+        aToBProgress = 0.7f
+        rule.waitForIdle()
+        assertThat(fooInB.lastAlpha).isEqualTo(0.7f)
+
+        // Start B => C at 0.3f.
+        rule.runOnUiThread {
+            state.startTransition(transition(from = SceneB, to = SceneC, progress = { 0.3f }))
+        }
+        rule.waitForIdle()
+        val fooInC = foo.sceneStates[SceneC]
+        assertThat(fooInC).isNotNull()
+        assertThat(fooInC!!.lastAlpha).isEqualTo(1f)
+        assertThat(fooInB.lastAlpha).isEqualTo(Element.AlphaUnspecified)
+
+        // Move the progress of A => B to 0.9f. This shouldn't change anything given that B => C is
+        // now the transition applied to Foo.
+        aToBProgress = 0.9f
+        rule.waitForIdle()
+        assertThat(fooInC.lastAlpha).isEqualTo(1f)
+        assertThat(fooInB.lastAlpha).isEqualTo(Element.AlphaUnspecified)
+    }
+
+    @Test
+    fun fadingElementsDontAppearInstantly() {
+        val state =
+            rule.runOnUiThread {
+                MutableSceneTransitionLayoutStateImpl(
+                    SceneA,
+                    transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } }
+                )
+            }
+
+        lateinit var layoutImpl: SceneTransitionLayoutImpl
+        rule.setContent {
+            SceneTransitionLayoutForTesting(state, onLayoutImpl = { layoutImpl = it }) {
+                scene(SceneA) {}
+                scene(SceneB) { Box(Modifier.element(TestElements.Foo)) }
+            }
+        }
+
+        // Start A => B at 60%.
+        var interruptionProgress by mutableStateOf(1f)
+        rule.runOnUiThread {
+            state.startTransition(
+                transition(
+                    from = SceneA,
+                    to = SceneB,
+                    progress = { 0.6f },
+                    interruptionProgress = { interruptionProgress },
+                )
+            )
+        }
+        rule.waitForIdle()
+
+        // Alpha of Foo should be 0f at interruption progress 100%.
+        val fooInB = layoutImpl.elements.getValue(TestElements.Foo).sceneStates.getValue(SceneB)
+        assertThat(fooInB.lastAlpha).isEqualTo(0f)
+
+        // Alpha of Foo should be 0.6f at interruption progress 0%.
+        interruptionProgress = 0f
+        rule.waitForIdle()
+        assertThat(fooInB.lastAlpha).isEqualTo(0.6f)
+
+        // Alpha of Foo should be 0.3f at interruption progress 50%.
+        interruptionProgress = 0.5f
+        rule.waitForIdle()
+        assertThat(fooInB.lastAlpha).isEqualTo(0.3f)
+    }
+
+    @Test
+    fun sharedElementIsOnlyPlacedInOverscrollingScene() {
+        val state =
+            rule.runOnUiThread {
+                MutableSceneTransitionLayoutStateImpl(
+                    SceneA,
+                    transitions {
+                        overscroll(SceneA, Orientation.Horizontal)
+                        overscroll(SceneB, Orientation.Horizontal)
+                    }
+                )
+            }
+
+        @Composable
+        fun SceneScope.Foo() {
+            Box(Modifier.element(TestElements.Foo).size(10.dp))
+        }
+
+        rule.setContent {
+            SceneTransitionLayout(state) {
+                scene(SceneA) { Foo() }
+                scene(SceneB) { Foo() }
+            }
+        }
+
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertDoesNotExist()
+
+        // A => B while overscrolling at scene B.
+        var progress by mutableStateOf(2f)
+        rule.runOnUiThread {
+            state.startTransition(transition(from = SceneA, to = SceneB, progress = { progress }))
+        }
+        rule.waitForIdle()
+
+        // Foo should only be placed in scene B.
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertExists().assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertIsDisplayed()
+
+        // Overscroll at scene A.
+        progress = -1f
+        rule.waitForIdle()
+
+        // Foo should only be placed in scene A.
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertExists().assertIsNotDisplayed()
+    }
+
+    @Test
+    fun sharedMovableElementIsOnlyComposedInOverscrollingScene() {
+        val state =
+            rule.runOnUiThread {
+                MutableSceneTransitionLayoutStateImpl(
+                    SceneA,
+                    transitions {
+                        overscroll(SceneA, Orientation.Horizontal)
+                        overscroll(SceneB, Orientation.Horizontal)
+                    }
+                )
+            }
+
+        val fooInA = "fooInA"
+        val fooInB = "fooInB"
+
+        @Composable
+        fun SceneScope.MovableFoo(text: String, modifier: Modifier = Modifier) {
+            MovableElement(TestElements.Foo, modifier) { content { Text(text) } }
+        }
+
+        rule.setContent {
+            SceneTransitionLayout(state) {
+                scene(SceneA) { MovableFoo(text = fooInA) }
+                scene(SceneB) { MovableFoo(text = fooInB) }
+            }
+        }
+
+        rule.onNode(hasText(fooInA)).assertIsDisplayed()
+        rule.onNode(hasText(fooInB)).assertDoesNotExist()
+
+        // A => B while overscrolling at scene B.
+        var progress by mutableStateOf(2f)
+        rule.runOnUiThread {
+            state.startTransition(transition(from = SceneA, to = SceneB, progress = { progress }))
+        }
+        rule.waitForIdle()
+
+        // Foo content should only be composed in scene B.
+        rule.onNode(hasText(fooInA)).assertDoesNotExist()
+        rule.onNode(hasText(fooInB)).assertIsDisplayed()
+
+        // Overscroll at scene A.
+        progress = -1f
+        rule.waitForIdle()
+
+        // Foo content should only be composed in scene A.
+        rule.onNode(hasText(fooInA)).assertIsDisplayed()
+        rule.onNode(hasText(fooInB)).assertDoesNotExist()
+    }
+
+    @Test
+    fun interruptionThenOverscroll() = runTest {
+        val state =
+            rule.runOnUiThread {
+                MutableSceneTransitionLayoutStateImpl(
+                    SceneA,
+                    transitions {
+                        overscroll(SceneB, Orientation.Vertical) {
+                            translate(TestElements.Foo, y = 15.dp)
+                        }
+                    }
+                )
+            }
+
+        @Composable
+        fun SceneScope.SceneWithFoo(offset: DpOffset, modifier: Modifier = Modifier) {
+            Box(modifier.fillMaxSize()) {
+                Box(Modifier.offset(offset.x, offset.y).element(TestElements.Foo).size(100.dp))
+            }
+        }
+
+        rule.setContent {
+            SceneTransitionLayout(state, Modifier.size(200.dp)) {
+                scene(SceneA) { SceneWithFoo(offset = DpOffset.Zero) }
+                scene(SceneB) { SceneWithFoo(offset = DpOffset(x = 40.dp, y = 0.dp)) }
+                scene(SceneC) { SceneWithFoo(offset = DpOffset(x = 40.dp, y = 40.dp)) }
+            }
+        }
+
+        // Start A => B at 75%.
+        rule.runOnUiThread {
+            state.startTransition(
+                transition(
+                    from = SceneA,
+                    to = SceneB,
+                    progress = { 0.75f },
+                    onFinish = neverFinish(),
+                )
+            )
+        }
+
+        // Foo should be at offset (30dp, 0dp) and placed in scene B.
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertPositionInRootIsEqualTo(30.dp, 0.dp)
+        rule.onNode(isElement(TestElements.Foo, SceneC)).assertIsNotDisplayed()
+
+        // Interrupt A => B with B => C at 0%.
+        var progress by mutableStateOf(0f)
+        var interruptionProgress by mutableStateOf(1f)
+        rule.runOnUiThread {
+            state.startTransition(
+                transition(
+                    from = SceneB,
+                    to = SceneC,
+                    progress = { progress },
+                    interruptionProgress = { interruptionProgress },
+                    orientation = Orientation.Vertical,
+                    onFinish = neverFinish(),
+                )
+            )
+        }
+
+        // Because interruption progress is at 100M, Foo should still be at offset (30dp, 0dp) but
+        // placed in scene C.
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneC)).assertPositionInRootIsEqualTo(30.dp, 0.dp)
+
+        // Overscroll B => C on scene B at -100%. Because overscrolling on B => C translates Foo
+        // vertically by -15dp and that interruptionProgress is still 100%, we should now be at
+        // (30dp, -15dp)
+        progress = -1f
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsNotDisplayed()
+        rule
+            .onNode(isElement(TestElements.Foo, SceneB))
+            .assertPositionInRootIsEqualTo(30.dp, -15.dp)
+        rule.onNode(isElement(TestElements.Foo, SceneC)).assertIsNotDisplayed()
+
+        // Finish the interruption, we should now be at (40dp, -15dp), still on scene B.
+        interruptionProgress = 0f
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsNotDisplayed()
+        rule
+            .onNode(isElement(TestElements.Foo, SceneB))
+            .assertPositionInRootIsEqualTo(40.dp, -15.dp)
+        rule.onNode(isElement(TestElements.Foo, SceneC)).assertIsNotDisplayed()
+
+        // Finish the transition, we should be at the final position (40dp, 40dp) on scene C.
+        progress = 1f
+        rule.onNode(isElement(TestElements.Foo, SceneA)).assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneB)).assertIsNotDisplayed()
+        rule.onNode(isElement(TestElements.Foo, SceneC)).assertPositionInRootIsEqualTo(40.dp, 40.dp)
+    }
 }
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt
index 85d4165..09d1a82 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt
@@ -40,7 +40,7 @@
         val state =
             MutableSceneTransitionLayoutState(
                 SceneA,
-                transitions { /* default interruption handler */},
+                transitions { /* default interruption handler */ },
             )
 
         state.setTargetScene(SceneB, coroutineScope = this)
@@ -160,7 +160,7 @@
                 progressVelocity = { progressVelocity },
                 onFinish = { launch {} },
             )
-        state.startTransition(aToB, transitionKey = null)
+        state.startTransition(aToB)
 
         // Animate back to A. The previous transition is reversed, i.e. it has the same (from, to)
         // pair, and its velocity is used when animating the progress back to 0.
@@ -186,7 +186,7 @@
                 progressVelocity = { progressVelocity },
                 onFinish = { launch {} },
             )
-        state.startTransition(aToB, transitionKey = null)
+        state.startTransition(aToB)
 
         // Animate to B. The previous transition is reversed, i.e. it has the same (from, to) pair,
         // and its velocity is used when animating the progress to 1.
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt
index 2a75e13..5543135 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt
@@ -135,7 +135,7 @@
         var transitionCurrentScene by mutableStateOf(SceneA)
         val transition =
             transition(from = SceneA, to = SceneB, current = { transitionCurrentScene })
-        state.startTransition(transition, transitionKey = null)
+        state.startTransition(transition)
         assertThat(currentScene.value).isEqualTo(SceneA)
 
         // Change the transition current scene.
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt
index d2c8bd6..de6f1cc 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt
@@ -57,7 +57,7 @@
     @Test
     fun isTransitioningTo_transition() {
         val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty)
-        state.startTransition(transition(from = SceneA, to = SceneB), transitionKey = null)
+        state.startTransition(transition(from = SceneA, to = SceneB))
 
         assertThat(state.isTransitioning()).isTrue()
         assertThat(state.isTransitioning(from = SceneA)).isTrue()
@@ -175,7 +175,7 @@
 
         val childTransition = transition(SceneA, SceneB)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneA, SceneB)).isTrue()
         assertThat(parentState.isTransitioning(SceneC, SceneD)).isTrue()
 
@@ -211,7 +211,7 @@
 
         val childTransition = transition(SceneA, SceneB)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneA, SceneB)).isTrue()
         assertThat(parentState.isTransitioning(SceneC, SceneD)).isTrue()
         assertThat(parentParentState.isTransitioning(SceneB, SceneC)).isTrue()
@@ -229,7 +229,7 @@
         var progress = 0f
         val childTransition = transition(SceneA, SceneB, progress = { progress })
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(parentState.currentTransition?.progress).isEqualTo(0f)
 
         progress = .5f
@@ -242,7 +242,7 @@
 
         val childTransition = transition(SceneB, SceneA)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneB, SceneA)).isTrue()
         assertThat(parentState.transitionState).isEqualTo(TransitionState.Idle(SceneC))
 
@@ -256,7 +256,7 @@
         val (parentState, childState) = setupLinkedStates()
 
         val childTransition = transition(SceneA, SceneB)
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
 
         childState.finishTransition(childTransition, SceneA)
         assertThat(childState.transitionState).isEqualTo(TransitionState.Idle(SceneA))
@@ -268,7 +268,7 @@
         val (parentState, childState) = setupLinkedStates()
 
         val childTransition = transition(SceneA, SceneB)
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
 
         childState.finishTransition(childTransition, SceneD)
         assertThat(childState.transitionState).isEqualTo(TransitionState.Idle(SceneD))
@@ -283,16 +283,16 @@
             transition(
                 SceneA,
                 SceneB,
-                onFinish = { launch { /* Do nothing. */} },
+                onFinish = { launch { /* Do nothing. */ } },
             )
         val parentTransition =
             transition(
                 SceneC,
                 SceneA,
-                onFinish = { launch { /* Do nothing. */} },
+                onFinish = { launch { /* Do nothing. */ } },
             )
-        childState.startTransition(childTransition, null)
-        parentState.startTransition(parentTransition, null)
+        childState.startTransition(childTransition)
+        parentState.startTransition(parentTransition)
 
         childState.finishTransition(childTransition, SceneB)
         assertThat(childState.transitionState).isEqualTo(TransitionState.Idle(SceneB))
@@ -341,10 +341,7 @@
     @Test
     fun snapToIdleIfClose_snapToStart() = runMonotonicClockTest {
         val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty)
-        state.startTransition(
-            transition(from = SceneA, to = SceneB, progress = { 0.2f }),
-            transitionKey = null
-        )
+        state.startTransition(transition(from = SceneA, to = SceneB, progress = { 0.2f }))
         assertThat(state.isTransitioning()).isTrue()
 
         // Ignore the request if the progress is not close to 0 or 1, using the threshold.
@@ -360,10 +357,7 @@
     @Test
     fun snapToIdleIfClose_snapToEnd() = runMonotonicClockTest {
         val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty)
-        state.startTransition(
-            transition(from = SceneA, to = SceneB, progress = { 0.8f }),
-            transitionKey = null
-        )
+        state.startTransition(transition(from = SceneA, to = SceneB, progress = { 0.8f }))
         assertThat(state.isTransitioning()).isTrue()
 
         // Ignore the request if the progress is not close to 0 or 1, using the threshold.
@@ -385,13 +379,13 @@
                 from = SceneA,
                 to = SceneB,
                 progress = { 0.5f },
-                onFinish = { launch { /* do nothing */} },
+                onFinish = { launch { /* do nothing */ } },
             )
-        state.startTransition(aToB, transitionKey = null)
+        state.startTransition(aToB)
         assertThat(state.currentTransitions).containsExactly(aToB).inOrder()
 
         val bToC = transition(from = SceneB, to = SceneC, progress = { 0.8f })
-        state.startTransition(bToC, transitionKey = null)
+        state.startTransition(bToC)
         assertThat(state.currentTransitions).containsExactly(aToB, bToC).inOrder()
 
         // Ignore the request if the progress is not close to 0 or 1, using the threshold.
@@ -409,7 +403,7 @@
         val (parentState, childState) = setupLinkedStates(SceneC, SceneA, null, null, null, SceneD)
         val childTransition = transition(SceneA, SceneB)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneA, SceneB)).isTrue()
         assertThat(parentState.isTransitioning(SceneC, SceneD)).isTrue()
 
@@ -425,7 +419,7 @@
 
         val childTransition = transition(SceneA, SceneB)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneA, SceneB)).isTrue()
         assertThat(parentState.isTransitioning(SceneC, SceneD)).isTrue()
 
@@ -440,7 +434,7 @@
             setupLinkedStates(SceneC, SceneA, SceneB, null, SceneC, SceneD)
         val childTransition = transition(SceneA, SceneB)
 
-        childState.startTransition(childTransition, null)
+        childState.startTransition(childTransition)
         assertThat(childState.isTransitioning(SceneA, SceneB)).isTrue()
         assertThat(parentState.isTransitioning(SceneC, SceneD)).isFalse()
     }
@@ -460,8 +454,7 @@
                 to = SceneB,
                 progress = progress,
                 orientation = Orientation.Vertical,
-            ),
-            transitionKey = null
+            )
         )
         assertThat(state.isTransitioning()).isTrue()
         return state
@@ -583,19 +576,19 @@
         assertThat(state.currentTransitions).isEmpty()
 
         // A => B.
-        state.startTransition(aToB, transitionKey = null)
+        state.startTransition(aToB)
         assertThat(finishingTransitions).isEmpty()
         assertThat(state.finishedTransitions).isEmpty()
         assertThat(state.currentTransitions).containsExactly(aToB).inOrder()
 
         // B => C. This should automatically call finish() on aToB.
-        state.startTransition(bToC, transitionKey = null)
+        state.startTransition(bToC)
         assertThat(finishingTransitions).containsExactly(aToB)
         assertThat(state.finishedTransitions).isEmpty()
         assertThat(state.currentTransitions).containsExactly(aToB, bToC).inOrder()
 
         // C => A. This should automatically call finish() on bToC.
-        state.startTransition(cToA, transitionKey = null)
+        state.startTransition(cToA)
         assertThat(finishingTransitions).containsExactly(aToB, bToC)
         assertThat(state.finishedTransitions).isEmpty()
         assertThat(state.currentTransitions).containsExactly(aToB, bToC, cToA).inOrder()
@@ -617,8 +610,8 @@
         val state = MutableSceneTransitionLayoutStateImpl(SceneA, EmptyTestTransitions)
 
         fun startTransition() {
-            val transition = transition(SceneA, SceneB, onFinish = { launch { /* do nothing */} })
-            state.startTransition(transition, transitionKey = null)
+            val transition = transition(SceneA, SceneB, onFinish = { launch { /* do nothing */ } })
+            state.startTransition(transition)
         }
 
         var hasLoggedWtf = false
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/Transition.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/Transition.kt
index e6fa69d..322b035 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/Transition.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/Transition.kt
@@ -30,7 +30,7 @@
     current: () -> SceneKey = { from },
     progress: () -> Float = { 0f },
     progressVelocity: () -> Float = { 0f },
-    interruptionProgress: () -> Float = { 100f },
+    interruptionProgress: () -> Float = { 0f },
     isInitiatedByUserInput: Boolean = false,
     isUserInputOngoing: Boolean = false,
     isUpOrLeft: Boolean = false,
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt
index 7b99212..6233608 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt
@@ -16,6 +16,7 @@
 
 package com.android.compose.animation.scene.transformation
 
+import android.platform.test.annotations.MotionTest
 import androidx.compose.animation.core.LinearEasing
 import androidx.compose.animation.core.tween
 import androidx.compose.foundation.layout.Box
@@ -38,6 +39,7 @@
 import platform.test.motion.testing.createGoldenPathManager
 
 @RunWith(AndroidJUnit4::class)
+@MotionTest
 class AnchoredSizeTest {
     private val goldenPaths =
         createGoldenPathManager("frameworks/base/packages/SystemUI/compose/scene/tests/goldens")
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredTranslateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredTranslateTest.kt
index d1205e7..46075c3 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredTranslateTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredTranslateTest.kt
@@ -27,6 +27,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.android.compose.animation.scene.TestElements
 import com.android.compose.animation.scene.testTransition
+import com.android.compose.animation.scene.transition
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -83,4 +84,28 @@
             after { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(20.dp, 40.dp) }
         }
     }
+
+    @Test
+    fun anchorPlacedAfterAnchoredElement() {
+        rule.testTransition(
+            fromSceneContent = { Box(Modifier.offset(10.dp, 50.dp).element(TestElements.Foo)) },
+            toSceneContent = {
+                Box(Modifier.offset(20.dp, 40.dp).element(TestElements.Bar))
+                Box(Modifier.offset(30.dp, 10.dp).element(TestElements.Foo))
+            },
+            transition = {
+                spec = tween(16 * 4, easing = LinearEasing)
+                anchoredTranslate(TestElements.Bar, TestElements.Foo)
+            },
+        ) {
+            // No exception is thrown even if Bar is placed before the anchor in toScene.
+            before { onElement(TestElements.Bar).assertDoesNotExist() }
+            at(0) { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(0.dp, 80.dp) }
+            at(16) { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(5.dp, 70.dp) }
+            at(32) { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(10.dp, 60.dp) }
+            at(48) { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(15.dp, 50.dp) }
+            at(64) { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(20.dp, 40.dp) }
+            after { onElement(TestElements.Bar).assertPositionInRootIsEqualTo(20.dp, 40.dp) }
+        }
+    }
 }
diff --git a/packages/SystemUI/flag_check.py b/packages/SystemUI/flag_check.py
index 95a25c5..d78ef5a 100755
--- a/packages/SystemUI/flag_check.py
+++ b/packages/SystemUI/flag_check.py
@@ -52,7 +52,7 @@
         nargs='?',
         default='',
         help=
-        'REPO_PATH in repo upload to determine whether the check should run for this project.')
+        'REPO_PROJECT in repo upload to determine whether the check should run for this project.')
 
     # Parse the arguments
     args = parser.parse_args()
@@ -112,16 +112,16 @@
     sys.exit(0)
 
 
-def should_run_path(path, files):
+def should_run_path(project, files):
     """Returns a boolean if this check should run with these paths.
     If you want to check for a particular subdirectory under the path,
     add a check here, call should_run_files and check for a specific sub dir path in should_run_files.
     """
-    if not path:
+    if not project:
         return False
-    if path == 'frameworks/base':
+    if project == 'platform/frameworks/base':
         return should_run_files(files)
-    # Default case, run for all other paths which calls this script.
+    # Default case, run for all other projects which calls this script.
     return True
 
 
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.java
index 27bffd0..04b930e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.java
@@ -18,9 +18,13 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.DreamManager;
 import android.view.GestureDetector;
 import android.view.MotionEvent;
 
@@ -36,6 +40,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -52,63 +57,104 @@
     ShadeViewController mShadeViewController;
 
     @Mock
+    DreamManager mDreamManager;
+
+    @Mock
     TouchHandler.TouchSession mTouchSession;
 
     ShadeTouchHandler mTouchHandler;
 
+    @Captor
+    ArgumentCaptor<GestureDetector.OnGestureListener> mGestureListenerCaptor;
+    @Captor
+    ArgumentCaptor<InputChannelCompat.InputEventListener> mInputListenerCaptor;
+
     private static final int TOUCH_HEIGHT = 20;
 
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
+
         mTouchHandler = new ShadeTouchHandler(Optional.of(mCentralSurfaces), mShadeViewController,
-                TOUCH_HEIGHT);
+                mDreamManager, TOUCH_HEIGHT);
+    }
+
+    // Verifies that a swipe down in the gesture region is captured by the shade touch handler.
+    @Test
+    public void testSwipeDown_captured() {
+        final boolean captured = swipe(Direction.DOWN);
+
+        assertThat(captured).isTrue();
+    }
+
+    // Verifies that a swipe in the upward direction is not catpured.
+    @Test
+    public void testSwipeUp_notCaptured() {
+        final boolean captured = swipe(Direction.UP);
+
+        // Motion events not captured as the swipe is going in the wrong direction.
+        assertThat(captured).isFalse();
+    }
+
+    // Verifies that a swipe down forwards captured touches to central surfaces for handling.
+    @Test
+    public void testSwipeDown_sentToCentralSurfaces() {
+        swipe(Direction.DOWN);
+
+        // Both motion events are sent for the shade window to process.
+        verify(mCentralSurfaces, times(2)).handleExternalShadeWindowTouch(any());
+    }
+
+    // Verifies that a swipe down forwards captured touches to central surfaces for handling.
+    @Test
+    public void testSwipeDown_dreaming_sentToShadeView() {
+        when(mDreamManager.isDreaming()).thenReturn(true);
+
+        swipe(Direction.DOWN);
+
+        // Both motion events are sent for the shade window to process.
+        verify(mShadeViewController, times(2)).handleExternalTouch(any());
+    }
+
+    // Verifies that a swipe down is not forwarded to the shade window.
+    @Test
+    public void testSwipeUp_touchesNotSent() {
+        swipe(Direction.UP);
+
+        // Motion events are not sent for the shade window to process as the swipe is going in the
+        // wrong direction.
+        verify(mCentralSurfaces, never()).handleExternalShadeWindowTouch(any());
     }
 
     /**
-     * Verify that touches aren't handled when the bouncer is showing.
+     * Simulates a swipe in the given direction and returns true if the touch was intercepted by the
+     * touch handler's gesture listener.
+     * <p>
+     * Swipe down starts from a Y coordinate of 0 and goes downward. Swipe up starts from the edge
+     * of the gesture region, {@link #TOUCH_HEIGHT}, and goes upward to 0.
      */
-    @Test
-    public void testInactiveOnBouncer() {
-        when(mCentralSurfaces.isBouncerShowing()).thenReturn(true);
+    private boolean swipe(Direction direction) {
+        Mockito.clearInvocations(mTouchSession);
         mTouchHandler.onSessionStart(mTouchSession);
-        verify(mTouchSession).pop();
+
+        verify(mTouchSession).registerGestureListener(mGestureListenerCaptor.capture());
+        verify(mTouchSession).registerInputListener(mInputListenerCaptor.capture());
+
+        final float startY = direction == Direction.UP ? TOUCH_HEIGHT : 0;
+        final float endY = direction == Direction.UP ? 0 : TOUCH_HEIGHT;
+
+        // Send touches to the input and gesture listener.
+        final MotionEvent event1 = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 0, startY, 0);
+        final MotionEvent event2 = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 0, endY, 0);
+        mInputListenerCaptor.getValue().onInputEvent(event1);
+        mInputListenerCaptor.getValue().onInputEvent(event2);
+        final boolean captured = mGestureListenerCaptor.getValue().onScroll(event1, event2, 0,
+                startY - endY);
+
+        return captured;
     }
 
-    /**
-     * Make sure {@link ShadeTouchHandler}
-     */
-    @Test
-    public void testTouchPilferingOnScroll() {
-        final MotionEvent motionEvent1 = Mockito.mock(MotionEvent.class);
-        final MotionEvent motionEvent2 = Mockito.mock(MotionEvent.class);
-
-        final ArgumentCaptor<GestureDetector.OnGestureListener> gestureListenerArgumentCaptor =
-                ArgumentCaptor.forClass(GestureDetector.OnGestureListener.class);
-
-        mTouchHandler.onSessionStart(mTouchSession);
-        verify(mTouchSession).registerGestureListener(gestureListenerArgumentCaptor.capture());
-
-        assertThat(gestureListenerArgumentCaptor.getValue()
-                .onScroll(motionEvent1, motionEvent2, 1, 1))
-                .isTrue();
+    private enum Direction {
+        DOWN, UP,
     }
-
-    /**
-     * Ensure touches are propagated to the {@link ShadeViewController}.
-     */
-    @Test
-    public void testEventPropagation() {
-        final MotionEvent motionEvent = Mockito.mock(MotionEvent.class);
-
-        final ArgumentCaptor<InputChannelCompat.InputEventListener>
-                inputEventListenerArgumentCaptor =
-                    ArgumentCaptor.forClass(InputChannelCompat.InputEventListener.class);
-
-        mTouchHandler.onSessionStart(mTouchSession);
-        verify(mTouchSession).registerInputListener(inputEventListenerArgumentCaptor.capture());
-        inputEventListenerArgumentCaptor.getValue().onInputEvent(motionEvent);
-        verify(mShadeViewController).handleExternalTouch(motionEvent);
-    }
-
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt
index ab55125..29a6e56 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt
@@ -235,6 +235,7 @@
 
             job.cancel()
         }
+
     @Test
     fun fadeFromDialogSuggestedAlpha() =
         testScope.runTest {
@@ -511,9 +512,10 @@
         testScope.runTest {
             // GIVEN view is attached
             mController.onViewAttached()
+            val job = mController.listenForLockscreenAodTransitions(this)
+            runCurrent()
             Mockito.reset(mView)
 
-            val job = mController.listenForLockscreenAodTransitions(this)
             // WHEN aod to lockscreen transition is cancelled
             transitionRepository.sendTransitionStep(
                 TransitionStep(
@@ -537,7 +539,7 @@
 
             // THEN doze amount is updated to zero
             verify(mView)
-                .onDozeAmountChanged(eq(0f), eq(0f), eq(UdfpsKeyguardViewLegacy.ANIMATION_NONE))
+                .onDozeAmountChanged(eq(0f), eq(0f), eq(ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN))
             job.cancel()
         }
 
@@ -546,9 +548,10 @@
         testScope.runTest {
             // GIVEN view is attached
             mController.onViewAttached()
+            val job = mController.listenForLockscreenAodTransitions(this)
+            runCurrent()
             Mockito.reset(mView)
 
-            val job = mController.listenForLockscreenAodTransitions(this)
             // WHEN lockscreen to aod transition is cancelled
             transitionRepository.sendTransitionStep(
                 TransitionStep(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
index bfed33c..fe683e07 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
@@ -22,7 +22,6 @@
 import androidx.test.filters.SmallTest
 import com.android.systemui.Flags
 import com.android.systemui.SysuiTestCase
-import com.android.systemui.communal.domain.interactor.communalInteractor
 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
 import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.data.repository.keyguardRepository
@@ -66,7 +65,6 @@
                     powerInteractor = kosmos.powerInteractor,
                     keyguardInteractor = kosmos.keyguardInteractor,
                     keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor,
-                    communalInteractor = kosmos.communalInteractor,
                     dreamManager = dreamManager,
                     bgScope = kosmos.applicationCoroutineScope,
                 )
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
index ffa63d8..e42a67b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
@@ -295,7 +295,7 @@
             val targets = listOf(target1, target2, target3)
             smartspaceRepository.setCommunalSmartspaceTargets(targets)
 
-            val smartspaceContent by collectLastValue(underTest.ongoingContent)
+            val smartspaceContent by collectLastValue(underTest.getOngoingContent(true))
             assertThat(smartspaceContent?.size).isEqualTo(1)
             assertThat(smartspaceContent?.get(0)?.key)
                 .isEqualTo(CommunalContentModel.KEY.smartspace("target3"))
@@ -393,7 +393,7 @@
 
             smartspaceRepository.setCommunalSmartspaceTargets(targets)
 
-            val smartspaceContent by collectLastValue(underTest.ongoingContent)
+            val smartspaceContent by collectLastValue(underTest.getOngoingContent(true))
             assertThat(smartspaceContent?.size).isEqualTo(totalTargets)
             for (index in 0 until totalTargets) {
                 assertThat(smartspaceContent?.get(index)?.size).isEqualTo(expectedSizes[index])
@@ -409,7 +409,7 @@
             // Media is playing.
             mediaRepository.mediaActive()
 
-            val umoContent by collectLastValue(underTest.ongoingContent)
+            val umoContent by collectLastValue(underTest.getOngoingContent(true))
 
             assertThat(umoContent?.size).isEqualTo(1)
             assertThat(umoContent?.get(0)).isInstanceOf(CommunalContentModel.Umo::class.java)
@@ -417,6 +417,20 @@
         }
 
     @Test
+    fun umo_mediaPlaying_doNotShowUmo() =
+        testScope.run {
+            // Tutorial completed.
+            tutorialRepository.setTutorialSettingState(HUB_MODE_TUTORIAL_COMPLETED)
+
+            // Media is playing.
+            mediaRepository.mediaActive()
+
+            val umoContent by collectLastValue(underTest.getOngoingContent(false))
+
+            assertThat(umoContent?.size).isEqualTo(0)
+        }
+
+    @Test
     fun ongoing_shouldOrderAndSizeByTimestamp() =
         testScope.runTest {
             // Keyguard showing, and tutorial completed.
@@ -439,7 +453,7 @@
             val timer3 = smartspaceTimer("timer3", timestamp = 4L)
             smartspaceRepository.setCommunalSmartspaceTargets(listOf(timer1, timer2, timer3))
 
-            val ongoingContent by collectLastValue(underTest.ongoingContent)
+            val ongoingContent by collectLastValue(underTest.getOngoingContent(true))
             assertThat(ongoingContent?.size).isEqualTo(4)
             assertThat(ongoingContent?.get(0)?.key)
                 .isEqualTo(CommunalContentModel.KEY.smartspace("timer3"))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
index aad2e60..a0e7781 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
@@ -20,6 +20,7 @@
 import androidx.test.filters.SmallTest
 import com.android.compose.animation.scene.ObservableTransitionState
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.ActivityTransitionAnimator
 import com.android.systemui.communal.data.repository.communalSceneRepository
 import com.android.systemui.communal.domain.model.CommunalTransitionProgressModel
 import com.android.systemui.communal.shared.model.CommunalScenes
@@ -27,8 +28,10 @@
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.advanceTimeBy
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -63,6 +66,21 @@
             assertThat(currentScene).isEqualTo(CommunalScenes.Communal)
         }
 
+    @OptIn(ExperimentalCoroutinesApi::class)
+    @Test
+    fun snapToSceneWithDelay() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(CommunalScenes.Blank)
+            underTest.snapToScene(
+                CommunalScenes.Communal,
+                ActivityTransitionAnimator.TIMINGS.totalDuration
+            )
+            assertThat(currentScene).isEqualTo(CommunalScenes.Blank)
+            advanceTimeBy(ActivityTransitionAnimator.TIMINGS.totalDuration)
+            assertThat(currentScene).isEqualTo(CommunalScenes.Communal)
+        }
+
     @Test
     fun transitionProgress_fullProgress() =
         testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
index 9dcea82..e7a7b15 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
@@ -46,6 +46,7 @@
 import com.android.systemui.communal.ui.viewmodel.CommunalViewModel.Companion.POPUP_AUTO_HIDE_TIMEOUT_MS
 import com.android.systemui.communal.ui.viewmodel.PopupType
 import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.coroutines.collectValues
 import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED
 import com.android.systemui.flags.andSceneContainer
 import com.android.systemui.flags.fakeFeatureFlagsClassic
@@ -61,6 +62,7 @@
 import com.android.systemui.keyguard.shared.model.StatusBarState
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.kosmos.testDispatcher
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.log.logcatLogBuffer
 import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
@@ -142,11 +144,13 @@
             selectedUserIndex = 0,
         )
         whenever(providerInfo.profile).thenReturn(UserHandle(MAIN_USER_INFO.id))
+        whenever(mediaHost.visible).thenReturn(true)
 
         kosmos.powerInteractor.setAwakeForTest()
 
         underTest =
             CommunalViewModel(
+                kosmos.testDispatcher,
                 testScope,
                 context.resources,
                 kosmos.keyguardTransitionInteractor,
@@ -235,6 +239,45 @@
         }
 
     @Test
+    fun communalContent_mediaHostVisible_umoIncluded() =
+        testScope.runTest {
+            // Media playing.
+            mediaRepository.mediaActive()
+
+            val communalContent by collectLastValue(underTest.communalContent)
+            assertThat(communalContent?.size).isEqualTo(2)
+            assertThat(communalContent?.get(0)).isInstanceOf(CommunalContentModel.Umo::class.java)
+        }
+
+    @Test
+    fun communalContent_mediaHostVisible_umoExcluded() =
+        testScope.runTest {
+            whenever(mediaHost.visible).thenReturn(false)
+            mediaHost.updateViewVisibility()
+            // Media playing.
+            mediaRepository.mediaActive()
+
+            val communalContent by collectLastValue(underTest.communalContent)
+            assertThat(communalContent?.size).isEqualTo(1)
+            assertThat(communalContent?.get(0))
+                .isInstanceOf(CommunalContentModel.CtaTileInViewMode::class.java)
+        }
+
+    @Test
+    fun communalContent_mediaHostVisible_umoToggle() =
+        testScope.runTest {
+            mediaHost.updateViewVisibility()
+            mediaRepository.mediaActive()
+
+            val communalContent by collectValues(underTest.communalContent)
+
+            whenever(mediaHost.visible).thenReturn(false)
+            mediaHost.updateViewVisibility()
+
+            assertThat(communalContent.size).isEqualTo(1)
+        }
+
+    @Test
     fun isEmptyState_isTrue_noWidgetButActiveLiveContent() =
         testScope.runTest {
             tutorialRepository.setTutorialSettingState(Settings.Secure.HUB_MODE_TUTORIAL_COMPLETED)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
index 420b11c..df7b291 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
@@ -27,23 +27,19 @@
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.plugins.ActivityStarter
-import com.android.systemui.util.mockito.eq
-import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.refEq
-import org.mockito.Mock
-import org.mockito.Mockito.isNull
-import org.mockito.Mockito.notNull
-import org.mockito.Mockito.verify
-import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.isNull
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.notNull
+import org.mockito.kotlin.refEq
+import org.mockito.kotlin.verify
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 class WidgetInteractionHandlerTest : SysuiTestCase() {
-    @Mock private lateinit var activityStarter: ActivityStarter
-
-    private lateinit var underTest: WidgetInteractionHandler
+    private val activityStarter = mock<ActivityStarter>()
 
     private val testIntent =
         PendingIntent.getActivity(
@@ -54,10 +50,8 @@
         )
     private val testResponse = RemoteResponse.fromPendingIntent(testIntent)
 
-    @Before
-    fun setUp() {
-        MockitoAnnotations.initMocks(this)
-        underTest = WidgetInteractionHandler(activityStarter)
+    private val underTest: WidgetInteractionHandler by lazy {
+        WidgetInteractionHandler(activityStarter)
     }
 
     @Test
@@ -81,6 +75,26 @@
     }
 
     @Test
+    fun launchAnimatorIsUsedForSmartspaceView() {
+        val parent = FrameLayout(context)
+        val view = SmartspaceAppWidgetHostView(context)
+        parent.addView(view)
+        val (fillInIntent, activityOptions) = testResponse.getLaunchOptions(view)
+
+        underTest.onInteraction(view, testIntent, testResponse)
+
+        verify(activityStarter)
+            .startPendingIntentMaybeDismissingKeyguard(
+                eq(testIntent),
+                eq(false),
+                isNull(),
+                notNull(),
+                refEq(fillInIntent),
+                refEq(activityOptions.toBundle()),
+            )
+    }
+
+    @Test
     fun launchAnimatorIsNotUsedForRegularView() {
         val parent = FrameLayout(context)
         val view = View(context)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/qs/QSLongPressEffectTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/qs/QSLongPressEffectTest.kt
index 4849e66..c51413a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/qs/QSLongPressEffectTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/qs/QSLongPressEffectTest.kt
@@ -26,7 +26,6 @@
 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
 import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
 import com.android.systemui.kosmos.testScope
-import com.android.systemui.qs.qsTileFactory
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.test.TestScope
@@ -42,7 +41,6 @@
 
     private val kosmos = testKosmos()
     private val vibratorHelper = kosmos.vibratorHelper
-    private val qsTile = kosmos.qsTileFactory.createTile("Test Tile")
 
     private val effectDuration = 400
     private val lowTickDuration = 12
@@ -63,7 +61,6 @@
                 vibratorHelper,
                 kosmos.keyguardInteractor,
             )
-        longPressEffect.qsTile = qsTile
     }
 
     @Test
@@ -94,10 +91,8 @@
         // GIVEN an action down event occurs
         longPressEffect.handleActionDown()
 
-        // THEN the effect moves to the TIMEOUT_WAIT state and starts the wait
-        val action by collectLastValue(longPressEffect.actionType)
+        // THEN the effect moves to the TIMEOUT_WAIT state
         assertThat(longPressEffect.state).isEqualTo(QSLongPressEffect.State.TIMEOUT_WAIT)
-        assertThat(action).isEqualTo(QSLongPressEffect.ActionType.WAIT_TAP_TIMEOUT)
     }
 
     @Test
@@ -112,6 +107,20 @@
         }
 
     @Test
+    fun onActionUp_whileWaiting_performsClick() =
+        testWhileInState(QSLongPressEffect.State.TIMEOUT_WAIT) {
+            // GIVEN an action is being collected
+            val action by collectLastValue(longPressEffect.actionType)
+
+            // GIVEN an action up occurs
+            longPressEffect.handleActionUp()
+
+            // THEN the action to invoke is the click action and the effect does not start
+            assertThat(action).isEqualTo(QSLongPressEffect.ActionType.CLICK)
+            assertEffectDidNotStart()
+        }
+
+    @Test
     fun onWaitComplete_whileWaiting_beginsEffect() =
         testWhileInState(QSLongPressEffect.State.TIMEOUT_WAIT) {
             // GIVEN the pressed timeout is complete
@@ -212,10 +221,8 @@
             // GIVEN that the animator was cancelled
             longPressEffect.handleAnimationCancel()
 
-            // THEN the state goes to the timeout wait and the wait is posted
-            val action by collectLastValue(longPressEffect.actionType)
+            // THEN the state goes to the timeout wait
             assertThat(longPressEffect.state).isEqualTo(QSLongPressEffect.State.TIMEOUT_WAIT)
-            assertThat(action).isEqualTo(QSLongPressEffect.ActionType.WAIT_TAP_TIMEOUT)
         }
 
     @Test
@@ -231,29 +238,6 @@
             assertThat(longPressEffect.state).isEqualTo(QSLongPressEffect.State.IDLE)
         }
 
-    @Test
-    fun onTileClick_whileWaiting_withQSTile_clicks() =
-        testWhileInState(QSLongPressEffect.State.TIMEOUT_WAIT) {
-            // GIVEN that a click was detected
-            val couldClick = longPressEffect.onTileClick()
-
-            // THEN the click is successful
-            assertThat(couldClick).isTrue()
-        }
-
-    @Test
-    fun onTileClick_whileWaiting_withoutQSTile_cannotClick() =
-        testWhileInState(QSLongPressEffect.State.TIMEOUT_WAIT) {
-            // GIVEN that no QSTile has been set
-            longPressEffect.qsTile = null
-
-            // GIVEN that a click was detected
-            val couldClick = longPressEffect.onTileClick()
-
-            // THEN the click is not successful
-            assertThat(couldClick).isFalse()
-        }
-
     private fun testWithScope(initialize: Boolean = true, test: suspend TestScope.() -> Unit) =
         with(kosmos) {
             testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
index 5756bca..0f061de 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
@@ -125,68 +125,6 @@
         }
 
     @Test
-    fun dozeAmountTransitionTest_AodToFromLockscreen() =
-        testScope.runTest {
-            val dozeAmountSteps by collectValues(underTest.dozeAmountTransition)
-
-            val steps = mutableListOf<TransitionStep>()
-
-            steps.add(TransitionStep(AOD, LOCKSCREEN, 0f, STARTED))
-            steps.add(TransitionStep(AOD, LOCKSCREEN, 0.5f, RUNNING))
-            steps.add(TransitionStep(AOD, LOCKSCREEN, 1f, FINISHED))
-            steps.add(TransitionStep(LOCKSCREEN, AOD, 0f, STARTED))
-            steps.add(TransitionStep(LOCKSCREEN, AOD, 0.8f, RUNNING))
-            steps.add(TransitionStep(LOCKSCREEN, AOD, 0.9f, RUNNING))
-            steps.add(TransitionStep(LOCKSCREEN, AOD, 1f, FINISHED))
-
-            steps.forEach {
-                repository.sendTransitionStep(it)
-                runCurrent()
-            }
-
-            assertThat(dozeAmountSteps.subList(0, 3))
-                .isEqualTo(
-                    listOf(
-                        steps[0].copy(value = 1f - steps[0].value),
-                        steps[1].copy(value = 1f - steps[1].value),
-                        steps[2].copy(value = 1f - steps[2].value),
-                    )
-                )
-            assertThat(dozeAmountSteps.subList(3, 7)).isEqualTo(steps.subList(3, 7))
-        }
-
-    @Test
-    fun dozeAmountTransitionTest_AodToFromGone() =
-        testScope.runTest {
-            val dozeAmountSteps by collectValues(underTest.dozeAmountTransition)
-
-            val steps = mutableListOf<TransitionStep>()
-
-            steps.add(TransitionStep(AOD, GONE, 0f, STARTED))
-            steps.add(TransitionStep(AOD, GONE, 0.3f, RUNNING))
-            steps.add(TransitionStep(AOD, GONE, 1f, FINISHED))
-            steps.add(TransitionStep(GONE, AOD, 0f, STARTED))
-            steps.add(TransitionStep(GONE, AOD, 0.1f, RUNNING))
-            steps.add(TransitionStep(GONE, AOD, 0.3f, RUNNING))
-            steps.add(TransitionStep(GONE, AOD, 1f, FINISHED))
-
-            steps.forEach {
-                repository.sendTransitionStep(it)
-                runCurrent()
-            }
-
-            assertThat(dozeAmountSteps.subList(0, 3))
-                .isEqualTo(
-                    listOf(
-                        steps[0].copy(value = 1f - steps[0].value),
-                        steps[1].copy(value = 1f - steps[1].value),
-                        steps[2].copy(value = 1f - steps[2].value),
-                    )
-                )
-            assertThat(dozeAmountSteps.subList(3, 7)).isEqualTo(steps.subList(3, 7))
-        }
-
-    @Test
     fun finishedKeyguardStateTests() =
         testScope.runTest {
             val finishedSteps by collectValues(underTest.finishedKeyguardState)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
index ad24a71..3777e40 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
@@ -31,6 +31,7 @@
 import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
 import com.android.systemui.keyguard.shared.model.BurnInModel
 import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
+import com.android.systemui.kosmos.testDispatcher
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.testKosmos
 import com.android.systemui.util.mockito.any
@@ -106,6 +107,8 @@
                 shortcutsCombinedViewModel = shortcutsCombinedViewModel,
                 configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()),
                 keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor,
+                backgroundCoroutineContext = kosmos.testDispatcher,
+                mainDispatcher = kosmos.testDispatcher
             )
     }
 
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
index 33e2cac..194f362 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
@@ -39,7 +39,9 @@
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.shared.model.TransitionStep
 import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.data.repository.Idle
 import com.android.systemui.scene.data.repository.sceneContainerRepository
+import com.android.systemui.scene.data.repository.setSceneTransition
 import com.android.systemui.scene.shared.flag.SceneContainerFlag
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.shadeTestUtil
@@ -290,6 +292,7 @@
                 testScope,
             )
 
+            kosmos.setSceneTransition(Idle(Scenes.Gone))
             // Make sure the value hasn't changed since we're GONE
             keyguardRepository.topClippingBounds.value = 5
             assertThat(topClippingBounds).isEqualTo(1000)
@@ -399,6 +402,53 @@
         }
 
     @Test
+    @DisableSceneContainer
+    fun alphaFromShadeExpansion_doesNotEmitWhenTransitionRunning() =
+        testScope.runTest {
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.AOD,
+                to = KeyguardState.LOCKSCREEN,
+                testScope,
+            )
+
+            val alpha by collectLastValue(underTest.alpha(viewState))
+            shadeTestUtil.setQsExpansion(0f)
+            runCurrent()
+            assertThat(alpha).isEqualTo(1f)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.LOCKSCREEN,
+                to = KeyguardState.PRIMARY_BOUNCER,
+                testScope,
+            )
+            assertThat(alpha).isEqualTo(0f)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                listOf(
+                    TransitionStep(
+                        from = KeyguardState.PRIMARY_BOUNCER,
+                        to = KeyguardState.LOCKSCREEN,
+                        transitionState = TransitionState.STARTED,
+                        value = 0f,
+                    ),
+                    TransitionStep(
+                        from = KeyguardState.PRIMARY_BOUNCER,
+                        to = KeyguardState.LOCKSCREEN,
+                        transitionState = TransitionState.RUNNING,
+                        value = 0.8f,
+                    ),
+                ),
+                testScope,
+            )
+            // Alpha should be 1f from the above transition
+            assertThat(alpha).isEqualTo(1f)
+
+            shadeTestUtil.setQsExpansion(0.5f)
+            // Alpha should remain unchanged instead of fading out
+            assertThat(alpha).isEqualTo(1f)
+        }
+
+    @Test
     fun alpha_shadeClosedOverLockscreen_isOne() =
         testScope.runTest {
             val alpha by collectLastValue(underTest.alpha(viewState))
@@ -471,11 +521,14 @@
                 to = KeyguardState.GONE,
                 testScope = testScope,
             )
+            kosmos.setSceneTransition(Idle(Scenes.Gone))
             assertThat(alpha).isEqualTo(0f)
 
-            // Try pulling down shade and ensure the value doesn't change
-            shadeTestUtil.setQsExpansion(0.5f)
-            assertThat(alpha).isEqualTo(0f)
+            if (!SceneContainerFlag.isEnabled) {
+                // Try pulling down shade and ensure the value doesn't change
+                shadeTestUtil.setQsExpansion(0.5f)
+                assertThat(alpha).isEqualTo(0f)
+            }
         }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModelTest.kt
index 9d8ec95..6b1794e2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModelTest.kt
@@ -30,7 +30,9 @@
 import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.ui.viewmodel.notificationsShadeSceneViewModel
 import com.android.systemui.testKosmos
@@ -62,7 +64,9 @@
             val destinationScenes by collectLastValue(underTest.destinationScenes)
             lockDevice()
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Lockscreen)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(kosmos.homeSceneFamilyResolver.resolvedScene.value)
+                .isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
@@ -72,7 +76,8 @@
             lockDevice()
             unlockDevice()
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Gone)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(Scenes.Gone)
         }
 
     @Test
@@ -85,7 +90,9 @@
             )
             sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Lockscreen)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(kosmos.homeSceneFamilyResolver.resolvedScene.value)
+                .isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
@@ -96,10 +103,12 @@
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
             )
+            sceneInteractor // force the lazy; this will kick off StateFlows
             runCurrent()
             sceneInteractor.changeScene(Scenes.Gone, "reason")
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Gone)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(kosmos.homeSceneFamilyResolver.resolvedScene.value).isEqualTo(Scenes.Gone)
         }
 
     private fun TestScope.lockDevice() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
index 7388d51..b35b7bc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
@@ -164,25 +164,16 @@
 
             with(qsImpl!!) {
                 verify(this).setQsVisible(false)
-                verify(this, never())
+                verify(this)
                     .setQsExpansion(
-                        /* expansion= */ anyFloat(),
-                        /* panelExpansionFraction= */ anyFloat(),
-                        /* proposedTranslation= */ anyFloat(),
-                        /* squishinessFraction= */ anyFloat(),
+                        /* expansion= */ 0f,
+                        /* panelExpansionFraction= */ 1f,
+                        /* proposedTranslation= */ 0f,
+                        /* squishinessFraction= */ 1f,
                     )
                 verify(this).setListening(false)
                 verify(this).setExpanded(false)
             }
-
-            underTest.applyLatestExpansionAndSquishiness()
-            verify(qsImpl!!)
-                .setQsExpansion(
-                    /* expansion= */ 0f,
-                    /* panelExpansionFraction= */ 1f,
-                    /* proposedTranslation= */ 0f,
-                    /* squishinessFraction= */ 1f,
-                )
         }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
index 0b55bef..7ee20e5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
@@ -28,7 +28,6 @@
 import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
-import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
 import com.android.systemui.flags.EnableSceneContainer
 import com.android.systemui.flags.Flags
 import com.android.systemui.flags.fakeFeatureFlagsClassic
@@ -36,16 +35,17 @@
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.media.controls.data.repository.mediaFilterRepository
-import com.android.systemui.media.controls.domain.pipeline.MediaDataManager
 import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor
 import com.android.systemui.media.controls.shared.model.MediaData
 import com.android.systemui.qs.FooterActionsController
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.qs.ui.adapter.FakeQSSceneAdapter
 import com.android.systemui.res.R
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneBackInteractor
 import com.android.systemui.scene.domain.interactor.sceneContainerStartable
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel
 import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModel
@@ -55,7 +55,6 @@
 import com.android.systemui.util.mockito.mock
 import com.android.systemui.util.mockito.whenever
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
@@ -82,11 +81,8 @@
     private val sceneBackInteractor = kosmos.sceneBackInteractor
     private val sceneContainerStartable = kosmos.sceneContainerStartable
 
-    private val mediaDataManager = mock<MediaDataManager>()
-
     private lateinit var underTest: QuickSettingsSceneViewModel
 
-    @OptIn(ExperimentalCoroutinesApi::class)
     @Before
     fun setUp() {
         kosmos.fakeFeatureFlagsClassic.set(Flags.NEW_NETWORK_SLICE_UI, false)
@@ -95,7 +91,6 @@
         underTest =
             QuickSettingsSceneViewModel(
                 applicationScope = testScope.backgroundScope,
-                deviceEntryInteractor = kosmos.deviceEntryInteractor,
                 brightnessMirrorViewModel = kosmos.brightnessMirrorViewModel,
                 shadeHeaderViewModel = kosmos.shadeHeaderViewModel,
                 qsSceneAdapter = qsFlexiglassAdapter,
@@ -112,6 +107,7 @@
         testScope.runTest {
             overrideResource(R.bool.config_use_split_notification_shade, false)
             val destinations by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             qsFlexiglassAdapter.setCustomizing(false)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
@@ -128,9 +124,10 @@
                         Swipe(
                             fromSource = Edge.Bottom,
                             direction = SwipeDirection.Up,
-                        ) to UserActionResult(Scenes.Gone)
+                        ) to UserActionResult(SceneFamilies.Home)
                     )
                 )
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     @Test
@@ -142,6 +139,7 @@
 
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val backScene by collectLastValue(sceneBackInteractor.backScene)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
             sceneInteractor.changeScene(Scenes.QuickSettings, "reason")
             assertThat(currentScene).isEqualTo(Scenes.QuickSettings)
@@ -155,9 +153,10 @@
                         Swipe(
                             fromSource = Edge.Bottom,
                             direction = SwipeDirection.Up,
-                        ) to UserActionResult(Scenes.Lockscreen)
+                        ) to UserActionResult(SceneFamilies.Home)
                     )
                 )
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
@@ -165,6 +164,7 @@
         testScope.runTest {
             overrideResource(R.bool.config_use_split_notification_shade, false)
             val destinations by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             qsFlexiglassAdapter.setCustomizing(false)
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
@@ -179,9 +179,10 @@
                         Swipe(
                             fromSource = Edge.Bottom,
                             direction = SwipeDirection.Up,
-                        ) to UserActionResult(Scenes.Lockscreen)
+                        ) to UserActionResult(SceneFamilies.Home)
                     )
                 )
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
@@ -199,6 +200,7 @@
         testScope.runTest {
             overrideResource(R.bool.config_use_split_notification_shade, true)
             val destinations by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             qsFlexiglassAdapter.setCustomizing(false)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
@@ -215,9 +217,10 @@
                         Swipe(
                             fromSource = Edge.Bottom,
                             direction = SwipeDirection.Up,
-                        ) to UserActionResult(Scenes.Gone),
+                        ) to UserActionResult(SceneFamilies.Home)
                     )
                 )
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModelTest.kt
index 034c2e9..f28ddeb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModelTest.kt
@@ -30,7 +30,9 @@
 import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.ui.viewmodel.quickSettingsShadeSceneViewModel
 import com.android.systemui.testKosmos
@@ -60,38 +62,45 @@
     fun upTransitionSceneKey_deviceLocked_lockscreen() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             lockDevice()
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Lockscreen)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
     fun upTransitionSceneKey_deviceUnlocked_gone() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             lockDevice()
             unlockDevice()
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Gone)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     @Test
     fun upTransitionSceneKey_authMethodSwipe_lockscreenNotDismissed_goesToLockscreen() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
             )
             sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Lockscreen)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
     fun upTransitionSceneKey_authMethodSwipe_lockscreenDismissed_goesToGone() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
@@ -99,7 +108,8 @@
             runCurrent()
             sceneInteractor.changeScene(Scenes.Gone, "reason")
 
-            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(Scenes.Gone)
+            assertThat(destinationScenes?.get(Swipe.Up)?.toScene).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     private fun TestScope.lockDevice() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
index 9e7e766..f8a62cb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
@@ -51,7 +51,6 @@
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenSceneViewModel
 import com.android.systemui.kosmos.testScope
-import com.android.systemui.media.controls.domain.pipeline.MediaDataManager
 import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor
 import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
 import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
@@ -59,8 +58,10 @@
 import com.android.systemui.qs.footerActionsController
 import com.android.systemui.qs.footerActionsViewModelFactory
 import com.android.systemui.qs.ui.adapter.FakeQSSceneAdapter
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneContainerStartable
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
@@ -91,7 +92,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mock
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
@@ -169,8 +169,6 @@
 
     private val qsFlexiglassAdapter = FakeQSSceneAdapter(inflateDelegate = { mock() })
 
-    @Mock private lateinit var mediaDataManager: MediaDataManager
-
     private lateinit var emergencyAffordanceManager: EmergencyAffordanceManager
     private lateinit var telecomManager: TelecomManager
     private val fakeSceneDataSource = kosmos.fakeSceneDataSource
@@ -205,7 +203,6 @@
         shadeSceneViewModel =
             ShadeSceneViewModel(
                 applicationScope = testScope.backgroundScope,
-                deviceEntryInteractor = deviceEntryInteractor,
                 shadeHeaderViewModel = kosmos.shadeHeaderViewModel,
                 qsSceneAdapter = qsFlexiglassAdapter,
                 notifications = kosmos.notificationsPlaceholderViewModel,
@@ -280,6 +277,7 @@
     fun swipeUpOnShadeScene_withAuthMethodSwipe_lockscreenNotDismissed_goesToLockscreen() =
         testScope.runTest {
             val destinationScenes by collectLastValue(shadeSceneViewModel.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true)
             assertCurrentScene(Scenes.Lockscreen)
 
@@ -288,9 +286,10 @@
             assertCurrentScene(Scenes.Shade)
 
             val upDestinationSceneKey = destinationScenes?.get(Swipe.Up)?.toScene
-            assertThat(upDestinationSceneKey).isEqualTo(Scenes.Lockscreen)
+            assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
             emulateUserDrivenTransition(
-                to = upDestinationSceneKey,
+                to = homeScene,
             )
         }
 
@@ -299,6 +298,7 @@
         testScope.runTest {
             val destinationScenes by collectLastValue(shadeSceneViewModel.destinationScenes)
             val canSwipeToEnter by collectLastValue(deviceEntryInteractor.canSwipeToEnter)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
 
             setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true)
 
@@ -314,9 +314,10 @@
             assertCurrentScene(Scenes.Shade)
 
             val upDestinationSceneKey = destinationScenes?.get(Swipe.Up)?.toScene
-            assertThat(upDestinationSceneKey).isEqualTo(Scenes.Gone)
+            assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
             emulateUserDrivenTransition(
-                to = upDestinationSceneKey,
+                to = homeScene,
             )
         }
 
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
index 229a711..92e6b16 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
@@ -21,16 +21,20 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.SceneKey
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.flags.EnableSceneContainer
 import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.data.repository.Idle
+import com.android.systemui.scene.data.repository.Transition
 import com.android.systemui.scene.data.repository.sceneContainerRepository
+import com.android.systemui.scene.data.repository.setSceneTransition
 import com.android.systemui.scene.sceneContainerConfig
 import com.android.systemui.scene.sceneKeys
-import com.android.systemui.scene.shared.model.SceneContainerConfig
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.testKosmos
@@ -38,6 +42,7 @@
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
@@ -52,48 +57,27 @@
     private val testScope = kosmos.testScope
     private val fakeSceneDataSource = kosmos.fakeSceneDataSource
 
-    private lateinit var underTest: SceneInteractor
+    private val underTest = kosmos.sceneInteractor
 
     @Test
     fun allSceneKeys() {
-        underTest = kosmos.sceneInteractor
         assertThat(underTest.allSceneKeys()).isEqualTo(kosmos.sceneKeys)
     }
 
     @Test
     fun changeScene_toUnknownScene_doesNothing() =
         testScope.runTest {
-            val sceneKeys =
-                listOf(
-                    Scenes.QuickSettings,
-                    Scenes.Shade,
-                    Scenes.Lockscreen,
-                    Scenes.Gone,
-                    Scenes.Communal,
-                )
-            val navigationDistances =
-                mapOf(
-                    Scenes.Gone to 0,
-                    Scenes.Lockscreen to 0,
-                    Scenes.Communal to 1,
-                    Scenes.Shade to 2,
-                    Scenes.QuickSettings to 3,
-                )
-            kosmos.sceneContainerConfig =
-                SceneContainerConfig(sceneKeys, Scenes.Lockscreen, navigationDistances)
-            underTest = kosmos.sceneInteractor
             val currentScene by collectLastValue(underTest.currentScene)
+            val unknownScene = SceneKey("UNKNOWN")
             val previousScene = currentScene
-            assertThat(previousScene).isNotEqualTo(Scenes.Bouncer)
-            underTest.changeScene(Scenes.Bouncer, "reason")
+            assertThat(previousScene).isNotEqualTo(unknownScene)
+            underTest.changeScene(unknownScene, "reason")
             assertThat(currentScene).isEqualTo(previousScene)
         }
 
     @Test
     fun changeScene() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-
             val currentScene by collectLastValue(underTest.currentScene)
             assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
 
@@ -104,8 +88,6 @@
     @Test
     fun changeScene_toGoneWhenUnl_doesNotThrow() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-
             val currentScene by collectLastValue(underTest.currentScene)
             assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
 
@@ -120,15 +102,11 @@
 
     @Test(expected = IllegalStateException::class)
     fun changeScene_toGoneWhenStillLocked_throws() =
-        testScope.runTest {
-            underTest = kosmos.sceneInteractor
-            underTest.changeScene(Scenes.Gone, "reason")
-        }
+        testScope.runTest { underTest.changeScene(Scenes.Gone, "reason") }
 
     @Test
     fun changeScene_toGoneWhenTransitionToLockedFromGone() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val currentScene by collectLastValue(underTest.currentScene)
             val transitionTo by collectLastValue(underTest.transitioningTo)
             kosmos.sceneContainerRepository.setTransitionState(
@@ -151,39 +129,30 @@
         }
 
     @Test
+    fun changeScene_toHomeSceneFamily() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+
+            underTest.changeScene(SceneFamilies.Home, "reason")
+            runCurrent()
+
+            assertThat(currentScene).isEqualTo(kosmos.homeSceneFamilyResolver.resolvedScene.value)
+        }
+
+    @Test
     fun snapToScene_toUnknownScene_doesNothing() =
         testScope.runTest {
-            val sceneKeys =
-                listOf(
-                    Scenes.QuickSettings,
-                    Scenes.Shade,
-                    Scenes.Lockscreen,
-                    Scenes.Gone,
-                    Scenes.Communal,
-                )
-            val navigationDistances =
-                mapOf(
-                    Scenes.Gone to 0,
-                    Scenes.Lockscreen to 0,
-                    Scenes.Communal to 1,
-                    Scenes.Shade to 2,
-                    Scenes.QuickSettings to 3,
-                )
-            kosmos.sceneContainerConfig =
-                SceneContainerConfig(sceneKeys, Scenes.Lockscreen, navigationDistances)
-            underTest = kosmos.sceneInteractor
             val currentScene by collectLastValue(underTest.currentScene)
             val previousScene = currentScene
-            assertThat(previousScene).isNotEqualTo(Scenes.Bouncer)
-            underTest.snapToScene(Scenes.Bouncer, "reason")
+            val unknownScene = SceneKey("UNKNOWN")
+            assertThat(previousScene).isNotEqualTo(unknownScene)
+            underTest.snapToScene(unknownScene, "reason")
             assertThat(currentScene).isEqualTo(previousScene)
         }
 
     @Test
     fun snapToScene() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-
             val currentScene by collectLastValue(underTest.currentScene)
             assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
 
@@ -194,8 +163,6 @@
     @Test
     fun snapToScene_toGoneWhenUnl_doesNotThrow() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-
             val currentScene by collectLastValue(underTest.currentScene)
             assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
 
@@ -210,15 +177,22 @@
 
     @Test(expected = IllegalStateException::class)
     fun snapToScene_toGoneWhenStillLocked_throws() =
+        testScope.runTest { underTest.snapToScene(Scenes.Gone, "reason") }
+
+    @Test
+    fun snapToScene_toHomeSceneFamily() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-            underTest.snapToScene(Scenes.Gone, "reason")
+            val currentScene by collectLastValue(underTest.currentScene)
+
+            underTest.snapToScene(SceneFamilies.Home, "reason")
+            runCurrent()
+
+            assertThat(currentScene).isEqualTo(kosmos.homeSceneFamilyResolver.resolvedScene.value)
         }
 
     @Test
     fun sceneChanged_inDataSource() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val currentScene by collectLastValue(underTest.currentScene)
             assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
 
@@ -230,14 +204,14 @@
     @Test
     fun transitionState() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
-            val underTest = kosmos.sceneContainerRepository
+            val sceneContainerRepository = kosmos.sceneContainerRepository
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Idle(Scenes.Lockscreen)
                 )
-            underTest.setTransitionState(transitionState)
-            val reflectedTransitionState by collectLastValue(underTest.transitionState)
+            sceneContainerRepository.setTransitionState(transitionState)
+            val reflectedTransitionState by
+                collectLastValue(sceneContainerRepository.transitionState)
             assertThat(reflectedTransitionState).isEqualTo(transitionState.value)
 
             val progress = MutableStateFlow(1f)
@@ -258,7 +232,7 @@
             progress.value = 0.9f
             assertThat(reflectedTransitionState).isEqualTo(transitionState.value)
 
-            underTest.setTransitionState(null)
+            sceneContainerRepository.setTransitionState(null)
             assertThat(reflectedTransitionState)
                 .isEqualTo(
                     ObservableTransitionState.Idle(kosmos.sceneContainerConfig.initialSceneKey)
@@ -268,7 +242,6 @@
     @Test
     fun transitioningTo() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Idle(underTest.currentScene.value)
@@ -306,7 +279,6 @@
     @Test
     fun isTransitionUserInputOngoing_idle_false() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Idle(Scenes.Shade)
@@ -321,7 +293,6 @@
     @Test
     fun isTransitionUserInputOngoing_transition_true() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Transition(
@@ -343,7 +314,6 @@
     @Test
     fun isTransitionUserInputOngoing_updateMidTransition_false() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Transition(
@@ -377,7 +347,6 @@
     @Test
     fun isTransitionUserInputOngoing_updateOnIdle_false() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
                     ObservableTransitionState.Transition(
@@ -403,7 +372,6 @@
     @Test
     fun isVisible() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             val isVisible by collectLastValue(underTest.isVisible)
             assertThat(isVisible).isTrue()
 
@@ -417,7 +385,6 @@
     @Test
     fun isVisible_duringRemoteUserInteraction_forcedVisible() =
         testScope.runTest {
-            underTest = kosmos.sceneInteractor
             underTest.setVisible(false, "reason")
             val isVisible by collectLastValue(underTest.isVisible)
             assertThat(isVisible).isFalse()
@@ -428,4 +395,57 @@
 
             assertThat(isVisible).isFalse()
         }
+
+    @Test
+    fun resolveSceneFamily_home() =
+        testScope.runTest {
+            assertThat(underTest.resolveSceneFamily(SceneFamilies.Home))
+                .isEqualTo(kosmos.homeSceneFamilyResolver.resolvedScene)
+        }
+
+    @Test
+    fun resolveSceneFamily_nonFamily() =
+        testScope.runTest {
+            val resolved = underTest.resolveSceneFamily(Scenes.Gone).toList()
+            assertThat(resolved).containsExactly(Scenes.Gone).inOrder()
+        }
+
+    @Test
+    fun transitionValue_test_idle() =
+        testScope.runTest {
+            val transitionValue by collectLastValue(underTest.transitionProgress(Scenes.Gone))
+
+            kosmos.setSceneTransition(Idle(Scenes.Gone))
+            assertThat(transitionValue).isEqualTo(1f)
+
+            kosmos.setSceneTransition(Idle(Scenes.Lockscreen))
+            assertThat(transitionValue).isEqualTo(0f)
+        }
+
+    @Test
+    fun transitionValue_test_transitions() =
+        testScope.runTest {
+            val transitionValue by collectLastValue(underTest.transitionProgress(Scenes.Gone))
+            val progress = MutableStateFlow(0f)
+
+            kosmos.setSceneTransition(
+                Transition(from = Scenes.Lockscreen, to = Scenes.Gone, progress = progress)
+            )
+            assertThat(transitionValue).isEqualTo(0f)
+
+            progress.value = 0.4f
+            assertThat(transitionValue).isEqualTo(0.4f)
+
+            kosmos.setSceneTransition(
+                Transition(from = Scenes.Gone, to = Scenes.Lockscreen, progress = progress)
+            )
+            progress.value = 0.7f
+            assertThat(transitionValue).isEqualTo(0.3f)
+
+            kosmos.setSceneTransition(
+                Transition(from = Scenes.Lockscreen, to = Scenes.Shade, progress = progress)
+            )
+            progress.value = 0.9f
+            assertThat(transitionValue).isEqualTo(0f)
+        }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
new file mode 100644
index 0000000..0e90afe
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
@@ -0,0 +1,452 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.domain.startable
+
+import androidx.test.filters.SmallTest
+import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.SceneKey
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.flags.EnableSceneContainer
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
+import com.android.systemui.keyguard.domain.interactor.biometricUnlockInteractor
+import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
+import com.android.systemui.keyguard.shared.model.DozeStateModel
+import com.android.systemui.keyguard.shared.model.DozeTransitionModel
+import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.data.repository.setSceneTransition
+import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.settings.brightness.domain.interactor.brightnessMirrorShowingInteractor
+import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
+import com.android.systemui.statusbar.phone.BiometricUnlockController
+import com.android.systemui.statusbar.phone.ScrimState
+import com.android.systemui.statusbar.phone.centralSurfaces
+import com.android.systemui.statusbar.phone.dozeServiceHost
+import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import com.google.common.truth.Truth.assertWithMessage
+import kotlin.reflect.full.memberProperties
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
+import platform.test.runner.parameterized.Parameter
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+
+@SmallTest
+@RunWith(ParameterizedAndroidJunit4::class)
+@EnableSceneContainer
+class ScrimStartableTest : SysuiTestCase() {
+
+    companion object {
+        @Parameters(name = "{0}")
+        @JvmStatic
+        fun testSpecs(): List<TestSpec> {
+            return listOf(
+                TestSpec(
+                    id = 0,
+                    expectedState = ScrimState.KEYGUARD,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isAlternateBouncerVisible = true,
+                        isTransitioningAwayFromKeyguard = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 1,
+                    expectedState = null,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isAlternateBouncerVisible = true,
+                        isTransitioningToShade = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 2,
+                    expectedState = ScrimState.BOUNCER,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isCurrentSceneBouncer = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 3,
+                    expectedState = ScrimState.BOUNCER_SCRIMMED,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isCurrentSceneBouncer = true,
+                        isBouncerScrimmingNeeded = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 4,
+                    expectedState = ScrimState.BRIGHTNESS_MIRROR,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isBrightnessMirrorVisible = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 5,
+                    expectedState = ScrimState.BRIGHTNESS_MIRROR,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isCurrentSceneBouncer = true,
+                        isBiometricWakeAndUnlock = true,
+                        isBrightnessMirrorVisible = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 6,
+                    expectedState = ScrimState.SHADE_LOCKED,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isCurrentSceneShade = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 7,
+                    expectedState = ScrimState.PULSING,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isDozing = true,
+                        isPulsing = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 8,
+                    expectedState = ScrimState.OFF,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        hasPendingScreenOffCallback = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 9,
+                    expectedState = ScrimState.AOD,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isDozing = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 10,
+                    expectedState = ScrimState.GLANCEABLE_HUB,
+                    Preconditions(
+                        isIdleOnCommunal = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 11,
+                    expectedState = ScrimState.GLANCEABLE_HUB_OVER_DREAM,
+                    Preconditions(isIdleOnCommunal = true, isDreaming = true),
+                ),
+                TestSpec(
+                    id = 12,
+                    expectedState = ScrimState.UNLOCKED,
+                    Preconditions(
+                        isDeviceEntered = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 13,
+                    expectedState = ScrimState.UNLOCKED,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isBiometricWakeAndUnlock = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 14,
+                    expectedState = ScrimState.KEYGUARD,
+                    Preconditions(),
+                ),
+                TestSpec(
+                    id = 15,
+                    expectedState = ScrimState.DREAMING,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isOccluded = true,
+                        isDreaming = true,
+                    ),
+                ),
+                TestSpec(
+                    id = 16,
+                    expectedState = ScrimState.UNLOCKED,
+                    Preconditions(
+                        isOnKeyguard = true,
+                        isOccluded = true,
+                    ),
+                ),
+            )
+        }
+
+        @BeforeClass
+        @JvmStatic
+        fun setUpClass() {
+            val seenIds = mutableSetOf<Int>()
+            testSpecs().forEach { testSpec ->
+                assertWithMessage("Duplicate TestSpec id=${testSpec.id}")
+                    .that(seenIds)
+                    .doesNotContain(testSpec.id)
+                seenIds.add(testSpec.id)
+            }
+        }
+    }
+
+    private val kosmos = testKosmos()
+    private val testScope = kosmos.testScope
+
+    private val underTest = kosmos.scrimStartable
+
+    @JvmField @Parameter(0) var testSpec: TestSpec? = null
+
+    @Before
+    fun setUp() {
+        kosmos.dozeServiceHost.initialize(
+            /* centralSurfaces= */ kosmos.centralSurfaces,
+            /* statusBarKeyguardViewManager= */ kosmos.statusBarKeyguardViewManager,
+            /* notificationShadeWindowViewController= */ mock(),
+            /* ambientIndicationContainer= */ mock(),
+        )
+        underTest.start()
+    }
+
+    @Test
+    fun test() =
+        testScope.runTest {
+            val observedState by collectLastValue(underTest.scrimState)
+            val preconditions = checkNotNull(testSpec).preconditions
+            preconditions.assertValid()
+
+            setUpWith(preconditions)
+
+            runCurrent()
+
+            assertThat(observedState).isEqualTo(checkNotNull(testSpec).expectedState)
+        }
+
+    /** Sets up the state to match what's specified in the given [preconditions]. */
+    private fun TestScope.setUpWith(
+        preconditions: Preconditions,
+    ) {
+        kosmos.fakeKeyguardBouncerRepository.setAlternateVisible(
+            preconditions.isAlternateBouncerVisible
+        )
+
+        if (preconditions.isDeviceEntered) {
+            kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+            whenIdle(on = Scenes.Gone)
+        } else {
+            whenIdle(on = Scenes.Lockscreen)
+        }
+        runCurrent()
+
+        when {
+            preconditions.isTransitioningToShade ->
+                whenTransitioning(
+                    from = Scenes.Lockscreen,
+                    to = Scenes.Shade,
+                )
+            preconditions.isTransitioningAwayFromKeyguard ->
+                whenTransitioning(
+                    from = Scenes.Lockscreen,
+                    to = Scenes.Gone,
+                )
+            preconditions.isCurrentSceneShade -> whenIdle(on = Scenes.Shade)
+            preconditions.isCurrentSceneBouncer -> whenIdle(on = Scenes.Bouncer)
+            preconditions.isIdleOnCommunal -> whenIdle(on = Scenes.Communal)
+        }
+
+        kosmos.keyguardOcclusionInteractor.setWmNotifiedShowWhenLockedActivityOnTop(
+            showWhenLockedActivityOnTop = preconditions.isOccluded,
+            taskInfo = if (preconditions.isOccluded) mock() else null,
+        )
+
+        if (preconditions.isBiometricWakeAndUnlock) {
+            kosmos.biometricUnlockInteractor.setBiometricUnlockState(
+                BiometricUnlockController.MODE_WAKE_AND_UNLOCK,
+                BiometricUnlockSource.FINGERPRINT_SENSOR,
+            )
+        }
+
+        kosmos.brightnessMirrorShowingInteractor.setMirrorShowing(
+            preconditions.isBrightnessMirrorVisible
+        )
+
+        if (preconditions.hasPendingScreenOffCallback) {
+            kosmos.dozeServiceHost.prepareForGentleSleep {}
+        } else {
+            kosmos.dozeServiceHost.cancelGentleSleep()
+        }
+
+        kosmos.fakeKeyguardRepository.setIsDozing(preconditions.isDozing)
+        if (preconditions.isPulsing) {
+            kosmos.fakeKeyguardRepository.setDozeTransitionModel(
+                DozeTransitionModel(to = DozeStateModel.DOZE_PULSING)
+            )
+        }
+        kosmos.fakeKeyguardRepository.setDreaming(preconditions.isDreaming)
+
+        whenever(kosmos.statusBarKeyguardViewManager.primaryBouncerNeedsScrimming())
+            .thenReturn(preconditions.isBouncerScrimmingNeeded)
+
+        runCurrent()
+    }
+
+    /** Sets up an idle state on the given [on] scene. */
+    private fun whenIdle(on: SceneKey) {
+        kosmos.setSceneTransition(ObservableTransitionState.Idle(on))
+        kosmos.sceneInteractor.changeScene(on, "")
+    }
+
+    /** Sets up a transitioning state between the [given] and [to] scenes. */
+    private fun whenTransitioning(from: SceneKey, to: SceneKey, progress: Float = 0.5f) {
+        val currentScene = if (progress > 0.5f) to else from
+        kosmos.setSceneTransition(
+            ObservableTransitionState.Transition(
+                fromScene = from,
+                toScene = to,
+                progress = flowOf(progress),
+                currentScene = flowOf(currentScene),
+                isInitiatedByUserInput = true,
+                isUserInputOngoing = flowOf(false),
+            )
+        )
+        kosmos.sceneInteractor.changeScene(currentScene, "")
+    }
+
+    data class Preconditions(
+        /** Whether bouncer or lockscreen scene is in the nav stack. */
+        val isOnKeyguard: Boolean = false,
+        val isAlternateBouncerVisible: Boolean = false,
+        /** Whether any non-shade nor QS scene is transitioning to a shade or QS scene. */
+        val isTransitioningToShade: Boolean = false,
+        val isOccluded: Boolean = false,
+        val isCurrentSceneBouncer: Boolean = false,
+        val isBiometricWakeAndUnlock: Boolean = false,
+        /** Whether there's an active transition from lockscreen or bouncer to gone. */
+        val isTransitioningAwayFromKeyguard: Boolean = false,
+        val isBrightnessMirrorVisible: Boolean = false,
+        /** Whether the current scene is a shade or QS scene. */
+        val isCurrentSceneShade: Boolean = false,
+        val isDeviceEntered: Boolean = false,
+        val isPulsing: Boolean = false,
+        val hasPendingScreenOffCallback: Boolean = false,
+        val isDozing: Boolean = false,
+        val isIdleOnCommunal: Boolean = false,
+        val isDreaming: Boolean = false,
+        val isBouncerScrimmingNeeded: Boolean = false,
+    ) {
+        override fun toString(): String {
+            // Only include values overridden to true:
+            return buildString {
+                append("(")
+                append(
+                    Preconditions::class
+                        .memberProperties
+                        .filter { it.get(this@Preconditions) == true }
+                        .joinToString(", ") { "${it.name}=true" }
+                )
+                append(")")
+            }
+        }
+
+        fun assertValid() {
+            assertWithMessage("isOccluded cannot be true without isOnKeyguard also being true")
+                .that(!isOccluded || isOnKeyguard)
+                .isTrue()
+
+            assertWithMessage(
+                    "isCurrentSceneBouncer cannot be true without isOnKeyguard also being true"
+                )
+                .that(!isCurrentSceneBouncer || isOnKeyguard)
+                .isTrue()
+
+            assertWithMessage(
+                    "isTransitioningAwayFromKeyguard cannot be true without isOnKeyguard being true"
+                )
+                .that(!isTransitioningAwayFromKeyguard || isOnKeyguard)
+                .isTrue()
+
+            assertWithMessage(
+                    "isCurrentSceneBouncer cannot be true at the same time as isCurrentSceneShade"
+                )
+                .that(!isCurrentSceneBouncer || !isCurrentSceneShade)
+                .isTrue()
+
+            assertWithMessage(
+                    "isCurrentSceneBouncer cannot be true at the same time as isIdleOnCommunal"
+                )
+                .that(!isCurrentSceneBouncer || !isIdleOnCommunal)
+                .isTrue()
+
+            assertWithMessage(
+                    "isCurrentSceneShade cannot be true at the same time as isIdleOnCommunal"
+                )
+                .that(!isCurrentSceneShade || !isIdleOnCommunal)
+                .isTrue()
+
+            assertWithMessage("isDeviceEntered cannot be true at the same time as isOnKeyguard")
+                .that(!isDeviceEntered || !isOnKeyguard)
+                .isTrue()
+
+            assertWithMessage(
+                    "isDeviceEntered cannot be true at the same time as isCurrentSceneBouncer"
+                )
+                .that(!isDeviceEntered || !isCurrentSceneBouncer)
+                .isTrue()
+
+            assertWithMessage(
+                    "isDeviceEntered cannot be true at the same time as isAlternateBouncerVisible"
+                )
+                .that(!isDeviceEntered || !isAlternateBouncerVisible)
+                .isTrue()
+
+            assertWithMessage("isPulsing cannot be true if both isDozing is false")
+                .that(!isPulsing || isDozing)
+                .isTrue()
+        }
+    }
+
+    data class TestSpec(
+        val id: Int,
+        val expectedState: ScrimState?,
+        val preconditions: Preconditions,
+    ) {
+        override fun toString(): String {
+            return "id=$id, expected=$expectedState, preconditions=$preconditions"
+        }
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
index 468c39d..3a5ff00 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
@@ -29,6 +29,7 @@
 import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shared.recents.utilities.Utilities
@@ -36,6 +37,7 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
@@ -77,6 +79,8 @@
     @Test
     fun animateCollapseQs_fullyCollapse_entered() =
         testScope.runTest {
+            // Ensure that HomeSceneFamilyResolver is running
+            kosmos.homeSceneFamilyResolver.resolvedScene.launchIn(backgroundScope)
             val actual by collectLastValue(sceneInteractor.currentScene)
             enterDevice()
             setScene(Scenes.QuickSettings)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
index 482dc5d..f88d102 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
@@ -27,7 +27,6 @@
 import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
-import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
 import com.android.systemui.flags.EnableSceneContainer
 import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
@@ -40,7 +39,9 @@
 import com.android.systemui.qs.footerActionsViewModelFactory
 import com.android.systemui.qs.ui.adapter.FakeQSSceneAdapter
 import com.android.systemui.res.R
+import com.android.systemui.scene.domain.interactor.homeSceneFamilyResolver
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
 import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel
@@ -75,7 +76,6 @@
     private val kosmos = testKosmos()
     private val testScope = kosmos.testScope
     private val sceneInteractor by lazy { kosmos.sceneInteractor }
-    private val deviceEntryInteractor by lazy { kosmos.deviceEntryInteractor }
     private val shadeRepository by lazy { kosmos.shadeRepository }
 
     private val qsSceneAdapter = FakeQSSceneAdapter({ mock() })
@@ -91,7 +91,6 @@
         underTest =
             ShadeSceneViewModel(
                 applicationScope = testScope.backgroundScope,
-                deviceEntryInteractor = deviceEntryInteractor,
                 shadeHeaderViewModel = kosmos.shadeHeaderViewModel,
                 qsSceneAdapter = qsSceneAdapter,
                 notifications = kosmos.notificationsPlaceholderViewModel,
@@ -109,18 +108,21 @@
     fun upTransitionSceneKey_deviceLocked_lockScreen() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
             )
 
             assertThat(destinationScenes?.get(Swipe(SwipeDirection.Up))?.toScene)
-                .isEqualTo(Scenes.Lockscreen)
+                .isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
     fun upTransitionSceneKey_deviceUnlocked_gone() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
             )
@@ -129,13 +131,15 @@
             )
 
             assertThat(destinationScenes?.get(Swipe(SwipeDirection.Up))?.toScene)
-                .isEqualTo(Scenes.Gone)
+                .isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     @Test
     fun upTransitionSceneKey_authMethodSwipe_lockscreenNotDismissed_goesToLockscreen() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
@@ -143,13 +147,15 @@
             sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
 
             assertThat(destinationScenes?.get(Swipe(SwipeDirection.Up))?.toScene)
-                .isEqualTo(Scenes.Lockscreen)
+                .isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Lockscreen)
         }
 
     @Test
     fun upTransitionSceneKey_authMethodSwipe_lockscreenDismissed_goesToGone() =
         testScope.runTest {
             val destinationScenes by collectLastValue(underTest.destinationScenes)
+            val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene)
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
@@ -158,7 +164,8 @@
             sceneInteractor.changeScene(Scenes.Gone, "reason")
 
             assertThat(destinationScenes?.get(Swipe(SwipeDirection.Up))?.toScene)
-                .isEqualTo(Scenes.Gone)
+                .isEqualTo(SceneFamilies.Home)
+            assertThat(homeScene).isEqualTo(Scenes.Gone)
         }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotViewControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotViewControllerTest.kt
index 4340971..f126432 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotViewControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotViewControllerTest.kt
@@ -18,14 +18,19 @@
 
 import android.graphics.Point
 import android.graphics.Rect
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
 import android.testing.TestableLooper.RunWithLooper
 import android.view.Display
 import android.view.DisplayAdjustments
 import android.view.View
 import android.widget.FrameLayout
+import android.widget.FrameLayout.LayoutParams.UNSPECIFIED_GRAVITY
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import com.android.systemui.Flags
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.res.R
 import com.android.systemui.statusbar.FakeStatusBarStateController
 import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
 import com.android.systemui.statusbar.policy.FakeConfigurationController
@@ -291,14 +296,61 @@
         assertThat(controller.currentViewState.designatedCorner).isEqualTo(bottomRightView)
     }
 
+    @Test
+    @EnableFlags(Flags.FLAG_PRIVACY_DOT_UNFOLD_WRONG_CORNER_FIX)
+    fun initialize_newViews_fixFlagEnabled_gravityIsUpdated() {
+        val newTopLeftView = initDotView()
+        val newTopRightView = initDotView()
+        val newBottomLeftView = initDotView()
+        val newBottomRightView = initDotView()
+        setRotation(ROTATION_LANDSCAPE) // Bottom right used in landscape
+
+        val controller = createAndInitializeController()
+        // Re-init with different views, but same rotation
+        controller.initialize(
+            newTopLeftView,
+            newTopRightView,
+            newBottomLeftView,
+            newBottomRightView
+        )
+
+        assertThat((newBottomRightView.layoutParams as FrameLayout.LayoutParams).gravity)
+            .isNotEqualTo(UNSPECIFIED_GRAVITY)
+    }
+
+    @Test
+    @DisableFlags(Flags.FLAG_PRIVACY_DOT_UNFOLD_WRONG_CORNER_FIX)
+    fun initialize_newViews_fixFlagDisabled_gravityIsNotUpdated() {
+        val newTopLeftView = initDotView()
+        val newTopRightView = initDotView()
+        val newBottomLeftView = initDotView()
+        val newBottomRightView = initDotView()
+        setRotation(ROTATION_LANDSCAPE) // Bottom right used in landscape
+
+        val controller = createAndInitializeController()
+        // Re-init with different views, but same rotation
+        controller.initialize(
+            newTopLeftView,
+            newTopRightView,
+            newBottomLeftView,
+            newBottomRightView
+        )
+
+        assertThat((newBottomRightView.layoutParams as FrameLayout.LayoutParams).gravity)
+            .isEqualTo(UNSPECIFIED_GRAVITY)
+    }
+
     private fun setRotation(rotation: Int) {
         whenever(mockDisplay.rotation).thenReturn(rotation)
     }
 
-    private fun initDotView(): View =
-        View(context).also {
+    private fun initDotView(): View {
+        val privacyDot = View(context).also { it.id = R.id.privacy_dot }
+        return FrameLayout(context).also {
             it.layoutParams = FrameLayout.LayoutParams(/* width = */ 0, /* height = */ 0)
+            it.addView(privacyDot)
         }
+    }
 
     private fun enableRtl() {
         configurationController.notifyLayoutDirectionChanged(isRtl = true)
diff --git a/packages/SystemUI/res/color/screenshare_options_spinner_background.xml b/packages/SystemUI/res/color/screenshare_options_spinner_background.xml
new file mode 100644
index 0000000..922813dc
--- /dev/null
+++ b/packages/SystemUI/res/color/screenshare_options_spinner_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ 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.
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:state_hovered="false" android:state_focused="false" android:color="@android:color/transparent" />
+    <item android:state_focused="true" android:color="?androidprv:attr/materialColorOnSurface" android:alpha=".1" />
+    <item android:state_hovered="true" android:color="?androidprv:attr/materialColorOnSurface" android:alpha=".08" />
+</selector>
diff --git a/packages/SystemUI/res/drawable/audio_bars_playing.xml b/packages/SystemUI/res/drawable/audio_bars_playing.xml
new file mode 100644
index 0000000..6a6706a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/audio_bars_playing.xml
@@ -0,0 +1,457 @@
+<!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ 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.
+  -->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <target android:name="_R_G_L_4_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="283"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="283"
+                    android:valueFrom="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="717"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="467"
+                    android:propertyName="pathData"
+                    android:startOffset="1133"
+                    android:valueFrom="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="1600"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="517"
+                    android:propertyName="pathData"
+                    android:startOffset="2033"
+                    android:valueFrom="M-37.16 -13.39 C-33.94,-13.39 -31.32,-10.83 -31.2,-7.64 C-31.2,-7.57 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,6.79 -31.2,6.86 C-31.31,10.05 -33.94,12.61 -37.16,12.61 C-40.39,12.61 -43.01,10.05 -43.12,6.85 C-43.12,6.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-7.58 -43.12,-7.66 C-42.99,-10.84 -40.37,-13.39 -37.16,-13.39c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_3_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="367"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="367"
+                    android:valueFrom="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueTo="M-37.16 -9.14 C-33.94,-9.14 -31.32,-6.58 -31.2,-3.39 C-31.2,-3.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,3.79 -31.2,3.86 C-31.31,7.05 -33.94,9.61 -37.16,9.61 C-40.39,9.61 -43.01,7.05 -43.12,3.85 C-43.12,3.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-3.33 -43.12,-3.41 C-42.99,-6.59 -40.37,-9.14 -37.16,-9.14c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="800"
+                    android:valueFrom="M-37.16 -9.14 C-33.94,-9.14 -31.32,-6.58 -31.2,-3.39 C-31.2,-3.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,3.79 -31.2,3.86 C-31.31,7.05 -33.94,9.61 -37.16,9.61 C-40.39,9.61 -43.01,7.05 -43.12,3.85 C-43.12,3.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-3.33 -43.12,-3.41 C-42.99,-6.59 -40.37,-9.14 -37.16,-9.14c "
+                    android:valueTo="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="467"
+                    android:propertyName="pathData"
+                    android:startOffset="1217"
+                    android:valueFrom="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueTo="M-37.16 -9.14 C-33.94,-9.14 -31.32,-6.58 -31.2,-3.39 C-31.2,-3.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,3.79 -31.2,3.86 C-31.31,7.05 -33.94,9.61 -37.16,9.61 C-40.39,9.61 -43.01,7.05 -43.12,3.85 C-43.12,3.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-3.33 -43.12,-3.41 C-42.99,-6.59 -40.37,-9.14 -37.16,-9.14c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="450"
+                    android:propertyName="pathData"
+                    android:startOffset="1683"
+                    android:valueFrom="M-37.16 -9.14 C-33.94,-9.14 -31.32,-6.58 -31.2,-3.39 C-31.2,-3.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,3.79 -31.2,3.86 C-31.31,7.05 -33.94,9.61 -37.16,9.61 C-40.39,9.61 -43.01,7.05 -43.12,3.85 C-43.12,3.79 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-3.33 -43.12,-3.41 C-42.99,-6.59 -40.37,-9.14 -37.16,-9.14c "
+                    android:valueTo="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="2133"
+                    android:valueFrom="M-37.16 -18.51 C-33.94,-18.51 -31.32,-15.96 -31.2,-12.77 C-31.2,-12.7 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.16 -31.2,13.23 C-31.31,16.43 -33.94,18.99 -37.16,18.99 C-40.39,18.99 -43.01,16.43 -43.12,13.23 C-43.12,13.16 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-12.71 -43.12,-12.78 C-42.99,-15.97 -40.37,-18.51 -37.16,-18.51c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_2_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="450"
+                    android:propertyName="pathData"
+                    android:startOffset="433"
+                    android:valueFrom="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueTo="M-37.16 -15.76 C-33.94,-15.76 -31.32,-13.21 -31.2,-10.02 C-31.2,-9.95 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,10.54 -31.2,10.61 C-31.31,13.8 -33.94,16.36 -37.16,16.36 C-40.39,16.36 -43.01,13.8 -43.12,10.6 C-43.12,10.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-9.96 -43.12,-10.03 C-42.99,-13.22 -40.37,-15.76 -37.16,-15.76c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="883"
+                    android:valueFrom="M-37.16 -15.76 C-33.94,-15.76 -31.32,-13.21 -31.2,-10.02 C-31.2,-9.95 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,10.54 -31.2,10.61 C-31.31,13.8 -33.94,16.36 -37.16,16.36 C-40.39,16.36 -43.01,13.8 -43.12,10.6 C-43.12,10.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-9.96 -43.12,-10.03 C-42.99,-13.22 -40.37,-15.76 -37.16,-15.76c "
+                    android:valueTo="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="467"
+                    android:propertyName="pathData"
+                    android:startOffset="1300"
+                    android:valueFrom="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueTo="M-37.16 -15.76 C-33.94,-15.76 -31.32,-13.21 -31.2,-10.02 C-31.2,-9.95 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,10.54 -31.2,10.61 C-31.31,13.8 -33.94,16.36 -37.16,16.36 C-40.39,16.36 -43.01,13.8 -43.12,10.6 C-43.12,10.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-9.96 -43.12,-10.03 C-42.99,-13.22 -40.37,-15.76 -37.16,-15.76c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="1767"
+                    android:valueFrom="M-37.16 -15.76 C-33.94,-15.76 -31.32,-13.21 -31.2,-10.02 C-31.2,-9.95 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,10.54 -31.2,10.61 C-31.31,13.8 -33.94,16.36 -37.16,16.36 C-40.39,16.36 -43.01,13.8 -43.12,10.6 C-43.12,10.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-9.96 -43.12,-10.03 C-42.99,-13.22 -40.37,-15.76 -37.16,-15.76c "
+                    android:valueTo="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="350"
+                    android:propertyName="pathData"
+                    android:startOffset="2200"
+                    android:valueFrom="M-37.16 -25.01 C-33.94,-25.01 -31.32,-22.46 -31.2,-19.27 C-31.2,-19.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,19.54 -31.2,19.6 C-31.31,22.8 -33.94,25.36 -37.16,25.36 C-40.39,25.36 -43.01,22.8 -43.12,19.6 C-43.12,19.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-19.21 -43.12,-19.28 C-42.99,-22.47 -40.37,-25.01 -37.16,-25.01c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_1_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="500"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="467"
+                    android:propertyName="pathData"
+                    android:startOffset="500"
+                    android:valueFrom="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueTo="M-37.16 -19.01 C-33.94,-19.01 -31.32,-16.46 -31.2,-13.27 C-31.2,-13.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.66 -31.2,13.73 C-31.31,16.93 -33.94,19.49 -37.16,19.49 C-40.39,19.49 -43.01,16.93 -43.12,13.73 C-43.12,13.66 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-13.21 -43.12,-13.28 C-42.99,-16.47 -40.37,-19.01 -37.16,-19.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="383"
+                    android:propertyName="pathData"
+                    android:startOffset="967"
+                    android:valueFrom="M-37.16 -19.01 C-33.94,-19.01 -31.32,-16.46 -31.2,-13.27 C-31.2,-13.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.66 -31.2,13.73 C-31.31,16.93 -33.94,19.49 -37.16,19.49 C-40.39,19.49 -43.01,16.93 -43.12,13.73 C-43.12,13.66 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-13.21 -43.12,-13.28 C-42.99,-16.47 -40.37,-19.01 -37.16,-19.01c "
+                    android:valueTo="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="467"
+                    android:propertyName="pathData"
+                    android:startOffset="1350"
+                    android:valueFrom="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueTo="M-37.16 -19.01 C-33.94,-19.01 -31.32,-16.46 -31.2,-13.27 C-31.2,-13.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.66 -31.2,13.73 C-31.31,16.93 -33.94,19.49 -37.16,19.49 C-40.39,19.49 -43.01,16.93 -43.12,13.73 C-43.12,13.66 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-13.21 -43.12,-13.28 C-42.99,-16.47 -40.37,-19.01 -37.16,-19.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="1817"
+                    android:valueFrom="M-37.16 -19.01 C-33.94,-19.01 -31.32,-16.46 -31.2,-13.27 C-31.2,-13.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,13.66 -31.2,13.73 C-31.31,16.93 -33.94,19.49 -37.16,19.49 C-40.39,19.49 -43.01,16.93 -43.12,13.73 C-43.12,13.66 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-13.21 -43.12,-13.28 C-42.99,-16.47 -40.37,-19.01 -37.16,-19.01c "
+                    android:valueTo="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="300"
+                    android:propertyName="pathData"
+                    android:startOffset="2250"
+                    android:valueFrom="M-37.16 -38.14 C-33.94,-38.14 -31.32,-35.58 -31.2,-32.39 C-31.2,-32.32 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,32.04 -31.2,32.1 C-31.31,35.3 -33.94,37.86 -37.16,37.86 C-40.39,37.86 -43.01,35.3 -43.12,32.1 C-43.12,32.04 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-32.33 -43.12,-32.41 C-42.99,-35.59 -40.37,-38.14 -37.16,-38.14c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="533"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueTo="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="433"
+                    android:propertyName="pathData"
+                    android:startOffset="533"
+                    android:valueFrom="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueTo="M-37.18 -14.01 C-33.96,-14.01 -31.33,-11.46 -31.22,-8.27 C-31.22,-8.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,8.54 -31.2,8.61 C-31.31,11.8 -33.94,14.36 -37.16,14.36 C-40.39,14.36 -43.01,11.8 -43.12,8.6 C-43.12,8.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.14,-8.21 -43.13,-8.28 C-43.01,-11.47 -40.39,-14.01 -37.18,-14.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="967"
+                    android:valueFrom="M-37.18 -14.01 C-33.96,-14.01 -31.33,-11.46 -31.22,-8.27 C-31.22,-8.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,8.54 -31.2,8.61 C-31.31,11.8 -33.94,14.36 -37.16,14.36 C-40.39,14.36 -43.01,11.8 -43.12,8.6 C-43.12,8.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.14,-8.21 -43.13,-8.28 C-43.01,-11.47 -40.39,-14.01 -37.18,-14.01c "
+                    android:valueTo="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="483"
+                    android:propertyName="pathData"
+                    android:startOffset="1383"
+                    android:valueFrom="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueTo="M-37.18 -14.01 C-33.96,-14.01 -31.33,-11.46 -31.22,-8.27 C-31.22,-8.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,8.54 -31.2,8.61 C-31.31,11.8 -33.94,14.36 -37.16,14.36 C-40.39,14.36 -43.01,11.8 -43.12,8.6 C-43.12,8.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.14,-8.21 -43.13,-8.28 C-43.01,-11.47 -40.39,-14.01 -37.18,-14.01c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="417"
+                    android:propertyName="pathData"
+                    android:startOffset="1867"
+                    android:valueFrom="M-37.18 -14.01 C-33.96,-14.01 -31.33,-11.46 -31.22,-8.27 C-31.22,-8.2 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,8.54 -31.2,8.61 C-31.31,11.8 -33.94,14.36 -37.16,14.36 C-40.39,14.36 -43.01,11.8 -43.12,8.6 C-43.12,8.54 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.14,-8.21 -43.13,-8.28 C-43.01,-11.47 -40.39,-14.01 -37.18,-14.01c "
+                    android:valueTo="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="267"
+                    android:propertyName="pathData"
+                    android:startOffset="2283"
+                    android:valueFrom="M-37.16 -22.64 C-33.94,-22.64 -31.32,-20.08 -31.2,-16.89 C-31.2,-16.82 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,17.41 -31.2,17.48 C-31.31,20.68 -33.94,23.24 -37.16,23.24 C-40.39,23.24 -43.01,20.68 -43.12,17.48 C-43.12,17.41 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-16.83 -43.12,-16.91 C-42.99,-20.09 -40.37,-22.64 -37.16,-22.64c "
+                    android:valueTo="M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="2567"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="168dp"
+            android:height="168dp"
+            android:viewportHeight="168"
+            android:viewportWidth="168">
+            <group android:name="_R_G">
+                <group
+                    android:name="_R_G_L_4_G"
+                    android:translateX="84.411"
+                    android:translateY="83.911">
+                    <path
+                        android:name="_R_G_L_4_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#ffffff"
+                        android:fillType="nonZero"
+                        android:pathData=" M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c " />
+                </group>
+                <group
+                    android:name="_R_G_L_3_G"
+                    android:translateX="121.161"
+                    android:translateY="83.911">
+                    <path
+                        android:name="_R_G_L_3_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#ffffff"
+                        android:fillType="nonZero"
+                        android:pathData=" M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c " />
+                </group>
+                <group
+                    android:name="_R_G_L_2_G"
+                    android:translateX="102.911"
+                    android:translateY="83.911">
+                    <path
+                        android:name="_R_G_L_2_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#ffffff"
+                        android:fillType="nonZero"
+                        android:pathData=" M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c " />
+                </group>
+                <group
+                    android:name="_R_G_L_1_G"
+                    android:translateX="139.661"
+                    android:translateY="83.911">
+                    <path
+                        android:name="_R_G_L_1_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#ffffff"
+                        android:fillType="nonZero"
+                        android:pathData=" M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c " />
+                </group>
+                <group
+                    android:name="_R_G_L_0_G"
+                    android:translateX="157.911"
+                    android:translateY="83.911">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#ffffff"
+                        android:fillType="nonZero"
+                        android:pathData=" M-37.16 -5.87 C-33.94,-5.87 -31.32,-3.32 -31.2,-0.13 C-31.2,-0.06 -31.2,0.02 -31.2,0.09 C-31.2,0.16 -31.2,0.23 -31.2,0.29 C-31.31,3.49 -33.94,6.05 -37.16,6.05 C-40.39,6.05 -43.01,3.49 -43.12,0.29 C-43.12,0.23 -43.12,0.16 -43.12,0.09 C-43.12,0.01 -43.12,-0.07 -43.12,-0.15 C-42.99,-3.33 -40.37,-5.87 -37.16,-5.87c " />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/brightness_mirror_background.xml b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
index b5c181b..c4225f1 100644
--- a/packages/SystemUI/res/drawable/brightness_mirror_background.xml
+++ b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
@@ -14,7 +14,15 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="?attr/underSurface" />
-    <corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
-</shape>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:left="@dimen/rounded_slider_boundary_offset"
+        android:right="@dimen/rounded_slider_boundary_offset"
+        android:top="@dimen/rounded_slider_boundary_offset"
+        android:bottom="@dimen/rounded_slider_boundary_offset">
+        <shape>
+            <solid android:color="?attr/underSurface" />
+            <corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
+        </shape>
+    </item>
+</layer-list>
diff --git a/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml b/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml
new file mode 100644
index 0000000..22406ec
--- /dev/null
+++ b/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ 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.
+  -->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:state_focused="true">
+        <inset android:inset="-5dp">
+            <shape>
+                <corners android:radius="16dp"/>
+                <stroke android:width="3dp" android:color="?androidprv:attr/materialColorSecondaryFixed"/>
+            </shape>
+        </inset>
+    </item>
+</selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/screenshare_options_spinner_background.xml b/packages/SystemUI/res/drawable/screenshare_options_spinner_background.xml
index f7c04b5..429a801 100644
--- a/packages/SystemUI/res/drawable/screenshare_options_spinner_background.xml
+++ b/packages/SystemUI/res/drawable/screenshare_options_spinner_background.xml
@@ -22,7 +22,7 @@
             <stroke
                 android:width="1dp"
                 android:color="?androidprv:attr/textColorTertiary" />
-            <solid android:color="@android:color/transparent"/>
+            <solid android:color="@color/screenshare_options_spinner_background"/>
         </shape>
     </item>
     <item
diff --git a/packages/SystemUI/res/layout-land/volume_dialog.xml b/packages/SystemUI/res/layout-land/volume_dialog.xml
index 5ce2601..08edf59 100644
--- a/packages/SystemUI/res/layout-land/volume_dialog.xml
+++ b/packages/SystemUI/res/layout-land/volume_dialog.xml
@@ -13,9 +13,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:sysui="http://schemas.android.com/apk/res-auto"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:id="@+id/volume_dialog_container"
     android:layout_width="wrap_content"
@@ -97,16 +95,18 @@
                     android:paddingLeft="@dimen/volume_dialog_ringer_rows_padding"
                     android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
                     android:paddingRight="@dimen/volume_dialog_ringer_rows_padding">
+
                     <com.android.keyguard.AlphaOptimizedImageButton
                         android:id="@+id/settings"
-                        android:src="@drawable/horizontal_ellipsis"
                         android:layout_width="@dimen/volume_dialog_tap_target_size"
                         android:layout_height="@dimen/volume_dialog_tap_target_size"
                         android:layout_gravity="center"
-                        android:contentDescription="@string/accessibility_volume_settings"
                         android:background="@drawable/ripple_drawable_20dp"
-                        android:tint="?androidprv:attr/colorAccent"
-                        android:soundEffectsEnabled="false" />
+                        android:contentDescription="@string/accessibility_volume_settings"
+                        android:scaleType="centerInside"
+                        android:soundEffectsEnabled="false"
+                        android:src="@drawable/horizontal_ellipsis"
+                        android:tint="?androidprv:attr/colorAccent" />
                 </FrameLayout>
             </LinearLayout>
 
diff --git a/packages/SystemUI/res/layout/auth_container_view.xml b/packages/SystemUI/res/layout/auth_container_view.xml
index 2a1ce1f..cc5a27d 100644
--- a/packages/SystemUI/res/layout/auth_container_view.xml
+++ b/packages/SystemUI/res/layout/auth_container_view.xml
@@ -28,9 +28,9 @@
 
     <View
         android:id="@+id/panel"
+        style="@style/AuthNonCredentialPanelStyle"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="?androidprv:attr/materialColorSurfaceContainer"
         android:elevation="@dimen/biometric_dialog_elevation"/>
 
     <ScrollView
diff --git a/packages/SystemUI/res/layout/biometric_prompt_button_bar.xml b/packages/SystemUI/res/layout/biometric_prompt_button_bar.xml
index 9f4ad0e..ce205ca 100644
--- a/packages/SystemUI/res/layout/biometric_prompt_button_bar.xml
+++ b/packages/SystemUI/res/layout/biometric_prompt_button_bar.xml
@@ -29,10 +29,11 @@
         android:layout_gravity="center_vertical"
         android:layout_marginStart="24dp"
         android:layout_marginBottom="8dp"
-        android:ellipsize="end"
-        android:maxLines="2"
         android:visibility="invisible"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="@id/button_center_guideline"
+        app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent" />
 
     <!-- Cancel Button, replaces negative button when biometric is accepted -->
@@ -46,7 +47,10 @@
         android:layout_marginBottom="8dp"
         android:text="@string/cancel"
         android:visibility="invisible"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="@id/button_center_guideline"
+        app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent" />
 
     <!-- "Use Credential" Button, replaces if device credential is allowed -->
@@ -59,7 +63,10 @@
         android:layout_marginStart="24dp"
         android:layout_marginBottom="8dp"
         android:visibility="invisible"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="@id/button_center_guideline"
+        app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent" />
 
     <!-- Positive Button -->
@@ -71,12 +78,13 @@
         android:layout_gravity="center_vertical"
         android:layout_marginEnd="24dp"
         android:layout_marginBottom="8dp"
-        android:ellipsize="end"
-        android:maxLines="2"
         android:text="@string/biometric_dialog_confirm"
         android:visibility="invisible"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintStart_toStartOf="@id/button_center_guideline" />
 
     <!-- Try Again Button -->
     <Button
@@ -87,11 +95,19 @@
         android:layout_gravity="center_vertical"
         android:layout_marginEnd="24dp"
         android:layout_marginBottom="8dp"
-        android:ellipsize="end"
-        android:maxLines="2"
         android:text="@string/biometric_dialog_try_again"
         android:visibility="invisible"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintStart_toStartOf="@id/button_center_guideline" />
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/button_center_guideline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_percent="0.5" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/layout/biometric_prompt_one_pane_layout.xml b/packages/SystemUI/res/layout/biometric_prompt_one_pane_layout.xml
index 8d50bfa..4670f34 100644
--- a/packages/SystemUI/res/layout/biometric_prompt_one_pane_layout.xml
+++ b/packages/SystemUI/res/layout/biometric_prompt_one_pane_layout.xml
@@ -27,7 +27,6 @@
         app:layout_constraintTop_toTopOf="@id/topBarrier"
         app:layout_constraintWidth_max="@dimen/biometric_prompt_panel_max_width" />
 
-
     <include
         android:id="@+id/button_bar"
         layout="@layout/biometric_prompt_button_bar"
@@ -148,9 +147,10 @@
     <TextView
         android:id="@+id/indicator"
         style="@style/TextAppearance.AuthCredential.Indicator"
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="24dp"
+        android:layout_marginHorizontal="24dp"
         android:accessibilityLiveRegion="assertive"
         android:fadingEdge="horizontal"
         android:gravity="center_horizontal"
diff --git a/packages/SystemUI/res/layout/biometric_prompt_two_pane_layout.xml b/packages/SystemUI/res/layout/biometric_prompt_two_pane_layout.xml
index 01b9f7e..c599f9e 100644
--- a/packages/SystemUI/res/layout/biometric_prompt_two_pane_layout.xml
+++ b/packages/SystemUI/res/layout/biometric_prompt_two_pane_layout.xml
@@ -179,11 +179,13 @@
         android:fadingEdge="horizontal"
         android:gravity="center_horizontal"
         android:scrollHorizontally="true"
+        android:maxLines="2"
         app:layout_constraintBottom_toTopOf="@+id/button_bar"
         app:layout_constraintEnd_toEndOf="@+id/biometric_icon"
         app:layout_constraintStart_toStartOf="@+id/biometric_icon"
         app:layout_constraintTop_toBottomOf="@+id/biometric_icon"
-        app:layout_constraintVertical_bias="0.0" />
+        app:layout_constraintVertical_bias="0.0"
+        app:layout_constraintWidth_max="@dimen/biometric_dialog_indicator_max_width" />
 
     <include
         android:id="@+id/button_bar"
diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
index e95c6a7..62ceb07 100644
--- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
+++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
@@ -17,19 +17,20 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/brightness_slider"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/brightness_mirror_height"
+        android:layout_height="wrap_content"
         android:layout_gravity="center"
+        android:clipChildren="false"
+        android:clipToPadding="false"
         android:contentDescription="@string/accessibility_brightness"
         android:importantForAccessibility="no" >
 
         <com.android.systemui.settings.brightness.ToggleSeekBar
             android:id="@+id/slider"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="@dimen/brightness_mirror_height"
             android:layout_gravity="center_vertical"
             android:minHeight="48dp"
             android:thumb="@null"
-            android:background="@null"
             android:paddingStart="0dp"
             android:paddingEnd="0dp"
             android:progressDrawable="@drawable/brightness_progress_drawable"
diff --git a/packages/SystemUI/res/layout/screen_record_options.xml b/packages/SystemUI/res/layout/screen_record_options.xml
index fa345c9..4b5cdb5 100644
--- a/packages/SystemUI/res/layout/screen_record_options.xml
+++ b/packages/SystemUI/res/layout/screen_record_options.xml
@@ -40,22 +40,16 @@
             android:popupBackground="@drawable/screenrecord_spinner_background"
             android:dropDownWidth="274dp"
             android:importantForAccessibility="yes"/>
-        <FrameLayout
-            android:id="@+id/screenrecord_audio_switch_container"
+
+        <Switch
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-            <Switch
-                android:layout_width="wrap_content"
-                android:minWidth="48dp"
-                android:layout_height="48dp"
-                android:layout_gravity="end"
-                android:focusable="false"
-                android:clickable="false"
-                android:id="@+id/screenrecord_audio_switch"
-                android:contentDescription="@string/screenrecord_audio_label"
-                style="@style/ScreenRecord.Switch"
-                android:importantForAccessibility="yes"/>
-        </FrameLayout>
+            android:minWidth="48dp"
+            android:layout_height="48dp"
+            android:layout_gravity="end"
+            android:id="@+id/screenrecord_audio_switch"
+            android:contentDescription="@string/screenrecord_audio_label"
+            style="@style/ScreenRecord.Switch"
+            android:importantForAccessibility="yes" />
     </LinearLayout>
     <LinearLayout
         android:id="@+id/show_taps"
@@ -81,20 +75,14 @@
             android:fontFamily="@*android:string/config_bodyFontFamily"
             android:textColor="?android:attr/textColorPrimary"
             android:contentDescription="@string/screenrecord_taps_label"/>
-        <FrameLayout
-            android:id="@+id/screenrecord_taps_switch_container"
+
+        <Switch
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-            <Switch
-                android:layout_width="wrap_content"
-                android:minWidth="48dp"
-                android:layout_height="48dp"
-                android:focusable="false"
-                android:clickable="false"
-                android:id="@+id/screenrecord_taps_switch"
-                android:contentDescription="@string/screenrecord_taps_label"
-                style="@style/ScreenRecord.Switch"
-                android:importantForAccessibility="yes"/>
-        </FrameLayout>
+            android:minWidth="48dp"
+            android:layout_height="48dp"
+            android:id="@+id/screenrecord_taps_switch"
+            android:contentDescription="@string/screenrecord_taps_label"
+            style="@style/ScreenRecord.Switch"
+            android:importantForAccessibility="yes" />
     </LinearLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/screenshot_shelf.xml b/packages/SystemUI/res/layout/screenshot_shelf.xml
index f3f472b..84ab0f1 100644
--- a/packages/SystemUI/res/layout/screenshot_shelf.xml
+++ b/packages/SystemUI/res/layout/screenshot_shelf.xml
@@ -18,6 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:theme="@style/FloatingOverlay"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:clipChildren="false"
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 39a1f1f..ad56216 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -13,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:sysui="http://schemas.android.com/apk/res-auto"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:id="@+id/volume_dialog_container"
     android:layout_width="wrap_content"
@@ -96,16 +94,18 @@
                     android:paddingLeft="@dimen/volume_dialog_ringer_rows_padding"
                     android:paddingBottom="@dimen/volume_dialog_ringer_rows_padding"
                     android:paddingRight="@dimen/volume_dialog_ringer_rows_padding">
+
                     <com.android.keyguard.AlphaOptimizedImageButton
                         android:id="@+id/settings"
-                        android:src="@drawable/horizontal_ellipsis"
                         android:layout_width="@dimen/volume_dialog_tap_target_size"
                         android:layout_height="@dimen/volume_dialog_tap_target_size"
                         android:layout_gravity="center"
-                        android:contentDescription="@string/accessibility_volume_settings"
                         android:background="@drawable/ripple_drawable_20dp"
-                        android:tint="?androidprv:attr/colorAccent"
-                        android:soundEffectsEnabled="false" />
+                        android:contentDescription="@string/accessibility_volume_settings"
+                        android:scaleType="centerInside"
+                        android:soundEffectsEnabled="false"
+                        android:src="@drawable/horizontal_ellipsis"
+                        android:tint="?androidprv:attr/colorAccent" />
                 </FrameLayout>
             </LinearLayout>
 
diff --git a/packages/SystemUI/res/raw/face_dialog_authenticating.json b/packages/SystemUI/res/raw/face_dialog_authenticating.json
new file mode 100644
index 0000000..4e25e6d
--- /dev/null
+++ b/packages/SystemUI/res/raw/face_dialog_authenticating.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":60,"ip":0,"op":61,"w":64,"h":64,"nm":"face_scanning 3","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32,32,0],"ix":2,"l":2},"a":{"a":0,"k":[27.25,27.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[95,95,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.244,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.244,0]],"v":[[-2.249,0.001],[0.001,2.251],[2.249,0.001],[0.001,-2.251]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.1,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.242,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.242,0]],"v":[[-2.249,0],[0.001,2.25],[2.249,0],[0.001,-2.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.4,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.814,3.523],[-2.814,3.523],[-2.814,1.363],[0.652,1.363],[0.652,-3.523],[2.814,-3.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.791,28.479],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.154,0.15],[0,0],[0.117,-0.095],[0,0],[0.228,-0.121],[0.358,-0.103],[0.922,0.261],[0.3,0.16],[0.24,0.185],[0.14,0.139],[0.178,0.261],[0.143,0.451],[0,0],[0,0.494],[0,0],[-0.214,-0.676],[-0.392,-0.572],[-0.323,-0.317],[-0.228,-0.177],[-0.333,-0.179],[-0.503,-0.145],[-0.662,0],[-0.653,0.184],[-0.437,0.233],[-0.336,0.258],[0,0],[0,0]],"o":[[0,0],[-0.107,0.106],[0,0],[-0.24,0.185],[-0.301,0.16],[-0.92,0.261],[-0.357,-0.103],[-0.228,-0.121],[-0.158,-0.122],[-0.225,-0.221],[-0.272,-0.393],[0,0],[-0.147,-0.466],[0,0],[0,0.716],[0.206,0.656],[0.256,0.372],[0.204,0.201],[0.336,0.258],[0.436,0.233],[0.655,0.184],[0.662,0],[0.503,-0.145],[0.332,-0.179],[0,0],[0,0],[0.165,-0.136]],"v":[[6.094,1.465],[4.579,-0.076],[4.242,0.225],[4.124,0.315],[3.43,0.771],[2.439,1.165],[-0.342,1.165],[-1.331,0.771],[-2.027,0.315],[-2.48,-0.075],[-3.087,-0.801],[-3.712,-2.075],[-3.712,-2.075],[-3.934,-3.523],[-6.094,-3.523],[-5.771,-1.424],[-4.868,0.424],[-3.995,1.465],[-3.344,2.027],[-2.35,2.676],[-0.934,3.243],[1.049,3.523],[3.031,3.243],[4.449,2.676],[5.441,2.027],[5.482,1.997],[5.615,1.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.201,40.411],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.398,0],[0,-13.4],[13.398,0],[0,13.4]],"o":[[13.398,0],[0,13.4],[-13.398,0],[0,-13.4]],"v":[[0,-24.3],[24.3,0],[0,24.3],[-24.3,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[14.904,0],[0,-14.904],[-14.904,0],[0,14.904]],"o":[[-14.904,0],[0,14.904],[14.904,0],[0,-14.904]],"v":[[0,-27],[-27,0],[0,27],[27,0]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,27.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1200,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/packages/SystemUI/res/raw/widget.rec b/packages/SystemUI/res/raw/widget.rec
deleted file mode 100644
index a38b23b..0000000
--- a/packages/SystemUI/res/raw/widget.rec
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 63aa97f..c25d8cb 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Watter deel van jou toestelervaring is geraak?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Kies soort kwessie"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Skermopname"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Werkverrigting"</item>
-    <item msgid="1627504621139124393">"Gebruikerkoppelvlak"</item>
-    <item msgid="8309220355268900335">"Battery"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Eenhandmodus"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Gehoortoestelle"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Gehoortoestelle"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Bind nuwe toestel saam"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klik om nuwe toestel saam te bind"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Kon nie voorafstelling opdateer nie"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voorafstelling"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Intydse Onderskrifte"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblokkeer toestelmikrofoon?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Deblokkeer toestelkamera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Deblokkeer toestelkamera en mikrofoon?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Knoppie <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Oppyl"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Afpyl"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Linkspyl"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Regspyl"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Middel"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Spasie"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"gevou"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"oopgevou"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batterykrag oor"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Koppel jou stilus aan ’n laaier"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stilus se battery is amper pap"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Onlangs gebruik deur <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Word gebruik deur <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Onlangs gebruik deur <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Stelsel"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Verrigting van veelvuldige take"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Invoer"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Appkortpaaie"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toeganklikheid"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Kortpadsleutels"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Soekkortpaaie"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Vou ikoon in"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Vou ikoon uit"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Sleutelbordlig"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Vlak %1$d van %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Huiskontroles"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 58940bb..ed6a3e1 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"የትኛው የመሣሪያዎ ተሞክሮ ክፍል ተጎድቷል?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"የችግሩን አይነት ይምረጡ"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"የማያ መቅረጫ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"አፈጻጸም"</item>
-    <item msgid="1627504621139124393">"የተጠቃሚ በይነገፅ"</item>
-    <item msgid="8309220355268900335">"ባትሪ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"የአንድ እጅ ሁነታ"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"የመስሚያ መሣሪያዎች"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"የመስማት ችሎታ መሣሪያ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"አዲስ መሣሪያ ያጣምሩ"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"አዲስ መሣሪያ ለማጣመር ጠቅ ያድርጉ"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ቅድመ-ቅምጥን ማዘመን አልተቻለም"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ቅድመ-ቅምጥ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"የቀጥታ ስርጭት መግለጫ ጽሁፍ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"የመሣሪያ ማይክሮፎን እገዳ ይነሳ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"የመሣሪያ ካሜራ እገዳ ይነሳ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"የመሣሪያ ካሜራ እና ማይክሮፎን እገዳ ይነሳ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"አዝራር <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"መነሻ"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ተመለስ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"የላይ ቀስት"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"የታች ቀስት"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"የግራ ቀስት"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"የቀኝ ቀስት"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"መሃል"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"ክፍተት"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"አስገባ"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"የታጠፈ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"የተዘረጋ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ባትሪ ይቀራል"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ብሮስፌዎን ከኃይል መሙያ ጋር ያገናኙ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"የብሮስፌ ባትሪ ዝቅተኛ ነው"</string>
     <string name="video_camera" msgid="7654002575156149298">"የቪድዮ ካሜራ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"በቅርብ ጊዜ በ<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ጥቅም ላይ ውሏል"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"በ<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ጥቅም ላይ እየዋለ ነው"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"በቅርብ ጊዜ በ<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ጥቅም ላይ ውሏል"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ሥርዓት"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ብዙ ተግባራትን በተመሳሳይ ጊዜ ማከናወን"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ግብዓት"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"የመተግበሪያ አቋራጮች"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ተደራሽነት"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"የቁልፍ ሰሌዳ አቋራጮች"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"የፍለጋ አቋራጮች"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"መሰብሰቢያ አዶ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"መዘርጊያ አዶ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"የቁልፍ ሰሌዳ የጀርባ ብርሃን"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"ደረጃ %1$d ከ %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"የቤት ውስጥ ቁጥጥሮች"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index b74b6cc..1502765 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ما هو الجانب الذي تأثّر في تجربة استخدام الجهاز؟"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"اختيار نوع المشكلة"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"تسجيل الشاشة"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"الأداء"</item>
-    <item msgid="1627504621139124393">"واجهة المستخدم"</item>
-    <item msgid="8309220355268900335">"البطارية"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"الأداء"</string>
+    <string name="user_interface" msgid="3712869377953950887">"واجهة المستخدم"</string>
+    <string name="thermal" msgid="6758074791325414831">"الأداء الحراري"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"وضع \"التصفح بيد واحدة\""</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"سماعات الأذن الطبية"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"سماعات الأذن الطبية"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"إقران جهاز جديد"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"انقر لإقران جهاز جديد"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"تعذَّر تعديل الإعداد المسبق"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"الإعدادات المسبقة"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"النسخ النصي التلقائي"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"هل تريد إزالة حظر ميكروفون الجهاز؟"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"هل تريد إزالة حظر كاميرا الجهاز؟"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"هل تريد إزالة حظر الكاميرا والميكروفون؟"</string>
@@ -615,7 +617,7 @@
     <string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‏%1$s. انقر للتجاهل. قد يتم تجاهل خدمات \"سهولة الاستخدام\"."</string>
     <string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"‏%1$s. انقر للتعيين على الاهتزاز."</string>
     <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"‏%1$s. انقر لكتم الصوت."</string>
-    <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"التحكُّم في مستوى الضجيج"</string>
+    <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"التحكُّم في مستوى الضوضاء"</string>
     <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"الصوت المكاني"</string>
     <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"غير مفعّل"</string>
     <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"تفعيل"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"الزر <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"سهم متّجه للأعلى"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"سهم متّجه للأسفل"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"سهم متّجه لليسار"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"سهم متّجه لليمين"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"وسط"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"مسافة"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"مطوي"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"غير مطوي"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"‫%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"النسبة المئوية المتبقية من شحن البطارية: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"مستوى شحن بطارية قلم الشاشة: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"عليك توصيل قلم الشاشة بشاحن."</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"بطارية قلم الشاشة منخفضة"</string>
     <string name="video_camera" msgid="7654002575156149298">"كاميرا فيديو"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"تم الاستخدام مؤخرًا في <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"قيد الاستخدام في <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"تم الاستخدام مؤخرًا في <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"النظام"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"تعدُّد المهام"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"الإدخال"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"اختصارات التطبيقات"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"تسهيل الاستخدام"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"اختصارات لوحة المفاتيح"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"اختصارات طلبات البحث"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"رمز التصغير"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"رمز التوسيع"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"الإضاءة الخلفية للوحة المفاتيح"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‏مستوى الإضاءة: %1$d من %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"إدارة المنزل آليًّا"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index e25a19e..00d673e 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"আপোনাৰ ডিভাইচৰ অভিজ্ঞতাৰ কোনটো অংশ প্ৰভাৱিত হৈছিল?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"সমস্যাৰ প্ৰকাৰ বাছনি কৰক"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"স্ক্ৰীন ৰেকৰ্ড"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"কাৰ্যদক্ষতা"</item>
-    <item msgid="1627504621139124393">"ব্যৱহাৰকাৰীৰ ইণ্টাৰফে’চ"</item>
-    <item msgid="8309220355268900335">"বেটাৰী"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"পাৰদৰ্শিতা"</string>
+    <string name="user_interface" msgid="3712869377953950887">"ব্যৱহাৰকাৰীৰ ইণ্টাৰফে’চ"</string>
+    <string name="thermal" msgid="6758074791325414831">"থাৰ্মেল"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"এখন হাতেৰে ব্যৱহাৰ কৰা ম’ড"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"শুনাৰ ডিভাইচ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"শুনাৰ ডিভাইচ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"নতুন ডিভাইচ পেয়াৰ কৰক"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"নতুন ডিভাইচ পেয়াৰ কৰিবলৈ ক্লিক কৰক"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"প্ৰিছেট আপডে’ট কৰিব পৰা নগ’ল"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"প্ৰিছেট"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"লাইভ কেপশ্বন"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ডিভাইচৰ মাইক্ৰ\'ফ\'ন অৱৰোধৰ পৰা আঁতৰাবনে?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ডিভাইচৰ কেমেৰা অৱৰোধৰ পৰা আঁতৰাবনে?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ডিভাইচৰ কেমেৰা আৰু মাইক্ৰ\'ফ\'ন অৱৰোধৰ পৰা আঁতৰাবনে?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> বুটাম"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"হ\'ম"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"উভতি যাওক"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ওপৰলৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"তললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"বাওঁফাললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"সোঁফাললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"স্ক্ৰীনৰ মাজত"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"স্পেচ"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"এণ্টাৰ"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফ’ল্ড কৰা"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"আনফ’ল্ড কৰা"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> বেটাৰী বাকী আছে"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"ষ্টাইলাছৰ বেটাৰী <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"আপোনাৰ ষ্টাইলাছ এটা চাৰ্জাৰৰ সৈতে সংযোগ কৰক"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ষ্টাইলাছৰ বেটাৰী কম আছে"</string>
     <string name="video_camera" msgid="7654002575156149298">"ভিডিঅ’ কেমেৰা"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"শেহতীয়াকৈ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)এ ব্যৱহাৰ কৰিছে"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)এ ব্যৱহাৰ কৰি আছে"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"শেহতীয়াকৈ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)এ ব্যৱহাৰ কৰিছে"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ছিষ্টেম"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"মাল্টিটাস্কিং"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ইনপুট"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"এপ্ শ্বৰ্টকাটসমূহ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"সাধ্য সুবিধা"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"কীব’ৰ্ডৰ শ্বৰ্টকাট"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"সন্ধানৰ শ্বৰ্টকাট"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"সংকোচন কৰাৰ চিহ্ন"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"বিস্তাৰ কৰাৰ চিহ্ন"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"কীব’ৰ্ডৰ বেকলাইট"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dৰ %1$d স্তৰ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ঘৰৰ সা-সৰঞ্জামৰ নিয়ন্ত্ৰণ"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 29fb86e..b3c0058 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Cihaz istifadəsinə necə təsir etdi?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Problem növü seçin"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekran qeydəalma"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performans"</item>
-    <item msgid="1627504621139124393">"İstifadəçi interfeysi"</item>
-    <item msgid="8309220355268900335">"Batareya"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Birəlli rejim"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Eşitmə cihazları"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Eşitmə cihazları"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Yeni cihaz birləşdirin"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Yeni cihaz birləşdirmək üçün klikləyin"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Hazır ayar güncəllənmədi"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Hazır Ayar"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Avtomatik subtitrlər"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Cihaz mikrofonu blokdan çıxarılsın?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Cihaz kamerası blokdan çıxarılsın?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Cihaz kamerası və mikrofonu blokdan çıxarılsın?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Düymə <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Əsas səhifə"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Geri"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Yuxarı ox"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Aşağı ox"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Sol ox"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Sağ ox"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Mərkəz"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Boşluq"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Daxil olun"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"qatlanmış"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"açıq"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> enerji qalıb"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Qələmi adapterə qoşun"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Qələm enerjisi azdır"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Bu yaxınlarda <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) istifadə edib"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) istifadə edir"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Bu yaxınlarda <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) istifadə edib"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Çoxsaylı tapşırıq icrası"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Daxiletmə"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Tətbiq qısayolları"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Xüsusi imkanlar"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatura qısayolları"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Axtarış qısayolları"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"İkonanı yığcamlaşdırın"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"İkonanı genişləndirin"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatura işığı"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Səviyyə %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Ev nizamlayıcıları"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index f7c252e..22afb40 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Na koji deo doživljaja na uređaju je ovo uticalo?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Izaberite tip problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Snimanje ekrana"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Učinak"</item>
-    <item msgid="1627504621139124393">"Korisnički interfejs"</item>
-    <item msgid="8309220355268900335">"Baterija"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performanse"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Korisnički interfejs"</string>
+    <string name="thermal" msgid="6758074791325414831">"Termalna kamera"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jednom rukom"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Slušni aparati"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Slušni aparati"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Upari novi uređaj"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknite da biste uparili nov uređaj"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje zadatih podešavanja nije uspelo"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Unapred određena podešavanja"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Titl uživo"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Želite da odblokirate mikrofon uređaja?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Želite da odblokirate kameru uređaja?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Želite da odblokirate kameru i mikrofon uređaja?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Dugme <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Taster Početna"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Taster Nazad"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica nagore"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica nadole"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica nalevo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica nadesno"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Taster sa centralnom strelicom"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Razmak"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zatvoreno"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otvoreno"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo je još<xliff:g id="PERCENTAGE">%s</xliff:g> baterije"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Baterija pisaljke je na <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Povežite pisaljku sa punjačem"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Nizak nivo baterije pisaljke"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video kamera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedavno koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Koriste <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedavno koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Obavljanje više zadataka istovremeno"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečice za aplikacije"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tasterske prečice"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečice pretrage"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za skupljanje"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za proširivanje"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvetljenje tastature"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrole za dom"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 6008438..4fe7c5a 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"З чым была звязана праблема, якая вам сустрэлася?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Выберыце тып праблемы"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Запіс экрана"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Прадукцыйнасць"</item>
-    <item msgid="1627504621139124393">"Карыстальніцкі інтэрфейс"</item>
-    <item msgid="8309220355268900335">"Акумулятар"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Рэжым кіравання адной рукой"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слыхавыя апараты"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слыхавыя апараты"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Спалучыць новую прыладу"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Націсніце, каб спалучыць новую прыладу"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Не ўдалося абнавіць набор налад"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набор налад"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Аўтаматычныя субцітры"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Разблакіраваць мікрафон прылады?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Разблакіраваць камеру прылады?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Разблакіраваць камеру і мікрафон прылады?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрэлка ўверх"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрэлка ўніз"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрэлка ўлева"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрэлка ўправа"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Цэнтр"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Прабел"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"складзена"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"раскладзена"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Засталося зараду: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Падключыце пяро да зараднай прылады"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Нізкі ўзровень зараду пяра"</string>
     <string name="video_camera" msgid="7654002575156149298">"Відэакамера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Нядаўна выкарыстоўваўся праграмай \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Зараз выкарыстоўваецца праграмай \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Нядаўна выкарыстоўваўся праграмай \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Сістэма"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Шматзадачнасць"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Увод"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ярлыкі праграм"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Спецыяльныя магчымасці"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Спалучэнні клавіш"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Пошук спалучэнняў клавіш"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок \"Згарнуць\""</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок \"Разгарнуць\""</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Падсветка клавіятуры"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Узровень %1$d з %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Кіраванне домам"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index efaa31f..2cd65db 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"С какво имахте проблем?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Изберете тип проблем"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Запис на екрана"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Ефективност"</item>
-    <item msgid="1627504621139124393">"Потребителски интерфейс"</item>
-    <item msgid="8309220355268900335">"Батерия"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим за работа с една ръка"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слухови апарати"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слухови апарати"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Сдвояване на ново устройство"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Кликнете за сдвояване на ново устройство"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Предварително зададените настройки не бяха актуализирани"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Предварително зададено"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Надписи на живо"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Да се отблокира ли микрофонът на устройството?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Да се отблокира ли камерата на устройството?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Да се отблокират ли камерата и микрофонът на устройството?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Бутон „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Начало"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка за нагоре"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка за надолу"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка за наляво"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка за надясно"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Център"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Интервал"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворено"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворено"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Оставаща батерия: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Свържете писалката към зарядно устройство"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Батерията на писалката е изтощена"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видеокамера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Наскоро използвано от <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Използва се от <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Наскоро използвано от <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Системни"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Изпълняване на няколко задачи едновременно"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Въвеждане"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Преки пътища към приложения"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Достъпност"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Клавишни комбинации"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Търсете клавишни комбинации"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за свиване"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за разгъване"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Подсветка на клавиатурата"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d от %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Контроли за дома"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 6decb61..f8e350a 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ডিভাইস ব্যবহার করার সময় কোথায় অসুবিধা হয়েছিল?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"সমস্যার প্রকার বেছে নিন"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"স্ক্রিন রেকর্ড"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"পারফর্ম্যান্স"</item>
-    <item msgid="1627504621139124393">"ইউজার ইন্টারফেস"</item>
-    <item msgid="8309220355268900335">"ব্যাটারি"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"এক হাতে ব্যবহার করার মোড"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"হিয়ারিং ডিভাইস"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"হিয়ারিং ডিভাইস"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"নতুন ডিভাইস পেয়ার করুন"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"নতুন ডিভাইস পেয়ার করতে ক্লিক করুন"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"প্রিসেট আপডেট করা যায়নি"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"প্রিসেট"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"লাইভ ক্যাপশন"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ডিভাইসের মাইক্রোফোন আনব্লক করতে চান?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ডিভাইসের ক্যামেরা আনব্লক করতে চান?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ডিভাইসের ক্যামেরা এবং মাইক্রোফোন আনব্লক করতে চান?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> বোতাম"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"হোম"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ফিরুন"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ঊর্ধমুখী তীরচিহ্ন"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"নিম্নমুখী তীরচিহ্ন"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"বাঁদিকের তীরচিহ্ন"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ডানদিকের তীরচিহ্ন"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"কেন্দ্র"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"এন্টার"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফোল্ড করা রয়েছে"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ফোল্ড করা নেই"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ব্যাটারির চার্জ বাকি আছে"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"কোনও চার্জারের সাথে আপনার স্টাইলাস কানেক্ট করুন"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"স্টাইলাস ব্যাটারিতে চার্জ কম আছে"</string>
     <string name="video_camera" msgid="7654002575156149298">"ভিডিও ক্যামেরা"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"সম্প্রতি <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপে (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ব্যবহার করা হয়েছে"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপে (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ব্যবহার করা হচ্ছে"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"সম্প্রতি <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপে (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ব্যবহার করা হয়েছে"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"সিস্টেম"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"মাল্টিটাস্কিং"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ইনপুট"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"অ্যাপ শর্টকাট"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"অ্যাক্সেসিবিলিটি"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"কীবোর্ড শর্টকাট"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"সার্চ শর্টকাট"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"আইকন আড়াল করুন"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"আইকন বড় করুন"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"কীবোর্ড ব্যাকলাইট"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-এর মধ্যে %1$d লেভেল"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"হোম কন্ট্রোল"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 1aea982..60c936e 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Koji dio uređaja je imao problem?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Odaberite vrstu problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Snimanje ekrana"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performanse"</item>
-    <item msgid="1627504621139124393">"Korisnički interfejs"</item>
-    <item msgid="8309220355268900335">"Baterija"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Način rada jednom rukom"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Slušni aparati"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Slušni aparati"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Uparite novi uređaj"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknite da uparite novi uređaj"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje zadane postavke nije uspjelo"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Zadana postavka"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Automatski titlovi"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblokirati mikrofon uređaja?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Deblokirati kameru uređaja?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Deblokirati kameru i mikrofon uređaja?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Dugme <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Tipka za početak"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Nazad"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica nagore"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica nadolje"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica ulijevo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica udesno"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Sredina"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Tipka za razmak"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Tipka za novi red"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"sklopljeno"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otklopljeno"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo baterije: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Priključite pisaljku na punjač"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Baterija pisaljke je slaba"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video kamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedavno je koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Koristi aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedavno je koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečice aplikacije"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Prečice tastature"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečica pretraživanja"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona sužavanja"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona proširivanja"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvjetljenje tastature"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrole za dom"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 8229e4b..a82d6f1 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"L\'experiència amb el dispositiu s\'ha vist afectada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecciona el tipus de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Gravació de pantalla"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Rendiment"</item>
-    <item msgid="1627504621139124393">"Interfície d\'usuari"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode d\'una mà"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Audiòfons"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Audiòfons"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Vincula un dispositiu nou"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Fes clic per vincular un dispositiu nou"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"No s\'ha pogut actualitzar el valor predefinit"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Valors predefinits"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtítols instantanis"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vols desbloquejar el micròfon del dispositiu?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vols desbloquejar la càmera del dispositiu?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vols desbloquejar la càmera i el micròfon del dispositiu?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botó <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Inici"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Enrere"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Fletxa amunt"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Fletxa avall"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Fletxa esquerra"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Fletxa dreta"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espai"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Retorn"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegat"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegat"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Queda un <xliff:g id="PERCENTAGE">%s</xliff:g> de bateria"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connecta el llapis òptic a un carregador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateria del llapis òptic baixa"</string>
     <string name="video_camera" msgid="7654002575156149298">"Càmera de vídeo"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Utilitzat recentment per <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"En ús per <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Utilitzat recentment per <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasca"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Dreceres d\'aplicacions"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilitat"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tecles de drecera"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Dreceres de cerca"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Replega la icona"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Desplega la icona"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroil·luminació del teclat"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivell %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controls de la llar"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 85cef4b6..9b540ff 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Co v zařízení bylo ovlivněno?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Vyberte druh problém"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Záznam obrazovky"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Výkon"</item>
-    <item msgid="1627504621139124393">"Uživatelské rozhraní"</item>
-    <item msgid="8309220355268900335">"Baterie"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jedné ruky"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Naslouchátka"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Naslouchátka"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Spárovat nové zařízení"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknutím spárujete nové zařízení"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Předvolbu nelze aktualizovat"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Předvolba"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Živý přepis"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokovat mikrofon zařízení?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Odblokovat fotoaparát zařízení?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Odblokovat fotoaparát a mikrofon zařízení?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Tlačítko <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Zpět"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Šipka nahoru"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Šipka dolů"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Šipka vlevo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Šipka doprava"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Střed"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"TAB"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Mezerník"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -789,8 +789,8 @@
     <string name="system_multitasking_rhs" msgid="8714224917276297810">"Použít rozdělenou obrazovku se stávající aplikací vpravo"</string>
     <string name="system_multitasking_lhs" msgid="8402954791206308783">"Použít rozdělenou obrazovku se stávající aplikací vlevo"</string>
     <string name="system_multitasking_full_screen" msgid="336048080383640562">"Přepnout z rozdělené obrazovky na celou obrazovku"</string>
-    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Přechod na aplikaci vpravo nebo dole v režimu rozdělené obrazovky"</string>
-    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Přechod na aplikaci vlevo nebo nahoře v režimu rozdělené obrazovky"</string>
+    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Přepnout na aplikaci vpravo nebo dole v režimu rozdělené obrazovky"</string>
+    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Přepnout na aplikaci vlevo nebo nahoře v režimu rozdělené obrazovky"</string>
     <string name="system_multitasking_replace" msgid="7410071959803642125">"V režimu rozdělené obrazovky: nahradit jednu aplikaci druhou"</string>
     <string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Vstup"</string>
     <string name="input_switch_input_language_next" msgid="3782155659868227855">"Přepnout na další jazyk"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"složené"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"rozložené"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Zbývá <xliff:g id="PERCENTAGE">%s</xliff:g> baterie"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Připojte dotykové pero k nabíječce"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Slabá baterie dotykového pera"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedávno použila aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Právě používán aplikací <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedávno použila aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Systém"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vstup"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Zkratky aplikací"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Přístupnost"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové zkratky"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Vyhledat zkratky"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona sbalení"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozbalení"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podsvícení klávesnice"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Úroveň %1$d z %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Ovládání domácnosti"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 836fe26..57353f7 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Hvilken del af din enhedsoplevelse blev påvirket?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Vælg problemtype"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Skærmoptagelse"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Ydeevne"</item>
-    <item msgid="1627504621139124393">"Brugerflade"</item>
-    <item msgid="8309220355268900335">"Batteri"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndstilstand"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Høreapparater"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Høreapparater"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Par ny enhed"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klik for at parre en ny enhed"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Forindstillingen kunne ikke opdateres"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forindstilling"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Livetekstning"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du fjerne blokeringen af enhedens mikrofon?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vil du fjerne blokeringen af enhedens kamera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vil du fjerne blokeringen af enhedens kamera og mikrofon?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>-knap"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Tilbage"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pil op"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pil ned"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Venstrepil"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Højrepil"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midtertast"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Mellemrumstast"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"foldet"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"foldet ud"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteri tilbage"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Slut din styluspen til en oplader"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Lavt batteriniveau på styluspen"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Brugt for nylig af <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Bruges af <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Brugt for nylig af <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Appgenveje"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hjælpefunktioner"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tastaturgenveje"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Genveje til søgning"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikon for Skjul"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikon for Udvid"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastaturets baggrundslys"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d af %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Hjemmestyring"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 07a07a8..e7fa9b1 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Welche Bereiche des Geräts waren betroffen?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Art des Problems auswählen"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Bildschirmaufnahme"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Leistung"</item>
-    <item msgid="1627504621139124393">"Benutzeroberfläche"</item>
-    <item msgid="8309220355268900335">"Akku"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhandmodus"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hörgeräte"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hörgeräte"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Neues Gerät koppeln"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klicken, um neues Gerät zu koppeln"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Voreinstellung konnte nicht aktualisiert werden"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voreinstellung"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Automatische Untertitel"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Blockierung des Gerätemikrofons aufheben?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Blockierung der Gerätekamera aufheben?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Blockierung von Gerätekamera und Gerätemikrofon aufheben?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Taste <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Pos1"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Zurück"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Aufwärtspfeil"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Abwärtspfeil"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Linkspfeil"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Rechtspfeil"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Zentrieren"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tabulatortaste"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Leertaste"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Eingabetaste"</string>
@@ -1177,7 +1177,7 @@
     <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem beim Lesen des Akkustands"</string>
     <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Für weitere Informationen tippen"</string>
     <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Kein Wecker gestellt"</string>
-    <string name="accessibility_bouncer" msgid="5896923685673320070">"Displaysperre-Anmeldedaten eingeben"</string>
+    <string name="accessibility_bouncer" msgid="5896923685673320070">"Displaysperre eingeben"</string>
     <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Fingerabdrucksensor"</string>
     <string name="accessibility_authenticate_hint" msgid="798914151813205721">"Authentifizieren"</string>
     <string name="accessibility_enter_hint" msgid="2617864063504824834">"Eingeben des Geräts"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zugeklappt"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aufgeklappt"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akku bei <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Schließe deinen Eingabestift an ein Ladegerät an"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus-Akkustand niedrig"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Kürzlich von <xliff:g id="APP_NAME">%1$s</xliff:g> verwendet (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Verwendet von <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Kürzlich von <xliff:g id="APP_NAME">%1$s</xliff:g> verwendet (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Eingabe"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-Verknüpfungen"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Bedienungshilfen"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tastenkürzel"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Tastenkürzel suchen"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Symbol „Minimieren“"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Symbol „Maximieren“"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastaturbeleuchtung"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d von %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Smart-Home-Steuerung"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index a1dd5f9..23d704d 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Ποιο κομμάτι της εμπειρίας συσκευής επηρεάστηκε;"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Επιλογή τύπου προβλήματος"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Εγγραφή οθόνης"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Απόδοση"</item>
-    <item msgid="1627504621139124393">"Διεπαφή χρήστη"</item>
-    <item msgid="8309220355268900335">"Μπαταρία"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Λειτουργία ενός χεριού"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Συσκευές ακοής"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Συσκευές ακοής"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Σύζευξη νέας συσκευής"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Κάντε κλικ για σύζευξη νέας συσκευής"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Δεν ήταν δυνατή η ενημέρωση της προεπιλογής"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Προεπιλογή"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Ζωντανοί υπότιτλοι"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Κατάργηση αποκλεισμού μικροφώνου συσκευής;"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Κατάργηση αποκλεισμού κάμερας συσκευής;"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Κατάργηση αποκλεισμού κάμερας και μικροφώνου συσκευής;"</string>
@@ -619,7 +624,7 @@
     <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Χωρικός ήχος"</string>
     <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Ανενεργός"</string>
     <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Σταθερός"</string>
-    <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Παρακ. κίνησ. κεφαλ."</string>
+    <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Παρακ. κίνησ. κεφαλής"</string>
     <string name="volume_ringer_change" msgid="3574969197796055532">"Πατήστε για να αλλάξετε τη λειτουργία ειδοποίησης ήχου"</string>
     <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"σίγαση"</string>
     <string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"κατάργηση σίγασης"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Κουμπί <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Πίσω"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Επάνω βέλος"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Κάτω βέλος"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Αριστερό βέλος"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Δεξί βέλος"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Κέντρο"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Πλήκτρο διαστήματος"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"διπλωμένη"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ξεδιπλωμένη"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Απομένει το <xliff:g id="PERCENTAGE">%s</xliff:g> της μπαταρίας"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Συνδέστε τη γραφίδα σε έναν φορτιστή"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Χαμηλή στάθμη μπαταρίας γραφίδας"</string>
     <string name="video_camera" msgid="7654002575156149298">"Βιντεοκάμερα"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Χρησιμοποιήθηκε πρόσφατα από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Χρησιμοποιείται από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Χρησιμοποιήθηκε πρόσφατα από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Σύστημα"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Πολυδιεργασία"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Είσοδος"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Συντομεύσεις εφαρμογών"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Προσβασιμότητα"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Συντομεύσεις πληκτρολογίου"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Συντομεύσεις αναζήτησης"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Εικονίδιο σύμπτυξης"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Εικονίδιο ανάπτυξης"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Οπίσθιος φωτισμός πληκτρολογίου"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Επίπεδο %1$d από %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Οικιακοί έλεγχοι"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 542d660..d71ff1c 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"What part of your device experience was affected?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Select issue type"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Screen record"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"User interface"</item>
-    <item msgid="8309220355268900335">"Battery"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performance"</string>
+    <string name="user_interface" msgid="3712869377953950887">"User interface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hearing devices"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hearing devices"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Pair new device"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Click to pair new device"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Unblock device microphone?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Unblock device camera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Unblock device camera and microphone?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stylus battery <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connect your stylus to a charger"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video camera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"In use by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 4ac0efe..44e9d25 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -361,18 +361,19 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"What part of your device experience was affected?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Select issue type"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Screen record"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"User Interface"</item>
-    <item msgid="8309220355268900335">"Battery"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performance"</string>
+    <string name="user_interface" msgid="3712869377953950887">"User Interface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hearing devices"</string>
+    <string name="quick_settings_hearing_devices_connected" msgid="6519069502397037781">"Active"</string>
+    <string name="quick_settings_hearing_devices_disconnected" msgid="8907061223998176187">"Disconnected"</string>
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hearing devices"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Pair new device"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Click to pair new device"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
     <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Unblock device microphone?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Unblock device camera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Unblock device camera and microphone?"</string>
@@ -726,11 +727,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1274,7 +1270,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stylus battery <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connect your stylus to a charger"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video camera"</string>
@@ -1317,6 +1313,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"In use by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Home Controls"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 542d660..d71ff1c 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"What part of your device experience was affected?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Select issue type"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Screen record"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"User interface"</item>
-    <item msgid="8309220355268900335">"Battery"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performance"</string>
+    <string name="user_interface" msgid="3712869377953950887">"User interface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hearing devices"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hearing devices"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Pair new device"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Click to pair new device"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Unblock device microphone?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Unblock device camera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Unblock device camera and microphone?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stylus battery <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connect your stylus to a charger"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video camera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"In use by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 542d660..d71ff1c 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"What part of your device experience was affected?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Select issue type"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Screen record"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"User interface"</item>
-    <item msgid="8309220355268900335">"Battery"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performance"</string>
+    <string name="user_interface" msgid="3712869377953950887">"User interface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hearing devices"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hearing devices"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Pair new device"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Click to pair new device"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Unblock device microphone?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Unblock device camera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Unblock device camera and microphone?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stylus battery <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connect your stylus to a charger"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stylus battery low"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video camera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"In use by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recently used by <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 67c332e..c2f7098 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -361,18 +361,19 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎What part of your device experience was affected?‎‏‎‎‏‎"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎Select issue type‎‏‎‎‏‎"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎Screen record‎‏‎‎‏‎"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎Performance‎‏‎‎‏‎"</item>
-    <item msgid="1627504621139124393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‎‏‎User Interface‎‏‎‎‏‎"</item>
-    <item msgid="8309220355268900335">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎Battery‎‏‎‎‏‎"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‎‎Performance‎‏‎‎‏‎"</string>
+    <string name="user_interface" msgid="3712869377953950887">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‎User Interface‎‏‎‎‏‎"</string>
+    <string name="thermal" msgid="6758074791325414831">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎Thermal‎‏‎‎‏‎"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎One-handed mode‎‏‎‎‏‎"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎Hearing devices‎‏‎‎‏‎"</string>
+    <string name="quick_settings_hearing_devices_connected" msgid="6519069502397037781">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‎‏‎Active‎‏‎‎‏‎"</string>
+    <string name="quick_settings_hearing_devices_disconnected" msgid="8907061223998176187">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎Disconnected‎‏‎‎‏‎"</string>
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‏‎‏‎Hearing devices‎‏‎‎‏‎"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‎‎Pair new device‎‏‎‎‏‎"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‎‏‎‏‎‎Click to pair new device‎‏‎‎‏‎"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎Couldn\'t update preset‎‏‎‎‏‎"</string>
     <string name="hearing_devices_preset_label" msgid="7878267405046232358">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎Preset‎‏‎‎‏‎"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‏‎‏‎‏‎Live Caption‎‏‎‎‏‎"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‎‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎Unblock device microphone?‎‏‎‎‏‎"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎Unblock device camera?‎‏‎‎‏‎"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‏‎‏‏‏‎Unblock device camera and microphone?‎‏‎‎‏‎"</string>
@@ -726,11 +727,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‎Button ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎Home‎‏‎‎‏‎"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‎‎‏‏‏‏‎Back‎‏‎‎‏‎"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‎‏‎‎‎‎‏‎Up arrow‎‏‎‎‏‎"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎Down arrow‎‏‎‎‏‎"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎Left arrow‎‏‎‎‏‎"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎Right arrow‎‏‎‎‏‎"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎Center‎‏‎‎‏‎"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎Tab‎‏‎‎‏‎"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‎Space‎‏‎‎‏‎"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‎‎Enter‎‏‎‎‏‎"</string>
@@ -1274,7 +1270,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎folded‎‏‎‎‏‎"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎unfolded‎‏‎‎‏‎"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎%1$s / %2$s‎‏‎‎‏‎"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERCENTAGE">%s</xliff:g>‎‏‎‎‏‏‏‎ battery remaining‎‏‎‎‏‎"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎Stylus battery ‎‏‎‎‏‏‎<xliff:g id="PERCENTAGE">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎Connect your stylus to a charger‎‏‎‎‏‎"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎Stylus battery low‎‏‎‎‏‎"</string>
     <string name="video_camera" msgid="7654002575156149298">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‎‎‏‏‎‎‏‎‎Video camera‎‏‎‎‏‎"</string>
@@ -1317,6 +1313,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‏‏‏‎‏‎Recently used by ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ (‎‏‎‎‏‏‎<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‏‏‎In use by ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ (‎‏‎‎‏‏‎<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎ • ‎‏‎‎‏‏‎<xliff:g id="PROXY_LABEL">%3$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎Recently used by ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ (‎‏‎‎‏‏‎<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎ • ‎‏‎‎‏‏‎<xliff:g id="PROXY_LABEL">%3$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎System‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎Multitasking‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‎Input‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‏‎‏‎App shortcuts‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‎Accessibility‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎Keyboard shortcuts‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎Search shortcuts‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎Collapse icon‎‏‎‎‏‎"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‏‏‏‎‎Expand icon‎‏‎‎‏‎"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎‎Keyboard backlight‎‏‎‎‏‎"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‎Level %1$d of %2$d‎‏‎‎‏‎"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎Home Controls‎‏‎‎‏‎"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index c6d206b..fd800ad 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"¿Qué parte de tu exp. del disp. se vio afectada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Seleccionar tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Grabadora de pant."</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Rendimiento"</item>
-    <item msgid="1627504621139124393">"Interfaz de usuario"</item>
-    <item msgid="8309220355268900335">"Batería"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo una mano"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Dispositivos auditivos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Dispositivos auditivos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Vincular dispositivo nuevo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Haz clic para vincular un dispositivo nuevo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"No se pudo actualizar el ajuste predeterminado"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Ajuste predeterminado"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtitulado instantáneo"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"¿Quieres desbloquear el micrófono del dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"¿Quieres desbloquear la cámara del dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"¿Quieres desbloquear la cámara y el micrófono del dispositivo?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botón <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Inicio"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Atrás"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flecha hacia arriba"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flecha hacia abajo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flecha a la izquierda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flecha a la derecha"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centro"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espacio"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Intro"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegado"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de batería restante"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecta tu pluma stylus a un cargador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"La pluma stylus tiene poca batería"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videocámara"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Uso reciente en <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"En uso por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Uso reciente en <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Tareas múltiples"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Accesos directos a aplicaciones"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Buscar combinaciones de teclas"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícono de contraer"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícono de expandir"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación del teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controles de la casa"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 76effd1..5bcf582 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"¿Qué parte de tu experiencia se ha visto afectada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecciona el tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Grabar pantalla"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Rendimiento"</item>
-    <item msgid="1627504621139124393">"Interfaz de usuario"</item>
-    <item msgid="8309220355268900335">"Batería"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo Una mano"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Audífonos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Audífonos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Emparejar nuevo dispositivo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Haz clic para emparejar un nuevo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"No se ha podido actualizar el preajuste"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preajuste"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtítulos automáticos"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"¿Desbloquear el micrófono del dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"¿Desbloquear la cámara del dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"¿Desbloquear la cámara y el micrófono del dispositivo?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botón <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Inicio"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Atrás"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flecha hacia arriba"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flecha hacia abajo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flecha izquierda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flecha derecha"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centro"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tabulador"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espacio"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Intro"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegado"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batería restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecta tu lápiz óptico a un cargador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Batería del lápiz óptico baja"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videocámara"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Usado recientemente por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"En uso por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Usado recientemente por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitarea"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Accesos directos a aplicaciones"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atajos de búsqueda"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icono de contraer"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icono de desplegar"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación del teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controles de la casa"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 3d15aab..e7d5e2f 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Millist seadme kasutuskogemuse osa see mõjutas?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Valige probleemi tüüp"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekraanisalvestus"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Toimivus"</item>
-    <item msgid="1627504621139124393">"Kasutajaliides"</item>
-    <item msgid="8309220355268900335">"Aku"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Ühekäerežiim"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Kuuldeseadmed"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Kuuldeseadmed"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Uue seadme sidumine"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Uue seadme sidumiseks klõpsake"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Eelseadistust ei saanud värskendada"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Eelseadistus"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Reaalajas subtiitrid"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kas tühistada seadme mikrofoni blokeerimine?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Kas tühistada seadme kaamera blokeerimine?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Kas tühistada seadme kaamera ja mikrofoni blokeerimine?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Nupp <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Avakuva"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Tagasi"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Ülesnool"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Allanool"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vasaknool"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Paremnool"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Keskele"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Tühik"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Sisestusklahv"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kokku volditud"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"lahti volditud"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akutase on <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ühendage elektronpliiats laadijaga"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Elektronpliiatsi akutase on madal"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokaamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Kasutas hiljuti rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Seda kasutab <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Kasutas hiljuti rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Süsteem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitegumtöö"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Sisend"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Rakenduse otseteed"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Juurdepääsetavus"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatuuri otseteed"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Otsingu otseteed"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ahendamisikoon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Laiendamisikoon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatuuri taustavalgustus"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Tase %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kodu juhtelemendid"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index db0e8e9..5e4c5ac 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Gailuaren erabileraren zer alderdiri eragin dio?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Hautatu arazo mota"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Pantaila-grabaketa"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Errendimendua"</item>
-    <item msgid="1627504621139124393">"Erabiltzaile-interfazea"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Esku bakarreko modua"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Entzumen-gailuak"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Entzumen-gailuak"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Parekatu beste gailu bat"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Egin klik beste gailu bat parekatzeko"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ezin izan da eguneratu aurrezarpena"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Aurrezarpena"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Istanteko azpitituluak"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Gailuaren mikrofonoa desblokeatu nahi duzu?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Gailuaren kamera desblokeatu nahi duzu?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Gailuaren kamera eta mikrofonoa desblokeatu nahi dituzu?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> botoia"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Hasiera"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Atzera"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Gora egiteko gezi-tekla"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Behera egiteko gezi-tekla"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Ezkerrera egiteko gezi-tekla"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Eskuinera egiteko gezi-tekla"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Erdiratu"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Zuriunea"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Sartu"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"tolestuta"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"tolestu gabe"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateriaren <xliff:g id="PERCENTAGE">%s</xliff:g> geratzen da"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Konektatu arkatza kargagailu batera"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Arkatzak bateria gutxi du"</string>
     <string name="video_camera" msgid="7654002575156149298">"Bideokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) aplikazioak erabili du duela gutxi"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak darabil (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) aplikazioak erabili du duela gutxi"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Zeregin bat baino gehiago aldi berean exekutatzea"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Sarrera"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Aplikazioetarako lasterbideak"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erabilerraztasuna"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Lasterbideak"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Bilatu lasterbideak"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Tolesteko ikonoa"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Zabaltzeko ikonoa"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Teklatuaren hondoko argia"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d/%2$d maila"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Etxeko gailuen kontrola"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index f2372a6..ad24c1b 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"کدام بخش تجربه استفاده از دستگاه تحت‌تأثیر قرار گرفت؟"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"انتخاب نوع مشکل"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ضبط صفحه‌نمایش"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"عملکرد"</item>
-    <item msgid="1627504621139124393">"واسط کاربر"</item>
-    <item msgid="8309220355268900335">"باتری"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"حالت یک‌دستی"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"سمعک"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"سمعک"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"جفت کردن دستگاه جدید"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"برای جفت کردن دستگاه جدید، کلیک کنید"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"پیش‌تنظیم به‌روزرسانی نشد"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"پیش‌تنظیم"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"زیرنویس زنده"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"میکروفون دستگاه لغو انسداد شود؟"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"دوربین دستگاه لغو انسداد شود؟"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"دوربین و میکروفون دستگاه لغو انسداد شود؟"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"دکمه <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"ابتدا"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"برگشت"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"پیکان رو به‌بالا"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"پیکان روبه‌پایین"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"پیکان چپ"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"پیکان راست"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"مرکز"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"تاشده"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"تانشده"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> باتری باقی مانده است"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"قلم را به شارژر وصل کنید"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"باتری قلم ضعیف است"</string>
     <string name="video_camera" msgid="7654002575156149298">"دوربین ویدیویی"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"اخیراً <xliff:g id="APP_NAME">%1$s</xliff:g> از آن استفاده کرده است (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> از آن استفاده می‌کند (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"اخیراً <xliff:g id="APP_NAME">%1$s</xliff:g> از آن استفاده کرده است (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"سیستم"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"چندوظیفگی"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ورودی"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"میان‌برهای برنامه"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"دسترس‌پذیری"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"میان‌برهای صفحه‌کلید"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"جستجوی میان‌برها"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"نماد جمع کردن"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"نماد ازهم بازکردن"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"نور پس‌زمینه صفحه‌کلید"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‏سطح %1$d از %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"کنترل خانه هوشمند"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 9172a9a..0fed3d5 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -201,7 +201,7 @@
     <string name="fingerprint_reenroll_failure_dialog_content" msgid="4733768492747300666">"Sormenjälkiavauksen määritys epäonnistui. Siirry asetuksiin ja yritä uudelleen."</string>
     <string name="face_re_enroll_notification_title" msgid="1850838867718410520">"Ota kasvojentunnistusavaus uudelleen käyttöön"</string>
     <string name="face_re_enroll_notification_name" msgid="7384545252206120659">"Kasvojentunnistusavaus"</string>
-    <string name="face_re_enroll_dialog_title" msgid="6392173708176069994">"Kasvojentunnistusavauksen käyttöönotto"</string>
+    <string name="face_re_enroll_dialog_title" msgid="6392173708176069994">"Kasvojen&amp;shy;tunnistus&amp;shy;avauksen käyttöönotto"</string>
     <string name="face_re_enroll_dialog_content" msgid="7353502359464038511">"Jos haluat ottaa kasvojentunnistusavauksen uudelleen käyttöön, nykyinen kasvomalli poistetaan.\n\nJos haluat avata puhelimen lukituksen kasvoilla, sinun on otettava ominaisuus uudelleen käyttöön."</string>
     <string name="face_reenroll_failure_dialog_content" msgid="7073947334397236935">"Kasvojentunnistusavauksen käyttöönotto epäonnistui. Siirry asetuksiin ja yritä uudelleen."</string>
     <string name="fingerprint_dialog_touch_sensor" msgid="2817887108047658975">"Kosketa sormenjälkitunnistinta"</string>
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Mitä osaa käyttökokemuksesta ongelma koski?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Valitse ongelman tyyppi"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Näytön tallentaja"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Suorituskyky"</item>
-    <item msgid="1627504621139124393">"Käyttöliittymä"</item>
-    <item msgid="8309220355268900335">"Akku"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Yhden käden moodi"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Kuulolaitteet"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Kuulolaitteet"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Muodosta uusi laitepari"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Muodosta uusi laitepari klikkaamalla"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Esiasetusta ei voitu muuttaa"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Esiasetus"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Livetekstitys"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kumotaanko laitteen mikrofonin esto?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Kumotaanko laitteen kameran esto?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Kumotaanko laitteen kameran ja mikrofonin esto?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Painike <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Takaisin"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Ylänuoli"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Alanuoli"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vasen nuoli"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Oikea nuoli"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Keskelle"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Välilyönti"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"taitettu"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"taittamaton"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akkua jäljellä <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Yhdistä näyttökynä laturiin"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Näyttökynän akku vähissä"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> käytti tätä äskettäin (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Tämän käytössä: <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> käytti tätä äskettäin (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Järjestelmä"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitaskaus"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Syöte"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Sovellusten pikakuvakkeet"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Saavutettavuus"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Pikanäppäimet"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pikahaut"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Tiivistyskuvake"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Laajennuskuvake"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Näppämistön taustavalo"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Taso %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kodin ohjaus"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index f2bae1b..95c788a 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Quelle composante de l\'appareil a été affectée?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Sélectionner un type"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Enregistrement écran"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"Interface utilisateur"</item>
-    <item msgid="8309220355268900335">"Pile"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode Une main"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Appareils auditifs"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Appareils auditifs"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Associer un nouvel appareil"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Cliquez ici pour associer un nouvel appareil"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossible de mettre à jour le préréglage"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Préréglage"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Sous-titres instantanés"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le microphone de l\'appareil?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Débloquer l\'appareil photo de l\'appareil?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Débloquer l\'appareil photo et le microphone?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Bouton <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Accueil"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Précédent"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flèche vers le haut"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flèche vers le bas"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flèche vers la gauche"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flèche vers la droite"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrer"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espace"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Entrée"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plié"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"déplié"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Charge restante de la pile : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connectez votre stylet à un chargeur"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Pile du stylet faible"</string>
     <string name="video_camera" msgid="7654002575156149298">"Caméra"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Récemment utilisé par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Utilisé par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Récemment utilisé par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Système"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitâche"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrée"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Raccourcis des applis"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis-clavier"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Recherchez des raccourcis"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icône Réduire"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icône Développer"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Rétroéclairage du clavier"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Domotique"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index e216c84..b7abd0e 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Quel problème avez-vous rencontré avec votre appareil ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Sélectionnez un type de problème"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Enregistrement de l\'écran"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performances"</item>
-    <item msgid="1627504621139124393">"Interface utilisateur"</item>
-    <item msgid="8309220355268900335">"Batterie"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode une main"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Appareils auditifs"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Appareils auditifs"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Associer un nouvel appareil"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Cliquer pour associer un nouvel appareil"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossible de mettre à jour les préréglages"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Préréglage"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Sous-titres instantanés"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le micro de l\'appareil ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Débloquer la caméra de l\'appareil ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Débloquer l\'appareil photo et le micro de l\'appareil ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Bouton <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Accueil"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Précédent"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flèche vers le haut"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flèche vers le bas"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flèche vers la gauche"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flèche vers la droite"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espace"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Entrée"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plié"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"déplié"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de batterie restante"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connectez votre stylet à un chargeur"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"La batterie du stylet est faible"</string>
     <string name="video_camera" msgid="7654002575156149298">"Caméra"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Récemment utilisé par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"En cours d\'utilisation par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Récemment utilisé par <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Système"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitâche"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrée"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Raccourcis d\'application"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis clavier"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Raccourcis de recherche"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icône Réduire"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icône Développer"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Rétroéclairage du clavier"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d sur %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Contrôle de la maison"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 1ccab5d..55dd05a 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Cal foi o problema na experiencia co dispositivo?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecciona o tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Gravación de pant."</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Rendemento"</item>
-    <item msgid="1627504621139124393">"Interface de usuario"</item>
-    <item msgid="8309220355268900335">"Batería"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo dunha soa man"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Dispositivos auditivos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Dispositivos auditivos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Vincular dispositivo novo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Fai clic para vincular un novo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Non se puido actualizar a configuración predeterminada"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Configuración predeterminada"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtítulos instantáneos"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Queres desbloquear o micrófono do dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Queres desbloquear a cámara do dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Queres desbloquear a cámara e o micrófono do dispositivo?"</string>
@@ -617,7 +622,7 @@
     <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toca para silenciar."</string>
     <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Control de ruído"</string>
     <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio espacial"</string>
-    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactivar"</string>
+    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactivado"</string>
     <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixado"</string>
     <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seguimento da cabeza"</string>
     <string name="volume_ringer_change" msgid="3574969197796055532">"Toca para cambiar o modo de timbre"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botón <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Inicio"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Volver"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Frecha arriba"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Frecha abaixo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Frecha esquerda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Frecha dereita"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centro"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espazo"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Intro"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"dispositivo pregado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"dispositivo despregado"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batería restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecta o lapis óptico a un cargador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"O lapis óptico ten pouca batería"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videocámara"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"En uso recentemente por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"En uso por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"En uso recentemente por <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitarefa"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atallos de aplicacións"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidade"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Atallos de teclado"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atallos de busca"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icona de contraer"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icona de despregar"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controis domóticos"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index e096fff..425a768 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ડિવાઇસ સંબંધી તમારા અનુભવના કયા ભાગને અસર થઈ હતી?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"સમસ્યાનો પ્રકાર પસંદ કરો"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"સ્ક્રીન રેકોર્ડ કરો"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"પર્ફોર્મન્સ"</item>
-    <item msgid="1627504621139124393">"યૂઝર ઇન્ટરફેસ"</item>
-    <item msgid="8309220355268900335">"બૅટરી"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"એક-હાથે વાપરો મોડ"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"સાંભળવામાં મદદ આપતા ડિવાઇસ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"સાંભળવામાં મદદ આપતા ડિવાઇસ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"નવા ડિવાઇસ સાથે જોડાણ કરો"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"નવા ડિવાઇસ સાથે જોડાણ કરવા માટે ક્લિક કરો"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"પ્રીસેટ અપડેટ કરી શક્યા નથી"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"પ્રીસેટ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"લાઇવ કૅપ્શન"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ડિવાઇસના માઇક્રોફોનને અનબ્લૉક કરીએ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ડિવાઇસના કૅમેરાને અનબ્લૉક કરીએ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ડિવાઇસના કૅમેરા અને માઇક્રોફોનને અનબ્લૉક કરીએ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"બટન <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ઉપરની ઍરો કી"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"નીચેની ઍરો કી"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ડાબી ઍરો કી"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"જમણી ઍરો કી"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ફોલ્ડ કરેલું"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"અનફોલ્ડ કરેલું"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> બૅટરી બાકી છે"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"તમારા સ્ટાઇલસને ચાર્જર સાથે કનેક્ટ કરો"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"સ્ટાઇલસની બૅટરીમાં ચાર્જ ઓછો છે"</string>
     <string name="video_camera" msgid="7654002575156149298">"વીડિયો કૅમેરા"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) દ્વારા તાજેતરમાં ઉપયોગ કરવામાં આવ્યો"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) દ્વારા ઉપયોગ ચાલુ છે"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) દ્વારા તાજેતરમાં ઉપયોગ કરવામાં આવ્યો"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"સિસ્ટમ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"એકથી વધુ કાર્યો કરવા"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ઇનપુટ"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ઍપ શૉર્ટકટ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ઍક્સેસિબિલિટી"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"કીબોર્ડ શૉર્ટકટ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"શૉર્ટકટ શોધો"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"\'નાનું કરો\'નું આઇકન"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"\'મોટું કરો\'નું આઇકન"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"કીબોર્ડની બૅકલાઇટ"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dમાંથી %1$d લેવલ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ઘરેલું સાધનોના નિયંત્રણો"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index d8c7dcd..8f7b87c 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -295,7 +295,7 @@
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"स्क्रीन सेवर"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"कैमरे का ऐक्सेस"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"माइक्रोफ़ोन का ऐक्सेस"</string>
-    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"उपलब्ध"</string>
+    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"उपलब्ध है"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"ब्लॉक किया गया है"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"मीडिया डिवाइस"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"उपयोगकर्ता"</string>
@@ -361,21 +361,26 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"आपके डिवाइस की कौनसी सुविधा पर असर पड़ा था?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"समस्या का टाइप चुनें"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"स्क्रीन रिकॉर्डर"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"परफ़ॉर्मेंस"</item>
-    <item msgid="1627504621139124393">"यूज़र इंटरफ़ेस"</item>
-    <item msgid="8309220355268900335">"बैटरी"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"वन-हैंडेड मोड"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"कान की मशीनें"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"कान की मशीनें"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"नया डिवाइस जोड़ें"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"नया डिवाइस जोड़ने के लिए क्लिक करें"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रीसेट अपडेट नहीं किया जा सका"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
-    <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"क्या आपको डिवाइस का माइक्रोफ़ोन अनब्लॉक करना है?"</string>
-    <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"क्या आपको डिवाइस का कैमरा अनब्लॉक करना है?"</string>
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"प्रीसेट"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"लाइव कैप्शन"</string>
+    <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"क्या आपको माइक्रोफ़ोन का ऐक्सेस अनब्लॉक करना है?"</string>
+    <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"क्या आपको कैमरे का ऐक्सेस अनब्लॉक करना है?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"क्या आप डिवाइस का कैमरा और माइक्रोफ़ोन अनब्लॉक करना चाहते हैं?"</string>
     <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ऐसा करने से, सभी ऐप्लिकेशन और सेवाओं के लिए माइक्रोफ़ोन का ऐक्सेस अनब्लॉक हो जाएगा और वे इसका इस्तेमाल कर पाएंगी."</string>
     <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ऐसा करने से, सभी ऐप्लिकेशन और सेवाओं के लिए कैमरे का ऐक्सेस अनब्लॉक हो जाएगा और वे इसका इस्तेमाल कर पाएंगी."</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"बटन <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप ऐरो"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन ऐरो"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ़्ट ऐरो"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट ऐरो"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"मध्य तीर"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -997,7 +997,7 @@
     <string name="accessibility_magnification_right_handle" msgid="9055988237319397605">"दायां हैंडल"</string>
     <string name="accessibility_magnification_bottom_handle" msgid="6531646968813821258">"नीचे का हैंडल"</string>
     <string name="accessibility_magnification_settings_panel_description" msgid="8174187340747846953">"ज़ूम करने की सुविधा वाली सेटिंग"</string>
-    <string name="accessibility_magnifier_size" msgid="3038755600030422334">"ज़ूम करने की सुविधा का साइज़"</string>
+    <string name="accessibility_magnifier_size" msgid="3038755600030422334">"ज़ूम का साइज़"</string>
     <string name="accessibility_magnification_zoom" msgid="4222088982642063979">"ज़ूम करें"</string>
     <string name="accessibility_magnification_medium" msgid="6994632616884562625">"मध्यम"</string>
     <string name="accessibility_magnification_small" msgid="8144502090651099970">"छोटा"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"डिवाइस फ़ोल्ड किया गया"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"डिवाइस अनफ़ोल्ड किया गया"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> बैटरी बची है"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"अपने स्टाइलस को चार्ज करें"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"स्टाइलस की बैटरी कम है"</string>
     <string name="video_camera" msgid="7654002575156149298">"वीडियो कैमरा"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"हाल ही में, <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ने इस्तेमाल किया"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) पर इस्तेमाल किया जा रहा है"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"हाल ही में, <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ने इस्तेमाल किया"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"सिस्टम"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"मल्टीटास्किंग (एक साथ कई काम करना)"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ऐप शॉर्टकट"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सुलभता"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"सर्च शॉर्टकट"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"छोटा करने का आइकॉन"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"बड़ा करने का आइकॉन"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"कीबोर्ड की बैकलाइट"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d में से %1$d लेवल"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 19625bd..bc84c1d 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Na koji dio doživljaja na uređaju to utjecalo?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Odaberite vrstu problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Snimanje zaslona"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Izvedba"</item>
-    <item msgid="1627504621139124393">"Korisničko sučelje"</item>
-    <item msgid="8309220355268900335">"Baterija"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Način rada jednom rukom"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Slušna pomagala"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Slušna pomagala"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Uparite novi uređaj"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknite da biste uparili novi uređaj"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje unaprijed definiranih postavki nije uspjelo"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Unaprijed definirana postavka"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Automatski titlovi"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Želite li deblokirati mikrofon uređaja?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Želite li deblokirati kameru uređaja?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Želite li deblokirati kameru i mikrofon uređaja?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Tipka <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Početak"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Natrag"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica prema gore"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica prema dolje"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica lijevo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica desno"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Sredina"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Razmaknica"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Unos"</string>
@@ -932,7 +932,7 @@
     <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Način Ne uznemiravaj uključilo je automatsko pravilo ili aplikacija."</string>
     <string name="running_foreground_services_title" msgid="5137313173431186685">"Izvođenje aplikacija u pozadini"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"Dodirnite da biste vidjeli pojedinosti o potrošnji baterije i podatkovnom prometu"</string>
-    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Isključiti mobilne podatke?"</string>
+    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Želite li isključiti mobilne podatke?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Nećete imati pristup mobilnim podacima ili internetu putem operatera <xliff:g id="CARRIER">%s</xliff:g>. Internet će biti dostupan samo putem Wi-Fija."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"vaš mobilni operater"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Vratiti se na mobilnog operatera <xliff:g id="CARRIER">%s</xliff:g>?"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zatvoreno"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otvoreno"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo je <xliff:g id="PERCENTAGE">%s</xliff:g> baterije"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Priključite pisaljku na punjač"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Slaba baterija pisaljke"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedavno koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Koristi: <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedavno koristila aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sustav"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Obavljanje više zadataka"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečaci aplikacija"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tipkovni prečaci"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečaci za pretraživanje"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za sažimanje"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za proširivanje"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvjetljenje tipkovnice"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Razina %1$d od %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Upravljanje uređajima"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 7099033..4b36026 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Az eszközhasználati élmény mely része érintett?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Problématípus kiválasztása"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Képernyőrögzítés"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Teljesítmény"</item>
-    <item msgid="1627504621139124393">"Kezelőfelület"</item>
-    <item msgid="8309220355268900335">"Akkumulátor"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Egykezes mód"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hallókészülékek"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hallókészülékek"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Új eszköz párosítása"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kattintson új eszköz párosításához"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Nem sikerült frissíteni a beállításkészletet"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Beállításkészlet"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Élő feliratozás"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Feloldja az eszköz mikrofonjának letiltását?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Feloldja az eszköz kamerájának letiltását?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Feloldja az eszköz kamerájának és mikrofonjának letiltását?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> gomb"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Kezdőképernyő"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Vissza"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Felfelé nyíl"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Lefelé nyíl"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Balra nyíl"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Jobbra nyíl"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Középre"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Szóköz"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"összehajtva"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kihajtva"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akkumulátor töltöttségi szintje: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Tegye töltőre az érintőceruzát"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Az érintőceruza töltöttsége alacsony"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Legutóbb használta: <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Használatban a következő által: <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Legutóbb használta: <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Rendszer"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Bevitel"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Alkalmazás-parancsikonok"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kisegítő lehetőségek"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Billentyűparancsok"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Billentyűparancsok keresése"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Összecsukás ikon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Kibontás ikon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"A billentyűzet háttérvilágítása"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Fényerő: %2$d/%1$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Otthon vezérlése"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index c539407..d8e36ad 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Սարքի ո՞ր մասի հետ է կապված խնդիրը։"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Ընտրեք խնդրի տեսակը"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Էկրանի տեսագրում"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Աշխատանք"</item>
-    <item msgid="1627504621139124393">"Միջերես"</item>
-    <item msgid="8309220355268900335">"Մարտկոց"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Մեկ ձեռքի ռեժիմ"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Լսողական սարքեր"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Լսողական սարքեր"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Նոր սարքի զուգակցում"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Սեղմեք՝ նոր սարք զուգակցելու համար"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Չհաջողվեց թարմացնել կարգավորումների հավաքածուն"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Կարգավորումների հավաքածու"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Կենդանի ենթագրեր"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Արգելահանե՞լ սարքի խոսափողը"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Արգելահանե՞լ սարքի տեսախցիկը"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Արգելահանե՞լ սարքի տեսախցիկը և խոսափողը"</string>
@@ -594,9 +599,9 @@
     <string name="screen_pinning_negative" msgid="6882816864569211666">"Ոչ"</string>
     <string name="screen_pinning_start" msgid="7483998671383371313">"Հավելվածն ամրացվեց"</string>
     <string name="screen_pinning_exit" msgid="4553787518387346893">"Հավելվածն ապամրացվեց"</string>
-    <string name="stream_voice_call" msgid="7468348170702375660">"Զանգ"</string>
+    <string name="stream_voice_call" msgid="7468348170702375660">"Զանգելը"</string>
     <string name="stream_system" msgid="7663148785370565134">"Համակարգ"</string>
-    <string name="stream_ring" msgid="7550670036738697526">"Զանգ"</string>
+    <string name="stream_ring" msgid="7550670036738697526">"Զանգ ստանալը"</string>
     <string name="stream_music" msgid="2188224742361847580">"Մեդիա"</string>
     <string name="stream_alarm" msgid="16058075093011694">"Զարթուցիչ"</string>
     <string name="stream_notification" msgid="7930294049046243939">"Ծանուցում"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> կոճակ"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Գլխավոր էջ"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Հետ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Վերև սլաք"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Ներքև սլաք"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Ձախ սլաք"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Աջ սլաք"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Կենտրոն"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Բացատ"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Մուտք"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ծալված"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"բացված"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Մարտկոցի լիցքը՝ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ձեր ստիլուսը միացրեք լիցքավորիչի"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Ստիլուսի մարտկոցի լիցքի ցածր մակարդակ"</string>
     <string name="video_camera" msgid="7654002575156149298">"Տեսախցիկ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Վերջերս օգտագործվել է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի կողմից (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Օգտագործվում է <xliff:g id="APP_NAME">%1$s</xliff:g>ի կողմից (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Վերջերս օգտագործվել է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի կողմից (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Համակարգ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Բազմախնդրություն"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ներածում"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Հավելվածի դյուրանցումներ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Հատուկ գործառույթներ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Ստեղնային դյուրանցումներ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Դյուրանցումների որոնում"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ծալել պատկերակը"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ծավալել պատկերակը"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Հետին լուսավորությամբ ստեղնաշար"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d՝ %2$d-ից"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Տան կառավարման տարրեր"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 5af06e8..22d0de5 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Bagian pengalaman perangkat mana yang terpengaruh?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Pilih jenis masalah"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Perekaman layar"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performa"</item>
-    <item msgid="1627504621139124393">"Antarmuka Pengguna"</item>
-    <item msgid="8309220355268900335">"Baterai"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode satu tangan"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Alat bantu dengar"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Alat bantu dengar"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Sambungkan perangkat baru"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klik untuk menyambungkan perangkat baru"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Tidak dapat memperbarui preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Teks Otomatis"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Berhenti memblokir mikrofon perangkat?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Berhenti memblokir kamera perangkat?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Berhenti memblokir kamera dan mikrofon perangkat?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Tombol <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Panah atas"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Panah bawah"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Panah kiri"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Panah kanan"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -988,7 +988,7 @@
     <string name="magnification_close_settings_click_label" msgid="4642477260651704517">"Tutup setelan pembesaran"</string>
     <string name="magnification_exit_edit_mode_click_label" msgid="1664818325144887117">"Keluar dari mode edit"</string>
     <string name="magnification_drag_corner_to_resize" msgid="1249766311052418130">"Tarik pojok persegi untuk mengubah ukuran"</string>
-    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Izinkan scrolling diagonal"</string>
+    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Izinkan scroll diagonal"</string>
     <string name="accessibility_resize" msgid="5733759136600611551">"Ubah ukuran"</string>
     <string name="accessibility_change_magnification_type" msgid="666000085077432421">"Ubah jenis pembesaran"</string>
     <string name="accessibility_magnification_end_resizing" msgid="4881690585800302628">"Akhiri pengubahan ukuran"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ditutup"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"dibuka"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Baterai tersisa <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Hubungkan stilus ke pengisi daya"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Baterai stilus lemah"</string>
     <string name="video_camera" msgid="7654002575156149298">"Kamera video"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Baru saja digunakan oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Sedang digunakan oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Baru saja digunakan oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Pintasan aplikasi"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aksesibilitas"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan keyboard"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pintasan penelusuran"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikon ciutkan"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikon luaskan"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Lampu latar keyboard"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Tingkat %1$d dari %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrol Rumah"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index ee99882..b631c47 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Hvað í tækjaupplifuninni varð fyrir áhrifum?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Veldu gerð vandamáls"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Skjáupptaka"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Afköst"</item>
-    <item msgid="1627504621139124393">"Notandaviðmót"</item>
-    <item msgid="8309220355268900335">"Rafhlaða"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhent stilling"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Heyrnartæki"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Heyrnartæki"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Para nýtt tæki"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Smelltu til að para nýtt tæki"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Tókst ekki að uppfæra forstillingu"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forstilling"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Skjátextar í rauntíma"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Opna fyrir hljóðnema tækisins?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Opna fyrir myndavél tækisins?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Opna fyrir myndavél og hljóðnema tækisins?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Hnappur <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Til baka"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Ör upp"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Ör niður"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Ör til vinstri"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Ör til hægri"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Miðja"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Bilslá"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"samanbrotið"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"opið"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> hleðsla eftir á rafhlöðu"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Tengdu pennann við hleðslutæki"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Rafhlaða pennans er að tæmast"</string>
     <string name="video_camera" msgid="7654002575156149298">"Kvikmyndatökuvél"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nýlega notað af <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Í notkun í <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nýlega notað af <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Kerfi"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Fjölvinnsla"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Inntak"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Flýtileiðir forrita"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aðgengi"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Flýtilyklar"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Leitarflýtileiðir"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Minnka tákn"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Stækka tákn"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Baklýsing lyklaborðs"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Stig %1$d af %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Heimastýringar"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index b42bd95..5494b16 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -76,8 +76,7 @@
     <string name="remote_input_image_insertion_text" msgid="4850791636452521123">"è stata inviata un\'immagine"</string>
     <string name="screenshot_saving_title" msgid="2298349784913287333">"Salvataggio screenshot…"</string>
     <string name="screenshot_saving_work_profile_title" msgid="5332829607308450880">"Salvataggio screenshot nel profilo di lavoro…"</string>
-    <!-- no translation found for screenshot_saving_private_profile (8934706048497093297) -->
-    <skip />
+    <string name="screenshot_saving_private_profile" msgid="8934706048497093297">"Salvataggio screenshot nel profilo privato in corso…"</string>
     <string name="screenshot_saved_title" msgid="8893267638659083153">"Screenshot salvato"</string>
     <string name="screenshot_failed_title" msgid="3259148215671936891">"Impossibile salvare lo screenshot"</string>
     <string name="screenshot_failed_external_display_indication" msgid="6555673132061101936">"Display esterno"</string>
@@ -362,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Quali problemi ha l\'esperienza del dispositivo?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Seleziona il tipo di problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Regis. dello schermo"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Prestazioni"</item>
-    <item msgid="1627504621139124393">"Interfaccia utente"</item>
-    <item msgid="8309220355268900335">"Batteria"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Prestazioni"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Interfaccia utente"</string>
+    <string name="thermal" msgid="6758074791325414831">"Termico"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modalità a una mano"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Apparecchi acustici"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Protesi uditive"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Accoppia nuovo dispositivo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Fai clic per accoppiare un nuovo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossibile aggiornare preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Sottotitoli in tempo reale"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vuoi sbloccare il microfono del dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vuoi sbloccare la fotocamera del dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vuoi sbloccare la fotocamera e il microfono del dispositivo?"</string>
@@ -581,11 +582,11 @@
     <string name="csd_button_keep_listening" product="default" msgid="4093794049149286784">"Continua ad ascoltare"</string>
     <string name="csd_button_lower_volume" product="default" msgid="5347210412376264579">"Abbassa il volume"</string>
     <string name="screen_pinning_title" msgid="9058007390337841305">"L\'app è bloccata sullo schermo"</string>
-    <string name="screen_pinning_description" msgid="8699395373875667743">"La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Indietro e Panoramica."</string>
-    <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"La schermata rimane visibile finché non viene disattivato il blocco su schermo. Per disattivarlo, tocca e tieni premuto Indietro e Home."</string>
+    <string name="screen_pinning_description" msgid="8699395373875667743">"La schermata rimane visibile finché non viene sbloccata. Per sbloccarla, tieni premuto Indietro e Panoramica."</string>
+    <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"La schermata rimane visibile finché non viene sbloccata. Per sbloccarla, tocca e tieni premuto Indietro e Home."</string>
     <string name="screen_pinning_description_gestural" msgid="7246323931831232068">"Rimarrà visibile finché non viene sbloccata. Scorri verso l\'alto e tieni premuto per sbloccarla."</string>
-    <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Panoramica."</string>
-    <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"La schermata rimane visibile finché non viene disattivato il blocco su schermo. Per disattivarlo, tocca e tieni premuto Home."</string>
+    <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"La schermata rimane visibile finché non viene sbloccata. Per sbloccarla, tieni premuto Panoramica."</string>
+    <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"La schermata rimane visibile finché non viene sbloccata. Per sbloccarla, tocca e tieni premuto Home."</string>
     <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"I dati personali potrebbero essere accessibili (ad esempio i contatti e i contenuti delle email)."</string>
     <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"L\'app bloccata sullo schermo potrebbe aprire altre app."</string>
     <string name="screen_pinning_toast" msgid="8177286912533744328">"Per sbloccare questa app, tocca e tieni premuti i pulsanti Indietro e Panoramica"</string>
@@ -728,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Pulsante <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home page"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Indietro"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Freccia su"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Freccia giù"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Freccia sinistra"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Freccia destra"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Al centro"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Spazio"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Invio"</string>
@@ -1276,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"Piegato"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"Non piegato"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteria rimanente"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Batteria dello stilo: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connetti lo stilo a un caricabatterie"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Batteria stilo in esaurimento"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videocamera"</string>
@@ -1319,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recentemente in uso da <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"In uso da <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recentemente in uso da <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Scorciatoie app"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilità"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Scorciatoie da tastiera"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Scorciatoie per la ricerca"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icona Comprimi"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icona Espandi"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroilluminazione della tastiera"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Livello %1$d di %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controlli della casa"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 71d0c6b..2ad95fb 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"איזה חלק בחוויית השימוש שלך במכשיר הושפע?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"בחירה בסוג הבעיה"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"הקלטת המסך"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ביצועים"</item>
-    <item msgid="1627504621139124393">"ממשק משתמש"</item>
-    <item msgid="8309220355268900335">"סוללה"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"ביצועים"</string>
+    <string name="user_interface" msgid="3712869377953950887">"ממשק משתמש"</string>
+    <string name="thermal" msgid="6758074791325414831">"תרמי"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"מצב שימוש ביד אחת"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"מכשירי שמיעה"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"מכשירי שמיעה"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"התאמה של מכשיר חדש"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"צריך ללחוץ כדי להתאים מכשיר חדש"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"לא ניתן לעדכן את ההגדרה הקבועה מראש"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"הגדרה קבועה מראש"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"כתוביות מיידיות"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"לבטל את חסימת המיקרופון של המכשיר?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"לבטל את חסימת המצלמה של המכשיר?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"לבטל את חסימת המצלמה והמיקרופון של המכשיר?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"לחצן <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"דף הבית"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"הקודם"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"חץ למעלה"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"חץ למטה"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"חץ שמאלה"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"חץ ימינה"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"מרכז"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"רווח"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"מצב מקופל"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"מצב לא מקופל"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"‏%1$s‏ / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"רמת הטעינה שנותרה בסוללה: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"רמת הטעינה בסוללה של הסטיילוס: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"כדאי לחבר את הסטיילוס למטען"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"הסוללה של הסטיילוס חלשה"</string>
     <string name="video_camera" msgid="7654002575156149298">"מצלמת וידאו"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"נעשה שימוש לאחרונה על ידי <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"בשימוש על ידי <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"נעשה שימוש לאחרונה על ידי <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"מערכת"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ריבוי משימות"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"קלט"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"קיצורי דרך של אפליקציות"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"נגישות"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"מקשי קיצור"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"קיצורי דרך לחיפוש"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"סמל הכיווץ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"סמל ההרחבה"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"התאורה האחורית במקלדת"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‏רמה %1$d מתוך %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"שליטה במכשירים"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index d6dc93c..15c1f8b 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"デバイスのどの部分が影響を受けましたか?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"問題の種類を選択する"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"スクリーン レコード"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"パフォーマンス"</item>
-    <item msgid="1627504621139124393">"ユーザー インターフェース"</item>
-    <item msgid="8309220355268900335">"バッテリー"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"パフォーマンス"</string>
+    <string name="user_interface" msgid="3712869377953950887">"ユーザー インターフェース"</string>
+    <string name="thermal" msgid="6758074791325414831">"温度"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"片手モード"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"補聴器"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"補聴器"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"新しいデバイスとペア設定"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"クリックすると、新しいデバイスをペア設定できます"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"プリセットを更新できませんでした"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"プリセット"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"自動字幕起こし"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"デバイスのマイクのブロックを解除しますか?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"デバイスのカメラのブロックを解除しますか?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"デバイスのカメラとマイクのブロックを解除しますか?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> ボタン"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"戻る"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"上矢印"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"下矢印"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"左矢印"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"右矢印"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中央"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"折りたたんだ状態"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"広げた状態"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"バッテリー残量 <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"タッチペンのバッテリー残量 <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"タッチペンを充電器に接続してください"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"タッチペンのバッテリー残量が少なくなっています"</string>
     <string name="video_camera" msgid="7654002575156149298">"ビデオカメラ"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> が最近使用(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> が使用中(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> が最近使用(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"システム"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"マルチタスク"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"入力"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"アプリのショートカット"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ユーザー補助"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"キーボード ショートカット"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"検索ショートカット"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"閉じるアイコン"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"開くアイコン"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"キーボード バックライト"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"レベル %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ホーム コントロール"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 2670e45..4d17179 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"თქვენი მოწყობილობის გამოცდილების რა ნაწილზე მოხდა ზეგავლენა?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"აირჩიეთ პრობლემის ტიპი"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ეკრანის ჩანაწერი"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ეფექტურობა"</item>
-    <item msgid="1627504621139124393">"სამომხმარებლო ინტერფეისი"</item>
-    <item msgid="8309220355268900335">"ბატარეა"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"ეფექტურობა"</string>
+    <string name="user_interface" msgid="3712869377953950887">"სამომხმარებლო ინტერფეისი"</string>
+    <string name="thermal" msgid="6758074791325414831">"თერმული"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ცალი ხელის რეჟიმი"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"სმენის აპარატები"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"სმენის აპარატები"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ახალი მოწყობილობის დაწყვილება"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"დააწკაპუნეთ ახალი მოწყობილობის დასაწყვილებლად"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"წინასწარ დაყენებული პარამეტრების განახლება ვერ მოხერხდა"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"წინასწარ დაყენებული"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"პირდაპირი სუბტიტრები"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"გსურთ მოწყობილობის მიკროფონის განბლოკვა?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"გსურთ მოწყობილობის კამერის განბლოკვა?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"გსურთ მოწყობილობის კამერის და მიკროფონის განბლოკვა?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ღილაკი „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"უკან"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ზემოთ მიმართული ისარი"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ქვემოთ მიმართული ისარი"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"მარცხნივ მიმართული ისარი"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"მარჯვნივ მიმართული ისარი"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ცენტრში"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"შორისი"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"დაკეცილი"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"გაშლილი"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"დარჩენილია ბატარეის <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"სტილუსის ბატარეა <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"დააკავშირეთ თქვენი სტილუსი დამტენს"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"სტილუსის ბატარეა დაცლის პირასაა"</string>
     <string name="video_camera" msgid="7654002575156149298">"ვიდეოკამერა"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ახლახან გამოყენებულია <xliff:g id="APP_NAME">%1$s</xliff:g>-ის მიერ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"გამოიყენება <xliff:g id="APP_NAME">%1$s</xliff:g>-ის მიერ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ახლახან გამოყენებულია <xliff:g id="APP_NAME">%1$s</xliff:g>-ის მიერ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"სისტემა"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"მრავალამოცანიანი რეჟიმი"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"შეყვანა"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"აპის მალსახმობები"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"მისაწვდომობა"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"კლავიატურის მალსახმობები"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ძიების მალსახმობები"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ხატულის ჩაკეცვა"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ხატულის გაფართოება"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"კლავიატურის შენათება"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"დონე: %1$d %2$d-დან"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"სახლის კონტროლი"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index c709bbe..08e9fa2 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Құрылғы қызметінің қандай түріне әсер етті?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Мәселе түрін таңдаңыз."</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Экранды жазу"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Өнімділік"</item>
-    <item msgid="1627504621139124393">"Пайдаланушы интерфейсі"</item>
-    <item msgid="8309220355268900335">"Батарея"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бір қолмен басқару режимі"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Есту құрылғылары"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Есту құрылғылары"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Жаңа құрылғыны жұптау"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Жаңа құрылғыны жұптау үшін басыңыз."</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Параметрлер жинағын жаңарту мүмкін болмады."</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Параметрлер жинағы"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Құрылғы микрофонын блоктан шығару керек пе?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Құрылғы камерасын блоктан шығару керек пе?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Құрылғы камерасы мен микрофонын блоктан шығару керек пе?"</string>
@@ -596,7 +601,7 @@
     <string name="screen_pinning_exit" msgid="4553787518387346893">"Қолданба босатылды."</string>
     <string name="stream_voice_call" msgid="7468348170702375660">"Қоңырау шалу"</string>
     <string name="stream_system" msgid="7663148785370565134">"Жүйе"</string>
-    <string name="stream_ring" msgid="7550670036738697526">"Шылдырлау"</string>
+    <string name="stream_ring" msgid="7550670036738697526">"Шылдыр"</string>
     <string name="stream_music" msgid="2188224742361847580">"Мультимедиа"</string>
     <string name="stream_alarm" msgid="16058075093011694">"Дабыл"</string>
     <string name="stream_notification" msgid="7930294049046243939">"Хабарландыру"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> түймесі"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Артқа"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Жоғары бағыт пернесі"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Төмен бағыт пернесі"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Сол бағыт пернесі"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Оң бағыт пернесі"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Орталық"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Бос орын"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"жабық"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ашық"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Қалған батарея заряды: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Стилусты зарядтағышқа жалғаңыз."</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Стилус батареясының заряды аз"</string>
     <string name="video_camera" msgid="7654002575156149298">"Бейне­камера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Соңғы рет <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) қолданбасы пайдаланды."</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) қолданбасы пайдаланып жатыр"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Соңғы рет <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) қолданбасы пайдаланды."</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Жүйе"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Мультитаскинг"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Кіріс"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Қолданба таңбашалары"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Арнайы мүмкіндіктер"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Перне тіркесімдері"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Іздеу жылдам пәрмендері"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Жию белгішесі"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Жаю белгішесі"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Пернетақта жарығы"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Деңгей: %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Үй басқару элементтері"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 042e748..d6538bd 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"តើផ្នែកអ្វីនៃបទពិសោធប្រើប្រាស់ឧបករណ៍របស់អ្នកបានរងការប៉ះពាល់?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ជ្រើសរើសប្រភេទបញ្ហា"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ការថត​វីដេអូ​អេក្រង់"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ប្រតិបត្តិការ"</item>
-    <item msgid="1627504621139124393">"ផ្ទៃប៉ះ"</item>
-    <item msgid="8309220355268900335">"ថ្ម"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"មុខងារប្រើដៃម្ខាង"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ឧបករណ៍ជំនួយការស្ដាប់"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ឧបករណ៍ជំនួយការស្ដាប់"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ផ្គូផ្គង​ឧបករណ៍ថ្មី"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"ចុច ដើម្បីផ្គូផ្គងឧបករណ៍ថ្មី"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"មិនអាច​ប្ដូរ​ការកំណត់ជាមុន​បានទេ"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"កំណត់ជាមុន"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"អក្សររត់ក្នុងពេលជាក់ស្ដែង"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ឈប់ទប់ស្កាត់​មីក្រូហ្វូន​របស់ឧបករណ៍ឬ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ឈប់ទប់ស្កាត់​កាមេរ៉ា​របស់ឧបករណ៍ឬ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ឈប់ទប់ស្កាត់​កាមេរ៉ា និងមីក្រូហ្វូន​របស់ឧបករណ៍ឬ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ប៊ូតុង <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ព្រួញ​ឡើង​លើ"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ព្រួញ​ចុះ​ក្រោម"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ព្រួញ​ទៅឆ្វេង"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ព្រួញទៅ​ស្ដាំ"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"បត់"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"លា"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ថ្មនៅសល់ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ភ្ជាប់ប៊ិករបស់អ្នកជាមួយឆ្នាំងសាក"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ថ្មប៊ិកនៅសល់តិច"</string>
     <string name="video_camera" msgid="7654002575156149298">"កាមេរ៉ា​វីដេអូ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"បានប្រើនាពេលថ្មីៗនេះដោយ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"កំពុងប្រើដោយ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"បានប្រើនាពេលថ្មីៗនេះដោយ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ប្រព័ន្ធ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ការដំណើរការបានច្រើន"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ធាតុចូល"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ផ្លូវកាត់​កម្មវិធី"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ភាពងាយស្រួល"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"ផ្លូវកាត់​ក្ដារ​ចុច"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ផ្លូវ​កាត់ការស្វែងរក"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"រូបតំណាង \"បង្រួម\""</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"រូបតំណាង \"ពង្រីក\""</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ពន្លឺក្រោយក្ដារចុច"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"កម្រិតទី %1$d នៃ %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ការគ្រប់គ្រង​ផ្ទះ"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 8b1ab5f..92a8b6b 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ಸಾಧನ ಬಳಸುವಾಗ ನೀವು ಯಾವ ರೀತಿಯ ಸಮಸ್ಯೆ ಎದುರಿಸುತ್ತೀರಿ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ಸಮಸ್ಯೆಯ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡ್"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ಕಾರ್ಯಕ್ಷಮತೆ"</item>
-    <item msgid="1627504621139124393">"ಬಳಕೆದಾರರ ಇಂಟರ್‌ಫೇಸ್"</item>
-    <item msgid="8309220355268900335">"ಬ್ಯಾಟರಿ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ಒಂದು ಕೈ ಮೋಡ್"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ಶ್ರವಣ ಸಾಧನಗಳು"</string>
-    <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ಹಿಯರಿಂಗ್ ಸಾಧನಗಳು"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
+    <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ಶ್ರವಣ ಸಾಧನಗಳು"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ಹೊಸ ಸಾಧನವನ್ನು ಪೇರ್ ಮಾಡಿ"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"ಹೊಸ ಸಾಧನವನ್ನು ಜೋಡಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ಪ್ರಿಸೆಟ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ಪ್ರಿಸೆಟ್‌"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"ಲೈವ್ ಶೀರ್ಷಿಕೆ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ಸಾಧನದ ಮೈಕ್ರೋಫೋನ್ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯಬೇಕೆ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ಸಾಧನದ ಕ್ಯಾಮರಾ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯಬೇಕೆ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ಸಾಧನದ ಕ್ಯಾಮರಾ ಮತ್ತು ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಅನ್‍ಬ್ಲಾಕ್ ಮಾಡಬೇಕೇ?"</string>
@@ -617,7 +622,7 @@
     <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ಗದ್ದಲ ನಿಯಂತ್ರಣ"</string>
     <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ಸ್ಪೇಷಿಯಲ್ ಆಡಿಯೋ"</string>
-    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ಆಫ್ ಮಾಡಿ"</string>
+    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ಆಫ್"</string>
     <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ಫಿಕ್ಸಡ್"</string>
     <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ಹೆಡ್ ಟ್ರ್ಯಾಕಿಂಗ್"</string>
     <string name="volume_ringer_change" msgid="3574969197796055532">"ರಿಂಗರ್ ಮೋಡ್ ಬದಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> ಬಟನ್"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ಹಿಂದೆ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ಅಪ್ ಆ್ಯರೋ"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ಡೌನ್ ಆ್ಯರೋ"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ಲೆಫ್ಟ್ ಆ್ಯರೋ"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ರೈಟ್ ಆ್ಯರೋ"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ಮಧ್ಯ"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"ಸ್ಪೇಸ್"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ಫೋಲ್ಡ್ ಮಾಡಿರುವುದು"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ಅನ್‌ಫೋಲ್ಡ್ ಮಾಡಿರುವುದು"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ಬ್ಯಾಟರಿ ಉಳಿದಿದೆ"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ನಿಮ್ಮ ಸ್ಟೈಲಸ್ ಅನ್ನು ಚಾರ್ಜರ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ಸ್ಟೈಲಸ್ ಬ್ಯಾಟರಿ ಕಡಿಮೆಯಿದೆ"</string>
     <string name="video_camera" msgid="7654002575156149298">"ವೀಡಿಯೊ ಕ್ಯಾಮರಾ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ಇತ್ತೀಚೆಗೆ <xliff:g id="APP_NAME">%1$s</xliff:g> ಇದನ್ನು ಬಳಸಿದೆ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ನಿಂದ ಬಳಕೆಯಲ್ಲಿದೆ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ಇತ್ತೀಚೆಗೆ <xliff:g id="APP_NAME">%1$s</xliff:g> ಇದನ್ನು ಬಳಸಿದೆ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ಸಿಸ್ಟಂ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ಮಲ್ಟಿಟಾಸ್ಕಿಂಗ್"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ಇನ್‌ಪುಟ್"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ಆ್ಯಪ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ಹುಡುಕಾಟದ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ಕುಗ್ಗಿಸುವ ಐಕಾನ್"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ವಿಸ್ತೃತಗೊಳಿಸುವ ಐಕಾನ್"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ಕೀಬೋರ್ಡ್ ಬ್ಯಾಕ್‌ಲೈಟ್"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ರಲ್ಲಿ %1$d ಮಟ್ಟ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ಮನೆ ನಿಯಂತ್ರಣಗಳು"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 8d34d00..b141b48 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"기기 경험의 어떤 부분에 영향이 있었나요?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"문제 유형 선택"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"화면 녹화"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"성능"</item>
-    <item msgid="1627504621139124393">"사용자 인터페이스"</item>
-    <item msgid="8309220355268900335">"배터리"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"한 손 사용 모드"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"청각 보조 기기"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"청각 보조 기기"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"새 기기와 페어링"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"새 기기와 페어링하려면 클릭하세요"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"사전 설정을 업데이트할 수 없음"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"미리 설정"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"실시간 자막"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"기기 마이크를 차단 해제하시겠습니까?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"기기 카메라를 차단 해제하시겠습니까?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"기기 카메라 및 마이크를 차단 해제하시겠습니까?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 버튼"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"뒤로"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"위쪽 화살표"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"아래쪽 화살표"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"왼쪽 화살표"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"오른쪽 화살표"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"중앙"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"접은 상태"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"펼친 상태"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"배터리 <xliff:g id="PERCENTAGE">%s</xliff:g> 남음"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"스타일러스를 충전기에 연결하세요"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"스타일러스 배터리 부족"</string>
     <string name="video_camera" msgid="7654002575156149298">"비디오 카메라"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"최근 <xliff:g id="APP_NAME">%1$s</xliff:g>에서 사용됨(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 사용 중(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"최근 <xliff:g id="APP_NAME">%1$s</xliff:g>에서 사용됨(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"시스템"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"멀티태스킹"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"입력"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"앱 바로가기"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"접근성"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"단축키"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"검색 바로가기"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"접기 아이콘"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"확장 아이콘"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"키보드 백라이트"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d단계 중 %1$d단계"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"홈 컨트롤"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 975faf1..dc7227e 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Түзмөгүңүздүн кайсы бөлүгүнө кедергиси тийди?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Маселенин түрүн тандоо"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Экрандан видео жаздырып алуу"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Иштин майнаптуулугу"</item>
-    <item msgid="1627504621139124393">"Колдонуучунун интерфейси"</item>
-    <item msgid="8309220355268900335">"Батарея"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бир кол режими"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Угуу аппараттары"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Угуу аппараттары"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Жаңы түзмөк кошуу"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Жаңы түзмөк кошуу үчүн басыңыз"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Алдын ала коюлган параметрлер жаңыртылган жок"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Алдын ала коюлган параметрлер"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Ыкчам коштомо жазуулар"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Түзмөктүн микрофонун бөгөттөн чыгарасызбы?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Түзмөктүн камерасын бөгөттөн чыгарасызбы?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Түзмөктүн камерасы менен микрофону бөгөттөн чыгарылсынбы?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> баскычы"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Башкы бет"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Артка"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Өйдө жебе"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Ылдый жебе"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Солго жебе"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Оңго жебе"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Ортолотуу"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Боштук"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"бүктөлгөн"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ачылган"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Батареянын кубаты: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Стилусту кубаттаңыз"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Стилустун батареясы отурайын деп калды"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видео камера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Акыркы жолу <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) колдонмосунда иштетилди"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунда иштеп жатат (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Акыркы жолу <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) колдонмосунда иштетилди"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Система"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Бир нече тапшырма аткаруу"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Киргизүү"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Колдонмодогу кыска жолдор"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Атайын мүмкүнчүлүктөр"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Ыкчам баскычтар"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Ыкчам баскычтарды издөө"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Жыйыштыруу сүрөтчөсү"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Жайып көрсөтүү сүрөтчөсү"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Баскычтоптун жарыгы"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ичинен %1$d-деңгээл"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Үйдөгү түзмөктөрдү тескөө"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 22a64f8..5894084 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ສ່ວນໃດຂອງປະສົບການອຸປະກອນຂອງທ່ານໄດ້ຮັບຜົນກະທົບ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ເລືອກປະເພດບັນຫາ"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ບັນທຶກໜ້າຈໍ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ປະສິດທິພາບ"</item>
-    <item msgid="1627504621139124393">"ສ່ວນຕິດຕໍ່ຜູ້ໃຊ້"</item>
-    <item msgid="8309220355268900335">"ແບັດເຕີຣີ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ໂໝດມືດຽວ"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ອຸປະກອນຊ່ວຍຟັງ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ອຸປະກອນຊ່ວຍຟັງ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ຈັບຄູ່ອຸປະກອນໃໝ່"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"ຄລິກເພື່ອຈັບຄູ່ອຸປະກອນໃໝ່"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ບໍ່ສາມາດອັບເດດການຕັ້ງຄ່າລ່ວງໜ້າໄດ້"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ຄ່າທີ່ກຳນົດລ່ວງໜ້າ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"ຄຳບັນຍາຍສົດ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ປົດບລັອກໄມໂຄຣໂຟນອຸປະກອນບໍ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ປົດບລັອກກ້ອງຖ່າຍຮູບອຸ​ປະ​ກອນບໍ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ຍົກເລີກການບລັອກກ້ອງຖ່າຍຮູບ ຫຼື ໄມໂຄຣໂຟນອຸ​ປະ​ກອນບໍ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ປຸ່ມ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ກັບຄືນ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ລູກສອນຂຶ້ນ"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ລູກສອນລົງ"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ລູກສອນຊ້າຍ"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ລູກສອນຂວາ"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ເຄິ່ງກາງ"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ພັບແລ້ວ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ກາງອອກແລ້ວ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ແບັດເຕີຣີເຫຼືອ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ເຊື່ອມຕໍ່ປາກກາຂອງທ່ານກັບສາຍສາກ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ແບັດເຕີຣີປາກກາເຫຼືອໜ້ອຍ"</string>
     <string name="video_camera" msgid="7654002575156149298">"ກ້ອງວິ​ດີ​ໂອ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ໃຊ້ຫຼ້າສຸດໂດຍ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"ໃຊ້ຢູ່ໂດຍ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ໃຊ້ຫຼ້າສຸດໂດຍ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ລະບົບ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ການເຮັດຫຼາຍໜ້າວຽກພ້ອມກັນ"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ອິນພຸດ"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ທາງລັດແອັບ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ການຊ່ວຍເຂົ້າເຖິງ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"ຄີລັດ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ທາງລັດການຊອກຫາ"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ໄອຄອນຫຍໍ້ລົງ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ໄອຄອນຂະຫຍາຍ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ໄຟປຸ່ມແປ້ນພິມ"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"ລະດັບທີ %1$d ຈາກ %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ການຄວບຄຸມເຮືອນ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index bec3cc1..2c9eed8 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Kuri įrenginio funkcija buvo paveikta?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Pasirinkite problemos tipą"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekrano įrašas"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Našumas"</item>
-    <item msgid="1627504621139124393">"Naudotojo sąsaja"</item>
-    <item msgid="8309220355268900335">"Akumuliatorius"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienos rankos režimas"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Klausos įrenginiai"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Klausos įrenginiai"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Susieti naują įrenginį"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Spustelėkite, kad susietumėte naują įrenginį"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Išankstinių nustatymų atnaujinti nepavyko"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Išankstiniai nustatymai"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtitrai realiuoju laiku"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Panaikinti įrenginio mikrofono blokavimą?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Panaikinti įrenginio fotoaparato blokavimą?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Panaikinti įrenginio fotoaparato ir mikrofono blokavimą?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Mygtukas <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Pagrindinis"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Atgal"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Rodyklė aukštyn"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Rodyklė žemyn"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Rodyklė kairėn"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Rodyklė dešinėn"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centras"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Tarpas"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Įvesti"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"sulenkta"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"nesulenkta"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Liko akumuliatoriaus įkrovos: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Prijunkite rašiklį prie kroviklio"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Senka rašiklio akumuliatorius"</string>
     <string name="video_camera" msgid="7654002575156149298">"Vaizdo kamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Neseniai naudojo „<xliff:g id="APP_NAME">%1$s</xliff:g>“ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Naudoja <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Neseniai naudojo „<xliff:g id="APP_NAME">%1$s</xliff:g>“ (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Kelių užduočių atlikimas"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Įvestis"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Programos šaukiniai"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pritaikomumas"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Spartieji klavišai"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Paieškos šaukiniai"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Sutraukimo piktograma"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Išskleidimo piktograma"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatūros foninis apšvietimas"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d lygis iš %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Namų sistemos valdymas"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 001f6a0..6a5d068 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Kuras ierīces funkcijas tika ietekmētas?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Atlasiet problēmas veidu"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekrāna ierakstīšana"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Veiktspēja"</item>
-    <item msgid="1627504621139124393">"Lietotāja saskarne"</item>
-    <item msgid="8309220355268900335">"Akumulators"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienas rokas režīms"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Dzirdes aparāti"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Dzirdes aparāti"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Savienot pārī jaunu ierīci"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Noklikšķiniet, lai savienotu pārī jaunu ierīci"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Nevarēja atjaunināt pirmsiestatījumu"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Pirmsiestatījums"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtitri reāllaikā"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vai atbloķēt ierīces mikrofonu?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vai vēlaties atbloķēt ierīces kameru?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vai atbloķēt ierīces kameru un mikrofonu?"</string>
@@ -617,7 +622,7 @@
     <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Pieskarieties, lai izslēgtu skaņu."</string>
     <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Trokšņu kontrole"</string>
     <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Telpiskais audio"</string>
-    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Izslēgta"</string>
+    <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Izslēgts"</string>
     <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksēts"</string>
     <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seko galvai"</string>
     <string name="volume_ringer_change" msgid="3574969197796055532">"Pieskarieties, lai mainītu zvanītāja režīmu."</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Poga <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Sākumvietas taustiņš"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Atpakaļ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Augšupvērstā bultiņa"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Lejupvērstā bultiņa"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Kreisā bultiņa"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Labā bultiņa"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrā"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Atstarpe"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Ievadīšanas taustiņš"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"aizvērta"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"atvērta"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Atlikušais uzlādes līmenis: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Pievienojiet skārienekrāna pildspalvu lādētājam"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Zems skārienekrāna pildspalvas akumulatora līmenis"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nesen to izmantoja lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"To izmanto lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nesen to izmantoja lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistēma"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Vairākuzdevumu režīms"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ievade"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Lietotņu saīsnes"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pieejamība"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Īsinājumtaustiņi"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Meklēšanas saīsnes"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Sakļaušanas ikona"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Izvēršanas ikona"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastatūras fona apgaismojums"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Līmenis numur %1$d, kopā ir %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Mājas kontrolierīces"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 12bf568..7c41096 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Кој дел од доживувањето на уредот беше засегнат?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Изберете тип проблем"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Снимање екран"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Изведба"</item>
-    <item msgid="1627504621139124393">"Кориснички интерфејс"</item>
-    <item msgid="8309220355268900335">"Батерија"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим со една рака"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слушни апарати"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слушни апарати"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Спари нов уред"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Кликнете за да спарите нов уред"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Не можеше да се ажурира зададената вредност"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Зададени вредности"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Автоматски титлови"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Да се одблокира пристапот до микрофонот на уредот?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Да се одблокира пристапот до камерата на уредот?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Да се одблокира пристапот до камерата и микрофонот на уредот?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Копче <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home-копче"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка нагоре"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка надолу"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка налево"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка надесно"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центар"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -988,7 +988,7 @@
     <string name="magnification_close_settings_click_label" msgid="4642477260651704517">"Затворете ги поставките за зголемување"</string>
     <string name="magnification_exit_edit_mode_click_label" msgid="1664818325144887117">"Излегување од „Режим на изменување“"</string>
     <string name="magnification_drag_corner_to_resize" msgid="1249766311052418130">"Повлечете на аголот за да ја промените големината"</string>
-    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Дозволете дијагонално лизгање"</string>
+    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Дозволи дијагонално лизгање"</string>
     <string name="accessibility_resize" msgid="5733759136600611551">"Промени големина"</string>
     <string name="accessibility_change_magnification_type" msgid="666000085077432421">"Променете го типот на зголемување"</string>
     <string name="accessibility_magnification_end_resizing" msgid="4881690585800302628">"Заврши ја промената на големина"</string>
@@ -997,7 +997,7 @@
     <string name="accessibility_magnification_right_handle" msgid="9055988237319397605">"Десна рачка"</string>
     <string name="accessibility_magnification_bottom_handle" msgid="6531646968813821258">"Долна рачка"</string>
     <string name="accessibility_magnification_settings_panel_description" msgid="8174187340747846953">"Поставки за зголемување"</string>
-    <string name="accessibility_magnifier_size" msgid="3038755600030422334">"Големина на лупа"</string>
+    <string name="accessibility_magnifier_size" msgid="3038755600030422334">"Големина на лупата"</string>
     <string name="accessibility_magnification_zoom" msgid="4222088982642063979">"Зум"</string>
     <string name="accessibility_magnification_medium" msgid="6994632616884562625">"Средно"</string>
     <string name="accessibility_magnification_small" msgid="8144502090651099970">"Мало"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворен"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворен"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Преостаната батерија: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Поврзете го пенкалото со полнач"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Слаба батерија на пенкало"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видеокамера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Неодамна користено од <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Се користи од <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Неодамна користено од <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Систем"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Мултитаскинг"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Внесување"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Кратенки за апликации"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Пристапност"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Кратенки од тастатура"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Кратенки за пребарување"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за собирање"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за проширување"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Осветлување на тастатура"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d од %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Контроли за домот"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index d165242..540358c 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"നിങ്ങളുടെ ഉപകരണ അനുഭവത്തിന്‍റെ ഏത് ഭാഗമാണ് ബാധിച്ചത്?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"പ്രശ്ന തരം തിരഞ്ഞെടുക്കുക"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"സ്‌ക്രീൻ റെക്കോർഡ്"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"പ്രകടനം"</item>
-    <item msgid="1627504621139124393">"ഉപയോക്തൃ ഇന്‍റര്‍ഫേസ്"</item>
-    <item msgid="8309220355268900335">"ബാറ്ററി"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ഒറ്റക്കൈ മോഡ്"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"കേൾവിക്കുള്ള ഉപകരണങ്ങൾ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"കേൾവിക്കുള്ള ഉപകരണങ്ങൾ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"പുതിയ ഉപകരണം ജോടിയാക്കുക"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"പുതിയ ഉപകരണം ജോടിയാക്കാൻ ക്ലിക്ക് ചെയ്യുക"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"പ്രീസെറ്റ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"പ്രീസെറ്റ്"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"തത്സമയ ക്യാപ്‌ഷനുകൾ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ഉപകരണ മൈക്രോഫോൺ അൺബ്ലോക്ക് ചെയ്യണോ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ഉപകരണ ക്യാമറ അൺബ്ലോക്ക് ചെയ്യണോ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ഉപകരണ ക്യാമറയോ മൈക്രോഫോണോ അൺബ്ലോക്ക് ചെയ്യണോ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ബട്ടൺ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"ഹോം"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ബാക്ക്"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"മുകളിലേക്കുള്ള അമ്പടയാളം"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"താഴേക്കുള്ള അമ്പടയാളം"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ഇടത് അമ്പടയാളം"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"വലത് അമ്പടയാളം"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"മധ്യം"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"TAB"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"സ്പെയ്സ്"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"എന്റർ"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ഫോൾഡ് ചെയ്തത്"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"അൺഫോൾഡ് ചെയ്തത്"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ബാറ്ററി ചാർജ് ശേഷിക്കുന്നു"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"നിങ്ങളുടെ സ്റ്റൈലസ് ചാർജറുമായി കണക്റ്റ് ചെയ്യുക"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"സ്റ്റൈലസിന്റെ ബാറ്ററി ചാർജ് കുറവാണ്"</string>
     <string name="video_camera" msgid="7654002575156149298">"വീഡിയോ ക്യാമറ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) അടുത്തിടെ ഉപയോഗിച്ചു"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ഉപയോഗിക്കുന്നു"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) അടുത്തിടെ ഉപയോഗിച്ചു"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"സിസ്റ്റം"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"മൾട്ടിടാസ്‌കിംഗ്"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ഇൻപുട്ട്"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ആപ്പ് കുറുക്കുവഴികൾ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ഉപയോഗസഹായി"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"കീബോഡ് കുറുക്കുവഴികൾ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"തിരയൽ കുറുക്കുവഴികൾ"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ചുരുക്കൽ ഐക്കൺ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"വികസിപ്പിക്കൽ ഐക്കൺ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"കീബോഡ് ബാക്ക്‌ലൈറ്റ്"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-ൽ %1$d-ാമത്തെ ലെവൽ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ഹോം കൺട്രോളുകൾ"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 2a0b70a..47e6936 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Таны төхөөрөмжийн хэрэглээний аль хэсэгт нөлөөлсөн бэ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Асуудлын төрөл сонгоно уу"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Дэлгэцийн бичлэг"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Гүйцэтгэл"</item>
-    <item msgid="1627504621139124393">"Хэрэглэгчийн интерфейс"</item>
-    <item msgid="8309220355268900335">"Батарей"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Нэг гарын горим"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Сонсголын төхөөрөмжүүд"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Сонсголын төхөөрөмжүүд"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Шинэ төхөөрөмж хослуулах"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Шинэ төхөөрөмж хослуулахын тулд товшино уу"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Урьдчилсан тохируулгыг шинэчилж чадсангүй"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Урьдчилсан тохируулга"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Шууд тайлбар"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Төхөөрөмжийн микрофоныг блокоос гаргах уу?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Төхөөрөмжийн камерыг блокоос гаргах уу?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Төхөөрөмжийн камер болон микрофоныг блокоос гаргах уу?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> товчлуур"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Нүүр хуудас"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Буцах"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Дээш сум"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Доош сум"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Зүүн сум"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Баруун сум"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Гол хэсэг"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Зай"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Оруулах"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"эвхсэн"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"дэлгэсэн"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> батарей үлдлээ"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Мэдрэгч үзгээ цэнэглэгчтэй холбоорой"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Мэдрэгч үзэгний батарей бага байна"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видео камер"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Саяхан <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ашигласан"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ашиглаж байна"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Саяхан <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ашигласан"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Систем"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Олон ажил зэрэг хийх"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Оролт"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Аппын товчлол"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Хандалт"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Товчлуурын шууд холбоос"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Товчлолууд хайх"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Хураах дүрс тэмдэг"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Дэлгэх дүрс тэмдэг"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Гарын арын гэрэл"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-с %1$d-р түвшин"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Гэрийн удирдлага"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 017a6c8..39f1413 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"तुमच्या डिव्हाइसबाबत कोणत्या अनुभवावर परिणाम झाला?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"समस्येचा प्रकार निवडा"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"स्क्रीन रेकॉर्ड"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"परफॉर्मन्स"</item>
-    <item msgid="1627504621139124393">"यूझर इंटरफेस"</item>
-    <item msgid="8309220355268900335">"बॅटरी"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"परफॉर्मन्स"</string>
+    <string name="user_interface" msgid="3712869377953950887">"यूझर इंटरफेस"</string>
+    <string name="thermal" msgid="6758074791325414831">"थर्मल"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"एकहाती मोड"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"श्रवणयंत्रे"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"श्रवणयंत्रे"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"नवीन डिव्हाइस पेअर करा"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"नवीन डिव्हाइस पेअर करण्यासाठी क्लिक करा"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रीसेट अपडेट करता आले नाही"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"प्रीसेट"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"लाइव्ह कॅप्शन"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"डिव्हाइसचा मायक्रोफोन अनब्लॉक करायचा आहे का?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"डिव्हाइसचा कॅमेरा अनब्लॉक करायचा आहे का?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"डिव्हाइसचा कॅमेरा आणि मायक्रोफोन अनब्लॉक करायचा आहे का?"</string>
@@ -594,9 +596,9 @@
     <string name="screen_pinning_negative" msgid="6882816864569211666">"नाही, नको"</string>
     <string name="screen_pinning_start" msgid="7483998671383371313">"ॲप पिन केले"</string>
     <string name="screen_pinning_exit" msgid="4553787518387346893">"ॲप अनपिन केले"</string>
-    <string name="stream_voice_call" msgid="7468348170702375660">"कॉल करा"</string>
+    <string name="stream_voice_call" msgid="7468348170702375660">"कॉल"</string>
     <string name="stream_system" msgid="7663148785370565134">"सिस्टम"</string>
-    <string name="stream_ring" msgid="7550670036738697526">"रिंग करा"</string>
+    <string name="stream_ring" msgid="7550670036738697526">"रिंग"</string>
     <string name="stream_music" msgid="2188224742361847580">"मीडिया"</string>
     <string name="stream_alarm" msgid="16058075093011694">"अलार्म"</string>
     <string name="stream_notification" msgid="7930294049046243939">"सूचना"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"बटण <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"परत"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप अ‍ॅरो"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन अ‍ॅरो"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ्ट अ‍ॅरो"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट अ‍ॅरो"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"मध्यवर्ती"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"फोल्ड केलेले"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"फोल्ड न केलेले"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> बॅटरी शिल्लक आहे"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"स्टायलस बॅटरी <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"तुमचे स्टायलस चार्जरशी कनेक्ट करा"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"स्टायलस बॅटरी कमी आहे"</string>
     <string name="video_camera" msgid="7654002575156149298">"व्हिडिओ कॅमेरा"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"अलीकडे <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ने वापरले"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) द्वारे वापरले जात आहे"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"अलीकडे <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ने वापरले"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"सिस्टीम"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"मल्टिटास्किंग"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"अ‍ॅप शॉर्टकट"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"अ‍ॅक्सेसिबिलिटी"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"शोधण्यासाठी शॉर्टकट"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"कोलॅप्स करा आयकन"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"विस्तार करा आयकन"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"कीबोर्ड बॅकलाइट"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d पैकी %1$d पातळी"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 23e4559..8fce993 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -361,24 +361,29 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Pengalaman peranti yang manakah yang terjejas?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Pilih jenis masalah"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Rakam skrin"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Prestasi"</item>
-    <item msgid="1627504621139124393">"Antara Muka Pengguna"</item>
-    <item msgid="8309220355268900335">"Bateri"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mod sebelah tangan"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Peranti pendengaran"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Peranti pendengaran"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Gandingkan peranti baharu"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klik untuk menggandingkan peranti baharu"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Tidak dapat mengemaskinikan pratetapan"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Pratetapan"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Sari Kata Langsung"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Nyahsekat mikrofon peranti?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Nyahsekat kamera peranti?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Nyahsekat kamera dan mikrofon peranti?"</string>
-    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan mikrofon anda."</string>
-    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan kamera anda."</string>
+    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan mikrofon."</string>
+    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan kamera."</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan kamera atau mikrofon anda."</string>
     <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon disekat"</string>
     <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera disekat"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Butang <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Skrin Utama"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Kembali"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Anak panah ke atas"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Anak panah ke bawah"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Anak panah ke kiri"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Anak panah ke kanan"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Tengah"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -933,7 +933,7 @@
     <string name="running_foreground_services_title" msgid="5137313173431186685">"Apl yang berjalan di latar belakang"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"Ketik untuk mendapatkan butiran tentang penggunaan kuasa bateri dan data"</string>
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Matikan data mudah alih?"</string>
-    <string name="mobile_data_disable_message" msgid="8604966027899770415">"Anda tidak akan mempunyai akses kepada data atau Internet melalui <xliff:g id="CARRIER">%s</xliff:g>. Internet hanya tersedia melaui Wi-Fi."</string>
+    <string name="mobile_data_disable_message" msgid="8604966027899770415">"Anda tidak akan dapat mengakses data atau Internet melalui <xliff:g id="CARRIER">%s</xliff:g>. Internet hanya akan tersedia melalui Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"pembawa anda"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Tukar kembali kepada <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Data mudah alih tidak akan ditukar secara automatik berdasarkan ketersediaan"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"terlipat"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"tidak terlipat"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateri tinggal <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Sambungkan stilus anda kepada pengecas"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateri stilus lemah"</string>
     <string name="video_camera" msgid="7654002575156149298">"Kamera video"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Digunakan baru-baru ini oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Digunakan oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Digunakan baru-baru ini oleh <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Berbilang tugas"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Pintasan apl"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kebolehaksesan"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan papan kekunci"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pintasan carian"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Kuncupkan ikon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Kembangkan ikon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Cahaya latar papan kekunci"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Tahap %1$d daripada %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kawalan Rumah"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index c3c4205..9264261 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"စက်အသုံးပြုမှု၏ မည်သည့်အပိုင်းကို သက်ရောက်သလဲ။"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ပြဿနာအမျိုးအစား ရွေးရန်"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ဖန်သားပြင်ရိုက်ကူးရန်"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"စွမ်းဆောင်ရည်"</item>
-    <item msgid="1627504621139124393">"သုံးသူအတွက် ကြားခံစနစ်"</item>
-    <item msgid="8309220355268900335">"ဘက်ထရီ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"လက်တစ်ဖက်သုံးမုဒ်"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"နားကြားကိရိယာ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"နားကြားကိရိယာ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"စက်အသစ်တွဲချိတ်ရန်"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"စက်အသစ် တွဲချိတ်ရန် နှိပ်ပါ"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"အသင့်သုံးကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ကြိုတင်သတ်မှတ်ချက်"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"တိုက်ရိုက်စာတန်း"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"စက်၏မိုက်ခရိုဖုန်းကို ပြန်ဖွင့်မလား။"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"စက်၏ကင်မရာကို ပြန်ဖွင့်မလား။"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"စက်၏ကင်မရာနှင့် မိုက်ခရိုဖုန်းကို ပြန်ဖွင့်မလား။"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ခလုတ် <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"ပင်မ"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"နောက်သို့"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"အပေါ်ညွှန်မြား"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"အောက်ညွှန်မြား"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ဘယ်ညွှန်မြား"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ညာညွှန်မြား"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ဌာန"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter ခလုတ်"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ခေါက်ထားသည်"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ဖြန့်ထားသည်"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ဘက်ထရီ <xliff:g id="PERCENTAGE">%s</xliff:g> ကျန်သေးသည်"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"စတိုင်လပ်စ်ကို အားသွင်းကိရိယာနှင့် ချိတ်ဆက်ခြင်း"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"စတိုင်လပ်စ် ဘက်ထရီ အားနည်းနေသည်"</string>
     <string name="video_camera" msgid="7654002575156149298">"ဗီဒီယိုကင်မရာ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) က လတ်တလောသုံးထားသည်"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) က သုံးနေသည်"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) က လတ်တလောသုံးထားသည်"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"စနစ်"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"တစ်ပြိုင်နက် များစွာလုပ်ခြင်း"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ထည့်သွင်းမှု"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"အက်ပ်ဖြတ်လမ်းလင့်ခ်များ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"အများသုံးနိုင်မှု"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"လက်ကွက်ဖြတ်လမ်းများ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ရှာဖွေစာလုံး ဖြတ်လမ်း"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"လျှော့ပြရန် သင်္ကေတ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ပိုပြရန် သင်္ကေတ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ကီးဘုတ်နောက်မီး"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"အဆင့် %2$d အနက် %1$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"အိမ်ထိန်းချုပ်မှုများ"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index dbcfaa3..9c2193e 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Hvilken del av enhetsopplevelsen din ble påvirket?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Velg problemtype"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Skjermopptak"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Ytelse"</item>
-    <item msgid="1627504621139124393">"Brukergrensesnitt"</item>
-    <item msgid="8309220355268900335">"Batteri"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndsmodus"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Høreapparater"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Høreapparater"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Koble til en ny enhet"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klikk for å koble til en ny enhet"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Kunne ikke oppdatere forhåndsinnstillingen"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forhåndsinnstilling"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Direkteteksting"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du oppheve blokkeringen av enhetsmikrofonen?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vil du oppheve blokkeringen av enhetskameraet?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vil du oppheve blokkeringen av enhetskameraet og -mikrofonen?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>-knappen"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Startskjerm"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Tilbake"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Oppoverpil"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Nedoverpil"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Venstrepil"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Høyrepil"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midttasten"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Mellomrom"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"lagt sammen"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"åpen"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteri gjenstår"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Koble pekepennen til en lader"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Det er lite batteri i pekepennen"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nylig brukt av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"I bruk av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nylig brukt av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Inndata"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-snarveier"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tilgjengelighet"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Hurtigtaster"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Snarveier til søk"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Skjul-ikon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Vis-ikon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Bakgrunnslys for tastatur"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Hjemkontroller"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index aa7e314..94b197b 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"तपाईंको डिभाइसको कुन चाहिँ सुविधा प्रभावित भएको छ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"समस्याको प्रकार चयन गर्नुहोस्"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"स्क्रिन रेकर्ड"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"पर्फर्मेन्स"</item>
-    <item msgid="1627504621139124393">"युजर इन्टरफेस"</item>
-    <item msgid="8309220355268900335">"ब्याट्री"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"एक हाते मोड"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"हियरिङ डिभाइसहरू"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"हियरिङ डिभाइसहरू"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"नयाँ डिभाइस कनेक्ट गर्नुहोस्"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"नयाँ डिभाइसमा कनेक्ट गर्न क्लिक गर्नुहोस्"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रिसेट अपडेट गर्न सकिएन"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"पूर्वनिर्धारित"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"लाइभ क्याप्सन"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"डिभाइसको माइक्रोफोन अनब्लक गर्ने हो?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"डिभाइसको क्यामेरा अनब्लक गर्ने हो?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"डिभाइसको क्यामेरा र माइक्रोफोन अनब्लक गर्ने हो?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> बटन"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"पछाडि"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप एरो"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन एरो"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ्ट एरो"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट एरो"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"केन्द्र"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"स्पेस"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"फोल्ड गरिएको"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"अनफोल्ड गरिएको"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ब्याट्री बाँकी छ"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"आफ्नो स्टाइलस चार्जरमा कनेक्ट गर्नुहोस्"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"स्टाइलसको ब्याट्री लो छ"</string>
     <string name="video_camera" msgid="7654002575156149298">"भिडियो क्यामेरा"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ले हालसालै प्रयोग गरेको"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ले प्रयोग गरिरहेको छ"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ले हालसालै प्रयोग गरेको"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"सिस्टम"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"एकै पटक एकभन्दा बढी एप चलाउन मिल्ने सुविधा"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"एपका सर्टकटहरू"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सर्वसुलभता"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"किबोर्डका सर्टकटहरू"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"खोजका सर्टकटहरू"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"\"कोल्याप्स गर्नुहोस्\" आइकन"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"\"एक्स्पान्ड गर्नुहोस्\" आइकन"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"किबोर्ड ब्याकलाइट"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d मध्ये %1$d औँ स्तर"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"होम कन्ट्रोलहरू"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 3b460e5..8cdbf61 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Op welk onderdeel van de apparaatfunctionaliteit had dit effect?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Probleemtype selecteren"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Schermopname"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Prestaties"</item>
-    <item msgid="1627504621139124393">"Gebruikersinterface"</item>
-    <item msgid="8309220355268900335">"Batterij"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Prestaties"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Gebruikersinterface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermisch"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Bediening met 1 hand"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hoortoestellen"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hoortoestellen"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Nieuw apparaat koppelen"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klik om nieuw apparaat te koppelen"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Kan voorinstelling niet updaten"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voorinstelling"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live ondertiteling"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Microfoon van apparaat niet meer blokkeren?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Apparaatcamera niet meer blokkeren?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Blokkeren van apparaatcamera en -microfoon opheffen?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Knop <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Terug"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pijl-omhoog"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pijl-omlaag"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Pijl-links"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Pijl-rechts"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midden"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Spatiebalk"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1201,7 +1198,7 @@
     <string name="wifi_wont_autoconnect_for_now" msgid="5782282612749867762">"Wifi maakt momenteel niet automatisch verbinding"</string>
     <string name="see_all_networks" msgid="3773666844913168122">"Alles tonen"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Verbreek de ethernetverbinding om van netwerk te wisselen"</string>
-    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Apps en services kunnen nog steeds op elk gewenst moment zoeken naar apparaten in de buurt om de apparaatfunctionaliteit te verbeteren, zelfs als bluetooth uitstaat. Je kunt dit aanpassen in de instellingen voor wifi-scannen. "<annotation id="link">"Wijzigen"</annotation></string>
+    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Voor een betere apparaatfunctionaliteit kunnen apps en services nog steeds op elk moment zoeken naar wifi-netwerken, zelfs als wifi uitstaat. Je kunt dit aanpassen in de instellingen voor wifi-scannen. "<annotation id="link">"Wijzigen"</annotation></string>
     <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Vliegtuigmodus uitzetten"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> wil de volgende tegel toevoegen aan Snelle instellingen"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Tegel toevoegen"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"dichtgevouwen"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"opengevouwen"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Nog <xliff:g id="PERCENTAGE">%s</xliff:g> batterijlading"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stylusbatterij <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Verbind je stylus met een oplader"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Batterij van stylus bijna leeg"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video­camera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Recent gebruikt door <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Gebruikt door <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Recent gebruikt door <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Systeem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Invoer"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-snelkoppelingen"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toegankelijkheid"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Sneltoetsen"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Snelkoppelingen voor zoekopdrachten"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icoon voor samenvouwen"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icoon voor uitvouwen"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Achtergrondverlichting van toetsenbord"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d van %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Huisbediening"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 29a5e73..287d1a7 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ଆପଣଙ୍କ ଡିଭାଇସ ଅନୁଭୂତିର କେଉଁ ଅଂଶ ପ୍ରଭାବିତ ହୋଇଛି?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ସମସ୍ୟାର ପ୍ରକାର ଚୟନ କରନ୍ତୁ"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ସ୍କ୍ରିନ ରେକର୍ଡ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ପରଫରମାନ୍ସ"</item>
-    <item msgid="1627504621139124393">"ୟୁଜର ଇଣ୍ଟରଫେସ"</item>
-    <item msgid="8309220355268900335">"ବେଟେରୀ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ଏକ-ହାତ ମୋଡ"</string>
-    <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ହିଅରିଂ ଡିଭାଇସଗୁଡ଼ିକ"</string>
-    <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ହିଅରିଂ ଡିଭାଇସଗୁଡ଼ିକ"</string>
+    <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
+    <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ନୂଆ ଡିଭାଇସ ପେୟାର କରନ୍ତୁ"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"ନୂଆ ଡିଭାଇସ ପେୟାର କରିବାକୁ କ୍ଲିକ କରନ୍ତୁ"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ପ୍ରିସେଟକୁ ଅପଡେଟ କରାଯାଇପାରିଲା ନାହିଁ"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ପ୍ରିସେଟ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"ଲାଇଭ କେପ୍ସନ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ଡିଭାଇସର ମାଇକ୍ରୋଫୋନକୁ ଅନବ୍ଲକ କରିବେ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ଡିଭାଇସର କେମେରାକୁ ଅନବ୍ଲକ କରିବେ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ଡିଭାଇସର କ୍ୟାମେରା ଏବଂ ମାଇକ୍ରୋଫୋନକୁ ଅନବ୍ଲକ୍ କରିବେ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ବଟନ୍‍ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"ହୋମ"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ଫେରନ୍ତୁ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ଅପ ତୀର କୀ"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ଡାଉନ ଆରୋ"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ବାମ ତୀର କୀ"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ଡାହାଣ ତୀର କୀ"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"କେନ୍ଦ୍ର"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"ସ୍ପେସ୍‍"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"ଏଣ୍ଟର୍"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ଫୋଲ୍ଡେଡ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ଅନଫୋଲ୍ଡେଡ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ବେଟେରୀ ଚାର୍ଜ ବାକି ଅଛି"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ଏକ ଚାର୍ଜର ସହ ଆପଣଙ୍କ ଷ୍ଟାଇଲସକୁ କନେକ୍ଟ କରନ୍ତୁ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ଷ୍ଟାଇଲସ ବେଟେରୀର ଚାର୍ଜ କମ ଅଛି"</string>
     <string name="video_camera" msgid="7654002575156149298">"ଭିଡିଓ କେମେରା"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ଏବେ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଛି"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଛି (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ଏବେ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଛି"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ସିଷ୍ଟମ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ମଲ୍ଟିଟାସ୍କିଂ"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ଇନପୁଟ"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ଆପ ସର୍ଟକଟ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ଆକ୍ସେସିବିଲିଟୀ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"କୀବୋର୍ଡ ସର୍ଟକଟ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ସର୍ଚ୍ଚ ସର୍ଟକଟ"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ଆଇକନକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ଆଇକନକୁ ବିସ୍ତାର କରନ୍ତୁ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"କୀବୋର୍ଡ ବେକଲାଇଟ"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dରୁ %1$d ନମ୍ବର ଲେଭେଲ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ହୋମ କଣ୍ଟ୍ରୋଲ୍ସ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 6245575..a16a8a5 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਕਿਹੜੀ ਸੁਵਿਧਾ ਪ੍ਰਭਾਵਿਤ ਹੋਈ ਸੀ?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ਸਮੱਸਿਆ ਦੀ ਕਿਸਮ ਚੁਣੋ"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ਕਾਰਗੁਜ਼ਾਰੀ"</item>
-    <item msgid="1627504621139124393">"ਯੂਜ਼ਰ ਇੰਟਰਫ਼ੇਸ"</item>
-    <item msgid="8309220355268900335">"ਬੈਟਰੀ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ਇੱਕ ਹੱਥ ਮੋਡ"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ਸੁਣਨ ਵਾਲੇ ਡੀਵਾਈਸ"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ਸੁਣਨ ਵਾਲੇ ਡੀਵਾਈਸ"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"\'ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ\' \'ਤੇ ਕਲਿੱਕ ਕਰੋ"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ਪ੍ਰੀਸੈੱਟ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ਪ੍ਰੀਸੈੱਟ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"ਲਾਈਵ ਸੁਰਖੀਆਂ"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ਕੀ ਡੀਵਾਈਸ ਦੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਨੂੰ ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ਕੀ ਡੀਵਾਈਸ ਦੇ ਕੈਮਰੇ ਨੂੰ ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ਕੀ ਡੀਵਾਈਸ ਦੇ ਕੈਮਰੇ ਅਤੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਨੂੰ ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ਬਟਨ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ਉੱਪਰ ਤੀਰ"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ਹੇਠਾਂ ਤੀਰ"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ਖੱਬਾ ਤੀਰ"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ਸੱਜਾ ਤੀਰ"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ਫੋਲਡਯੋਗ ਡੀਵਾਈਸ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ਅਣਫੋਲਡਯੋਗ ਡੀਵਾਈਸ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ਬੈਟਰੀ ਬਾਕੀ"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ਆਪਣੇ ਸਟਾਈਲਸ ਨੂੰ ਚਾਰਜਰ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ਸਟਾਈਲਸ ਦੀ ਬੈਟਰੀ ਘੱਟ ਹੈ"</string>
     <string name="video_camera" msgid="7654002575156149298">"ਵੀਡੀਓ ਕੈਮਰਾ"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ਹਾਲ ਹੀ ਵਿੱਚ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ਵੱਲੋਂ ਵਰਤਿਆ ਗਿਆ"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ਵੱਲੋਂ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ਹਾਲ ਹੀ ਵਿੱਚ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ਵੱਲੋਂ ਵਰਤਿਆ ਗਿਆ"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ਸਿਸਟਮ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ਮਲਟੀਟਾਸਕਿੰਗ"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ਇਨਪੁੱਟ"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ਐਪ ਸ਼ਾਰਟਕੱਟ"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ਪਹੁੰਚਯੋਗਤਾ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ਖੋਜ ਸੰਬੰਧੀ ਸ਼ਾਰਟਕੱਟ"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ਪ੍ਰਤੀਕ ਨੂੰ ਸਮੇਟੋ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ਪ੍ਰਤੀਕ ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ਕੀ-ਬੋਰਡ ਬੈਕਲਾਈਟ"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ਵਿੱਚੋਂ %1$d ਪੱਧਰ"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ਹੋਮ ਕੰਟਰੋਲ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index e8e6f09..58561f1 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Którego aspektu korzystania z urządzenia dotyczył problem?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Wybierz typ problemu"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Nagrywanie ekranu"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Wydajność"</item>
-    <item msgid="1627504621139124393">"Interfejs"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Wydajność"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Interfejs"</string>
+    <string name="thermal" msgid="6758074791325414831">"Termografia"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Tryb jednej ręki"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Urządzenia słuchowe"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Urządzenia słuchowe"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Sparuj nowe urządzenie"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknij, aby sparować nowe urządzenie"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Nie udało się zaktualizować gotowego ustawienia"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Gotowe ustawienie"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Napisy na żywo"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokować mikrofon urządzenia?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Odblokować aparat urządzenia?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Odblokować aparat i mikrofon urządzenia?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Przycisk <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Wstecz"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strzałka w górę"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strzałka w dół"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strzałka w lewo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strzałka w prawo"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Do środka"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Spacja"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -877,7 +874,7 @@
     <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otwórz ustawienia."</string>
     <string name="accessibility_quick_settings_expand" msgid="2609275052412521467">"Otwórz szybkie ustawienia."</string>
     <string name="accessibility_quick_settings_collapse" msgid="4674876336725041982">"Zamknij szybkie ustawienia."</string>
-    <string name="accessibility_quick_settings_user" msgid="505821942882668619">"Zalogowany użytkownik: <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_user" msgid="505821942882668619">"Używasz konta: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"wybrać użytkownika"</string>
     <string name="data_connection_no_internet" msgid="691058178914184544">"Brak internetu"</string>
     <string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otwórz ustawienia: <xliff:g id="ID_1">%s</xliff:g>."</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"po zamknięciu"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"po otwarciu"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Pozostało <xliff:g id="PERCENTAGE">%s</xliff:g> baterii"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Bateria rysika: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Podłącz rysik do ładowarki"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Słaba bateria w rysiku"</string>
     <string name="video_camera" msgid="7654002575156149298">"Kamera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Ostatnio używany przez aplikację <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Używany przez aplikację <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Ostatnio używany przez aplikację <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Wielozadaniowość"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Wprowadzanie"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Skróty do aplikacji"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ułatwienia dostępu"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Skróty klawiszowe"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Skróty do wyszukiwania"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zwijania"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozwijania"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podświetlenie klawiatury"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Poziom %1$d z %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Sterowanie domem"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index e72b45a..8f5c519 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Que parte da sua experiência no dispositivo foi afetada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecionar tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Gravação de tela"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Desempenho"</item>
-    <item msgid="1627504621139124393">"Interface do usuário"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo uma mão"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Aparelhos auditivos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Aparelhos auditivos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Parear novo dispositivo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Clique para parear o novo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Legenda instantânea"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Desbloquear o microfone do dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Desbloquear a câmera do dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Desbloquear a câmera e o microfone do dispositivo?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botão <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Voltar"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Seta para cima"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Seta para baixo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Seta para a esquerda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Seta para a direita"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centralizar"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -789,8 +789,8 @@
     <string name="system_multitasking_rhs" msgid="8714224917276297810">"Usar a tela dividida com o aplicativo atual à direita"</string>
     <string name="system_multitasking_lhs" msgid="8402954791206308783">"Usar a tela dividida com o app atual à esquerda"</string>
     <string name="system_multitasking_full_screen" msgid="336048080383640562">"Mudar da tela dividida para a tela cheia"</string>
-    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mude para o app à direita ou abaixo ao usar a tela dividida"</string>
-    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mude para o app à esquerda ou acima ao usar a tela dividida"</string>
+    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string>
+    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string>
     <string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string>
     <string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Entrada"</string>
     <string name="input_switch_input_language_next" msgid="3782155659868227855">"Mudar para o próximo idioma"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"fechado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aberto"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateria restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecte sua stylus a um carregador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateria da stylus fraca"</string>
     <string name="video_camera" msgid="7654002575156149298">"Filmadora"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Usado recentemente pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Em uso pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Usado recentemente pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitarefas"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone \"Fechar\""</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone \"Abrir\""</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 1912b7e..df73572 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Que parte da experiência do disposit. foi afetada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecione o tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Gravação de ecrã"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Desempenho"</item>
-    <item msgid="1627504621139124393">"Interface do utilizador"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Desempenho"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Interface do utilizador"</string>
+    <string name="thermal" msgid="6758074791325414831">"Térmico"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo para uma mão"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Dispositivos auditivos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Dispositivos auditivos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Sincronizar novo dispositivo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Clique para sincronizar um novo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Legendas instantâneas"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Desbloquear o microfone do dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Desbloquear a câmara do dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Quer desbloquear a câmara e o microfone?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botão <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Início"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Anterior"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Seta para cima"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Seta para baixo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Seta para a esquerda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Seta para a direita"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Ao centro"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Espaço"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -988,7 +985,7 @@
     <string name="magnification_close_settings_click_label" msgid="4642477260651704517">"Fechar definições de ampliação"</string>
     <string name="magnification_exit_edit_mode_click_label" msgid="1664818325144887117">"Sair do modo de edição"</string>
     <string name="magnification_drag_corner_to_resize" msgid="1249766311052418130">"Arrastar o canto para redimensionar"</string>
-    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Permitir deslocamento da página na diagonal"</string>
+    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"Permitir deslocamento diagonal"</string>
     <string name="accessibility_resize" msgid="5733759136600611551">"Redimensionar"</string>
     <string name="accessibility_change_magnification_type" msgid="666000085077432421">"Alterar tipo de ampliação"</string>
     <string name="accessibility_magnification_end_resizing" msgid="4881690585800302628">"Terminar redimensionamento"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"fechado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aberto"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de bateria restante"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Bateria da caneta stylus a <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ligue a caneta stylus a um carregador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateria da caneta stylus fraca"</string>
     <string name="video_camera" msgid="7654002575156149298">"Câmara de vídeo"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Usado recentemente pela app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Em utilização pela app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Usado recentemente pela app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Execução de várias tarefas em simultâneo"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos de teclado"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone de reduzir"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone de expandir"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Controlos domésticos"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index e72b45a..8f5c519 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Que parte da sua experiência no dispositivo foi afetada?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selecionar tipo de problema"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Gravação de tela"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Desempenho"</item>
-    <item msgid="1627504621139124393">"Interface do usuário"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo uma mão"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Aparelhos auditivos"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Aparelhos auditivos"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Parear novo dispositivo"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Clique para parear o novo dispositivo"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Legenda instantânea"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Desbloquear o microfone do dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Desbloquear a câmera do dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Desbloquear a câmera e o microfone do dispositivo?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Botão <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Voltar"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Seta para cima"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Seta para baixo"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Seta para a esquerda"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Seta para a direita"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centralizar"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -789,8 +789,8 @@
     <string name="system_multitasking_rhs" msgid="8714224917276297810">"Usar a tela dividida com o aplicativo atual à direita"</string>
     <string name="system_multitasking_lhs" msgid="8402954791206308783">"Usar a tela dividida com o app atual à esquerda"</string>
     <string name="system_multitasking_full_screen" msgid="336048080383640562">"Mudar da tela dividida para a tela cheia"</string>
-    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mude para o app à direita ou abaixo ao usar a tela dividida"</string>
-    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mude para o app à esquerda ou acima ao usar a tela dividida"</string>
+    <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string>
+    <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string>
     <string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string>
     <string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Entrada"</string>
     <string name="input_switch_input_language_next" msgid="3782155659868227855">"Mudar para o próximo idioma"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"fechado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aberto"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateria restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecte sua stylus a um carregador"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateria da stylus fraca"</string>
     <string name="video_camera" msgid="7654002575156149298">"Filmadora"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Usado recentemente pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Em uso pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Usado recentemente pelo app <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitarefas"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone \"Fechar\""</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone \"Abrir\""</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index b6614c6..366480e 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Ce parte a experienței pe dispozitiv a fost afectată?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Selectează tipul problemei"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Înregistrarea ecranului"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performanță"</item>
-    <item msgid="1627504621139124393">"Interfața de utilizare"</item>
-    <item msgid="8309220355268900335">"Baterie"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modul cu o mână"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Aparate auditive"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Aparate auditive"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Asociază un nou dispozitiv"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Dă clic pentru a asocia un nou dispozitiv"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Nu s-a putut actualiza presetarea"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Presetare"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Subtitrări live"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblochezi microfonul dispozitivului?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Deblochezi camera dispozitivului?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Deblochezi camera și microfonul dispozitivului?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Butonul <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"La început"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Înapoi"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Săgeată în sus"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Săgeată în jos"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Săgeată spre stânga"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Săgeată spre dreapta"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"În centru"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Spațiu"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"închis"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"deschis"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> baterie rămasă"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conectează-ți creionul la un încărcător"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Nivelul bateriei creionului este scăzut"</string>
     <string name="video_camera" msgid="7654002575156149298">"Cameră video"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Folosit recent de <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Se folosește pentru <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Folosit recent de <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Intrare"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Comenzi rapide pentru aplicații"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilitate"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Comenzi rapide de la tastatură"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Comenzi directe de căutare"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Pictograma de restrângere"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Pictograma de extindere"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Iluminarea din spate a tastaturii"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivelul %1$d din %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Comenzi pentru locuință"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index d6fa6ab..f48e428 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -361,24 +361,29 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"С чем связана проблема, с которой вы столкнулись?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Выберите тип проблемы"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Запись экрана"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Производительность"</item>
-    <item msgid="1627504621139124393">"Интерфейс"</item>
-    <item msgid="8309220355268900335">"Батарея"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим управления одной рукой"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слуховые аппараты"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слуховые аппараты"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Подключить новое устройство"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Нажмите, чтобы подключить новое устройство"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Не удалось обновить набор настроек."</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набор настроек"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Автоматические субтитры"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Разблокировать микрофон устройства?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Разблокировать камеру устройства?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Разблокировать камеру и микрофон устройства?"</string>
-    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование микрофона."</string>
-    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование камеры."</string>
+    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Все приложения и сервисы, у которых есть разрешение на использование микрофона, получат к нему доступ."</string>
+    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Все приложения и сервисы, у которых есть разрешение на использование камеры, получат к ней доступ."</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование камеры или микрофона."</string>
     <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофон заблокирован"</string>
     <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера заблокирована"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Главный экран"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка вверх"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка вниз"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка влево"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка вправо"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центральная стрелка"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Пробел"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Ввод"</string>
@@ -932,8 +932,8 @@
     <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"Режим \"Не беспокоить\" был включен специальным правилом или приложением."</string>
     <string name="running_foreground_services_title" msgid="5137313173431186685">"Приложения, работающие в фоновом режиме"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"Нажмите, чтобы проверить энергопотребление и трафик"</string>
-    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Отключить мобильный Интернет?"</string>
-    <string name="mobile_data_disable_message" msgid="8604966027899770415">"Вы не сможете передавать данные или выходить в Интернет через оператора \"<xliff:g id="CARRIER">%s</xliff:g>\". Интернет будет доступен только по сети Wi-Fi."</string>
+    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Отключить мобильный интернет?"</string>
+    <string name="mobile_data_disable_message" msgid="8604966027899770415">"Вы не сможете передавать данные или выходить в интернет через оператора \"<xliff:g id="CARRIER">%s</xliff:g>\". Интернет будет доступен только по сети Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"ваш оператор"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Переключиться на сеть \"<xliff:g id="CARRIER">%s</xliff:g>\"?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Мобильный интернет не будет переключаться автоматически."</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"устройство сложено"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"устройство разложено"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Уровень заряда батареи: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Поставьте стилус на зарядку."</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Низкий заряд батареи стилуса"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видеокамера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Недавно использовалось приложением \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Сейчас используется приложением \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Недавно использовалось приложением \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Система"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Многозадачность"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ввод"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ярлыки приложений"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Специальные возможности"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Быстрые клавиши"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Найти быстрые клавиши"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок \"Свернуть\""</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок \"Развернуть\""</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Подсветка клавиатуры"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Уровень %1$d из %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Управление домом"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 3de4225..0e621c6 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ඔබේ උපාංග අත්දැකීමේ කුමන කොටසට බලපෑවේ ද?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"ගැටලු වර්ගය තෝරන්න"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"තිර පටිගත කිරීම"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"කාර්ය සාධනය"</item>
-    <item msgid="1627504621139124393">"පරිශීලක අතුරු මුහුණත"</item>
-    <item msgid="8309220355268900335">"බැටරිය"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"තනි අත් ප්‍රකාරය"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"ශ්‍රවණ උපාංග"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"ශ්‍රවණ උපාංග"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"නව උපාංගය යුගල කරන්න"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"නව උපාංගය යුගල කිරීමට ක්ලික් කරන්න"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"පෙර සැකසීම යාවත්කාලීන කළ නොහැකි විය"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"පෙරසැකසුම"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"සජීවී සිරස්තලය"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"උපාංග මයික්‍රෆෝනය අවහිර කිරීම ඉවත් කරන්නද?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"උපාංග කැමරාව අවහිර කිරීම ඉවත් කරන්නද?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"උපාංග කැමරාව සහ මයික්‍රෆෝනය අවහිර කිරීම ඉවත් කරන්නද?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> බොත්තම"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home යතුර"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"ආපසු"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ඉහළ ඊතලය"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"පහළ ඊතලය"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"වම් ඊතලය"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"දකුණු ඊතලය"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"මැද"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"ඉඩ යතුර"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter යතුර"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"නැවූ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"නොනැවූ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> බැටරිය ඉතිරිව ඇත"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ඔබේ පන්හිඳ චාජරයකට සම්බන්ධ කරන්න"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"පන්හිඳ බැටරිය අඩුයි"</string>
     <string name="video_camera" msgid="7654002575156149298">"වීඩියෝ කැමරාව"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> විසින් මෑතකදී භාවිත කරන ලදි (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> භාවිත කරයි (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> විසින් මෑතකදී භාවිත කරන ලදි (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"පද්ධතිය"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"බහුකාර්ය"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ආදානය"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"යෙදුම් කෙටිමං"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ප්‍රවේශ්‍යතාව"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"යතුරු පුවරු කෙටි මං"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"කෙටි මං සොයන්න"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"හැකුළුම් නිරූපකය"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"දිගහැරීම් නිරූපකය"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"යතුරු පුවරු පසු ආලෝකය"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dන් %1$d වැනි මට්ටම"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"නිවෙස් පාලන"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index cb8cf5b..ba72fb4 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Čo v zariadení bolo ovplyvnené?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Vyberte typ problému"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Rekordér obrazovky"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Výkon"</item>
-    <item msgid="1627504621139124393">"Používateľské rozhranie"</item>
-    <item msgid="8309220355268900335">"Batéria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jednej ruky"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Načúvacie zariadenia"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Načúvacie zariadenia"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Spárovať nové zariadenie"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknutím spárujete nové zariadenie"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Predvoľbu sa nepodarilo aktualizovať"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predvoľba"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Živý prepis"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Chcete odblokovať mikrofón zariadenia?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Chcete odblokovať kameru zariadenia?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Chcete odblokovať fotoaparát a mikrofón zariadenia?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Tlačidlo <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Domov"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Späť"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Šípka nahor"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Šípka nadol"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Šípka doľava"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Šípka doprava"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Do stredu"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Medzerník"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zložené"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"rozložené"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Zostáva <xliff:g id="PERCENTAGE">%s</xliff:g> batérie"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Pripojte dotykové pero k nabíjačke"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stav batérie dotykového pera je nízky"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedávno využila aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Využíva <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedávno využila aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Systém"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vstup"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Odkazy do aplikácií"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostupnosť"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové skratky"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Vyhľadávacie odkazy"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zbalenia"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozbalenia"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podsvietenie klávesnice"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. úroveň z %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Ovládanie domácnosti"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index a3e4487..c6c1439 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Na kateri del izkušnje z napravo je to vplivalo?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Izberite vrsto težave"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Snemanje zaslona"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Učinkovitost delovanja"</item>
-    <item msgid="1627504621139124393">"Uporabniški vmesnik"</item>
-    <item msgid="8309220355268900335">"Baterija"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enoročni način"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Slušni pripomočki"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Slušni pripomočki"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Seznanitev nove naprave"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknite za seznanitev nove naprave"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Prednastavljenih vrednosti ni bilo mogoče posodobiti"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Prednastavljeno"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Samodejni podnapisi"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Želite odblokirati mikrofon v napravi?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Želite odblokirati fotoaparat v napravi?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Želite odblokirati fotoaparat in mikrofon v napravi?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Gumb <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Začetek"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Nazaj"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Puščica gor"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Puščica dol"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Puščica levo"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Puščica desno"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Sredina"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Preslednica"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Vnesi"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zaprto"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"razprto"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostanek energije baterije: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Povežite pisalo s polnilnikom."</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Skoraj prazna baterija pisala"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Nedavno uporabljala aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Uporablja aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Nedavno uporabljala aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Večopravilnost"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vnos"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Bližnjice do aplikacij"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostopnost"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Bližnjične tipke"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Bližnjice za iskanje"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za strnitev"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za razširitev"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Osvetlitev tipkovnice"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Stopnja %1$d od %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrolniki za dom"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index b06890d..dc9407f 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -76,8 +76,7 @@
     <string name="remote_input_image_insertion_text" msgid="4850791636452521123">"dërgoi një imazh"</string>
     <string name="screenshot_saving_title" msgid="2298349784913287333">"Po ruan pamjen e ekranit…"</string>
     <string name="screenshot_saving_work_profile_title" msgid="5332829607308450880">"Pamja e ekranit po ruhet te profili i punës…"</string>
-    <!-- no translation found for screenshot_saving_private_profile (8934706048497093297) -->
-    <skip />
+    <string name="screenshot_saving_private_profile" msgid="8934706048497093297">"Pamja e ekranit po ruhet te profili privat"</string>
     <string name="screenshot_saved_title" msgid="8893267638659083153">"Pamja e ekranit u ruajt"</string>
     <string name="screenshot_failed_title" msgid="3259148215671936891">"Pamja e ekranit nuk mund të ruhej"</string>
     <string name="screenshot_failed_external_display_indication" msgid="6555673132061101936">"Ekrani i jashtëm"</string>
@@ -362,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Cila pjesë e përvojës me pajisjen është prekur?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Zgjidh llojin e problemit"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Regjistrim i ekranit"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performanca"</item>
-    <item msgid="1627504621139124393">"Ndërfaqja e përdoruesit"</item>
-    <item msgid="8309220355268900335">"Bateria"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modaliteti i përdorimit me një dorë"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Pajisje ndihmëse për dëgjimin"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Pajisjet e dëgjimit"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Çifto pajisje të re"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliko për të çiftuar një pajisje të re"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Paravendosja nuk mund të përditësohej"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Paravendosja"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Titra në çast"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Të zhbllokohet mikrofoni i pajisjes?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Të zhbllokohet kamera e pajisjes?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Të zhbllokohen kamera dhe mikrofoni i pajisjes?"</string>
@@ -595,9 +599,9 @@
     <string name="screen_pinning_negative" msgid="6882816864569211666">"Jo, faleminderit!"</string>
     <string name="screen_pinning_start" msgid="7483998671383371313">"Aplikacioni u gozhdua"</string>
     <string name="screen_pinning_exit" msgid="4553787518387346893">"Aplikacioni u zhgozhdua"</string>
-    <string name="stream_voice_call" msgid="7468348170702375660">"Telefono"</string>
+    <string name="stream_voice_call" msgid="7468348170702375660">"Telefonata"</string>
     <string name="stream_system" msgid="7663148785370565134">"Sistemi"</string>
-    <string name="stream_ring" msgid="7550670036738697526">"Bjeri ziles"</string>
+    <string name="stream_ring" msgid="7550670036738697526">"Zilja"</string>
     <string name="stream_music" msgid="2188224742361847580">"Media"</string>
     <string name="stream_alarm" msgid="16058075093011694">"Alarmi"</string>
     <string name="stream_notification" msgid="7930294049046243939">"Njoftimi"</string>
@@ -728,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Butoni <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Kreu"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Prapa"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Shigjeta lart"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Shigjeta poshtë"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Shigjeta majtas"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Shigjeta djathtas"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Qendror"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Hapësirë"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1276,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"palosur"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"shpalosur"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Përqindja e mbetur e baterisë: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Lidhe stilolapsin me një karikues"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bateria e stilolapsit në nivel të ulët"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1319,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Përdorur së fundi nga <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Në përdorim nga <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Përdorur së fundi nga <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistemi"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Kryerja e shumë detyrave"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Hyrja"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Shkurtoret e aplikacionit"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qasshmëria"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Shkurtoret e tastierës"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Kërko për shkurtoret"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona e palosjes"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona e zgjerimit"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Drita e sfondit e tastierës"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveli: %1$d nga %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrollet e shtëpisë"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 2b851b4..1228eef 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"На који део доживљаја на уређају је ово утицало?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Изаберите тип проблема"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Снимање екрана"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Учинак"</item>
-    <item msgid="1627504621139124393">"Кориснички интерфејс"</item>
-    <item msgid="8309220355268900335">"Батерија"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Перформансе"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Кориснички интерфејс"</string>
+    <string name="thermal" msgid="6758074791325414831">"Термална камера"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим једном руком"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слушни апарати"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слушни апарати"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Упари нови уређај"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Кликните да бисте упарили нов уређај"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ажурирање задатих подешавања није успело"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Унапред одређена подешавања"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Титл уживо"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Желите да одблокирате микрофон уређаја?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Желите да одблокирате камеру уређаја?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Желите да одблокирате камеру и микрофон уређаја?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Дугме <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Тастер Почетна"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Тастер Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелица нагоре"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелица надоле"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелица налево"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелица надесно"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Тастер са централном стрелицом"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Размак"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворено"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворено"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Преостало је још<xliff:g id="PERCENTAGE">%s</xliff:g> батерије"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Батерија писаљке је на <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Повежите писаљку са пуњачем"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Низак ниво батерије писаљке"</string>
     <string name="video_camera" msgid="7654002575156149298">"Видео камера"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Недавно користила апликација <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Користе <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Недавно користила апликација <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Систем"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Обављање више задатака истовремено"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Унос"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Пречице за апликације"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Приступачност"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Тастерске пречице"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Пречице претраге"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за скупљање"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за проширивање"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Позадинско осветљење тастатуре"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. ниво од %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Контроле за дом"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 0d1614f..cf2b93c 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Vilken enhetsupplevelse påverkades?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Välj problemtyp"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Skärminspelning"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Prestanda"</item>
-    <item msgid="1627504621139124393">"Användargränssnitt"</item>
-    <item msgid="8309220355268900335">"Batteri"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Prestanda"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Användargränssnitt"</string>
+    <string name="thermal" msgid="6758074791325414831">"Termisk"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhandsläge"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Hörhjälpmedel"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Hörhjälpmedel"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Parkoppla en ny enhet"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Klicka för att parkoppla en ny enhet"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Det gick inte att uppdatera förinställningen"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Förinställning"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Live Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vill du återaktivera enhetens mikrofon?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vill du återaktivera enhetens kamera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vill du återaktivera enhetens kamera och mikrofon?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Knappen <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Start"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Tillbaka"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Uppåtpil"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Nedåtpil"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vänsterpil"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Högerpil"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrera"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Blanksteg"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Retur"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"hopvikt"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"uppvikt"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> av batteriet återstår"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"E-pennans batteri: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Anslut e-pennan till en laddare"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"E-pennans batterinivå är låg"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Användes nyligen av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Används av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Användes nyligen av <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multikörning"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ingång"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Genvägar till appar"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tillgänglighet"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Kortkommandon"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Sökgenvägar"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikonen Komprimera"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikonen Utöka"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Bakgrundsbelysning för tangentbord"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Hemstyrning"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 670a85c..1ee1d0c 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Ni sehemu gani ya matumizi ya kifaa iliathiriwa?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Chagua aina ya tatizo"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Rekodi ya skrini"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Utendaji"</item>
-    <item msgid="1627504621139124393">"Kiolesura cha Mtumiaji"</item>
-    <item msgid="8309220355268900335">"Betri"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Hali ya kutumia kwa mkono mmoja"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Vifaa vya kusikilizia"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Vifaa vya kusikilizia"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Unganisha kifaa kipya"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Bofya ili uunganishe kifaa kipya"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Imeshindwa kusasisha mipangilio iliyowekwa mapema"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Mipangilio iliyowekwa mapema"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Manukuu Papo Hapo"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Ungependa kuwacha kuzuia maikrofoni ya kifaa?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Ungependa kuacha kuzuia kamera ya kifaa?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Ungependa kuwacha kuzuia kamera na maikrofoni ya kifaa?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Kitufe cha <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Mwanzo"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Nyuma"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Kishale cha juu"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Kishale cha chini"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Kishale cha kushoto"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Kishale cha kulia"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Katikati"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kimekunjwa"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kimefunguliwa"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Chaji ya betri imesalia <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Unganisha stylus yako kwenye chaja"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Chaji ya betri ya Stylus imepungua"</string>
     <string name="video_camera" msgid="7654002575156149298">"Kamera ya video"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Ilitumiwa hivi majuzi na <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Inatumiwa na <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Ilitumiwa hivi majuzi na <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Mfumo"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Majukumu mengi"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Kifaa cha kuingiza data"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Njia za mikato za programu"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ufikivu"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Mikato ya kibodi"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Njia mkato za kutafutia"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Kunja aikoni"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Panua aikoni"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Mwanga chini ya kibodi"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Kiwango cha %1$d kati ya %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Dhibiti Vifaa Nyumbani"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 224ed398..6e95c3b 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"சாதன அனுபவத்தின் எந்தப் பகுதி பாதிக்கப்பட்டது?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"சிக்கல் வகையைத் தேர்வுசெய்க"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"ஸ்கிரீன் ரெக்கார்டு"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"செயல்திறன்"</item>
-    <item msgid="1627504621139124393">"பயனர் இடைமுகம்"</item>
-    <item msgid="8309220355268900335">"பேட்டரி"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ஒற்றைக் கைப் பயன்முறை"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"செவித்துணைக் கருவிகள்"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"செவித்துணைக் கருவிகள்"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"புதிய சாதனத்தை இணை"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"புதிய சாதனத்தை இணைக்க கிளிக் செய்யலாம்"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"முன்னமைவைப் புதுப்பிக்க முடியவில்லை"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"முன்னமைவு"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"உடனடி வசன உரை"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"சாதனத்தின் மைக்ரோஃபோனுக்கான தடுப்பை நீக்கவா?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"சாதனத்தின் கேமராவுக்கான தடுப்பை நீக்கவா?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"சாதனத்தின் கேமராவுக்கும் மைக்ரோஃபோனுக்குமான தடுப்பை நீக்கவா?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> பட்டன்"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"ஹோம்"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"பேக்"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"மேல்நோக்கிய அம்புக்குறி"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"கீழ்நோக்கிய அம்புக்குறி"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"இடது அம்புக்குறி"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"வலது அம்புக்குறி"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"நடு"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"ஸ்பேஸ்"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"என்டர்"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"மடக்கப்பட்டது"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"விரிக்கப்பட்டது"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> பேட்டரி மீதமுள்ளது"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"உங்கள் ஸ்டைலஸைச் சார்ஜருடன் இணையுங்கள்"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"ஸ்டைலஸின் பேட்டரி குறைவாக உள்ளது"</string>
     <string name="video_camera" msgid="7654002575156149298">"வீடியோ கேமரா"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ஆப்ஸால் சமீபத்தில் பயன்படுத்தப்பட்டது"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ஆப்ஸால் பயன்படுத்தப்படுகிறது"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ஆப்ஸால் சமீபத்தில் பயன்படுத்தப்பட்டது"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"சிஸ்டம்"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"பல வேலைகளைச் செய்தல்"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"உள்ளீடு"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ஆப்ஸ் ஷார்ட்கட்கள்"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"அணுகல்தன்மை"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"கீபோர்டு ஷார்ட்கட்கள்"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"தேடல் ஷார்ட்கட்கள்"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"சுருக்குவதற்கான ஐகான்"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"விரிவாக்குவதற்கான ஐகான்"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"கீபோர்டு பேக்லைட்"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"நிலை, %2$d இல் %1$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ஹோம் கன்ட்ரோல்கள்"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 26bb871..64d6f9e 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"మీ పరికర అనుభవంలో ఏ భాగం ప్రభావితమైంది?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"సమస్య రకాన్ని ఎంచుకోండి"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"స్క్రీన్ రికార్డ్"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"పనితీరు"</item>
-    <item msgid="1627504621139124393">"యూజర్ ఇంటర్‌ఫేస్"</item>
-    <item msgid="8309220355268900335">"బ్యాటరీ"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"వన్-హ్యాండెడ్ మోడ్"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"వినికిడి పరికరాలు"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"వినికిడి పరికరాలు"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"కొత్త పరికరాన్ని పెయిర్ చేయండి"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"కొత్త పరికరాన్ని పెయిర్ చేయడానికి క్లిక్ చేయండి"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ప్రీసెట్‌ను అప్‌డేట్ చేయడం సాధ్యపడలేదు"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ప్రీసెట్"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"లైవ్ క్యాప్షన్"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"పరికరం మైక్రోఫోన్‌ను అన్‌బ్లాక్ చేయమంటారా?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"పరికరంలోని కెమెరాను అన్‌బ్లాక్ చేయమంటారా?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"పరికరంలోని కెమెరా, మైక్రోఫోన్‌లను అన్‌బ్లాక్ చేయమంటారా?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"బటన్ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"వెనుకకు"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"పై వైపు బాణం"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"కింది వైపు బాణం"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ఎడమ వైపు బాణం"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"కుడి వైపు బాణం"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"మధ్య"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -988,7 +988,7 @@
     <string name="magnification_close_settings_click_label" msgid="4642477260651704517">"మాగ్నిఫికేషన్ సెట్టింగ్‌లను మూసివేయండి"</string>
     <string name="magnification_exit_edit_mode_click_label" msgid="1664818325144887117">"సవరణ మోడ్ నుండి ఎగ్జిట్ అవ్వండి"</string>
     <string name="magnification_drag_corner_to_resize" msgid="1249766311052418130">"సైజ్ మార్చడానికి మూలను లాగండి"</string>
-    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"డయాగనల్ స్క్రోలింగ్‌ను అనుమతించండి"</string>
+    <string name="accessibility_allow_diagonal_scrolling" msgid="3258050349191496398">"డయాగోనల్ స్క్రోలింగ్‌ను అనుమతించండి"</string>
     <string name="accessibility_resize" msgid="5733759136600611551">"సైజ్ మార్చండి"</string>
     <string name="accessibility_change_magnification_type" msgid="666000085077432421">"మ్యాగ్నిఫికేషన్ రకాన్ని మార్చండి"</string>
     <string name="accessibility_magnification_end_resizing" msgid="4881690585800302628">"సైజ్‌ను మార్చడం ముగించండి"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"మడిచే సదుపాయం గల పరికరం"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"మడిచే సదుపాయం లేని పరికరం"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> బ్యాటరీ మిగిలి ఉంది"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"మీ స్టైలస్‌ను ఛార్జర్‌కి కనెక్ట్ చేయండి"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"తక్కువ స్టైలస్ బ్యాటరీ"</string>
     <string name="video_camera" msgid="7654002575156149298">"వీడియో కెమెరా"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ద్వారా ఇటీవల వినియోగించబడింది"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ద్వారా వినియోగంలో ఉంది"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ద్వారా ఇటీవల ఉపయోగించబడింది"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"సిస్టమ్"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"మల్టీ-టాస్కింగ్"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ఇన్‌పుట్"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"యాప్ షార్ట్‌కట్‌లు"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"యాక్సెసిబిలిటీ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"కీబోర్డ్ షార్ట్‌కట్‌లు"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"సెర్చ్ షార్ట్‌కట్‌లు"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"కుదించండి చిహ్నం"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"విస్తరించండి చిహ్నం"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"కీబోర్డ్ బ్యాక్‌లైట్"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dలో %1$dవ స్థాయి"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"హోమ్ కంట్రోల్స్"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 02ee017..8a76629 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"ประสบการณ์การใช้งานอุปกรณ์ส่วนใดที่ได้รับผลกระทบ"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"เลือกประเภทปัญหา"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"บันทึกหน้าจอ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"ประสิทธิภาพ"</item>
-    <item msgid="1627504621139124393">"อินเทอร์เฟซผู้ใช้"</item>
-    <item msgid="8309220355268900335">"แบตเตอรี่"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"ประสิทธิภาพ"</string>
+    <string name="user_interface" msgid="3712869377953950887">"อินเทอร์เฟซผู้ใช้"</string>
+    <string name="thermal" msgid="6758074791325414831">"ความร้อน"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"โหมดมือเดียว"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"เครื่องช่วยฟัง"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"เครื่องช่วยฟัง"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"จับคู่อุปกรณ์ใหม่"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"คลิกเพื่อจับคู่อุปกรณ์ใหม่"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"ไม่สามารถอัปเดตค่าที่กำหนดล่วงหน้า"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"ค่าที่กำหนดล่วงหน้า"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"คำบรรยายสด"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"เลิกบล็อกไมโครโฟนของอุปกรณ์ใช่ไหม"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"เลิกบล็อกกล้องของอุปกรณ์ใช่ไหม"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"เลิกบล็อกกล้องและไมโครโฟนของอุปกรณ์ใช่ไหม"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ปุ่ม <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"กลับ"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ลูกศรขึ้น"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ลูกศรลง"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ลูกศรซ้าย"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ลูกศรขวา"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"กึ่งกลาง"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"วรรค"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"พับ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"กางออก"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"เหลือแบตเตอรี่ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"แบตเตอรี่สไตลัส <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"เชื่อมต่อสไตลัสกับที่ชาร์จ"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"แบตเตอรี่สไตลัสเหลือน้อย"</string>
     <string name="video_camera" msgid="7654002575156149298">"กล้องวิดีโอ"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"ใช้ล่าสุดโดย <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"ใช้อยู่โดย <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ใช้ล่าสุดโดย <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"ระบบ"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"การทํางานหลายอย่างพร้อมกัน"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"อินพุต"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"แป้นพิมพ์ลัดของแอป"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"การช่วยเหลือพิเศษ"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"แป้นพิมพ์ลัด"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ค้นหาแป้นพิมพ์ลัด"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ไอคอนยุบ"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ไอคอนขยาย"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ไฟแบ็กไลต์ของแป้นพิมพ์"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"ระดับที่ %1$d จาก %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ระบบควบคุมอุปกรณ์สมาร์ทโฮม"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index aabba45..e74139f 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Ano\'ng naapektuhang parte ng experience sa device?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Piliin ang uri ng isyu"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Pag-record ng screen"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performance"</item>
-    <item msgid="1627504621139124393">"User Interface"</item>
-    <item msgid="8309220355268900335">"Baterya"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Performance"</string>
+    <string name="user_interface" msgid="3712869377953950887">"User Interface"</string>
+    <string name="thermal" msgid="6758074791325414831">"Thermal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-hand mode"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Mga hearing device"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Mga hearing device"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Magpares ng bagong device"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"I-click para magpares ng bagong device"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Hindi ma-update ang preset"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Instant Caption"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"I-unblock ang mikropono ng device?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"I-unblock ang camera ng device?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"I-unblock ang camera at mikropono ng device?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Button na <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pataas na arrow"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pababang arrow"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Pakaliwang arrow"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Pakanang arrow"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"naka-fold"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"hindi naka-fold"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> baterya na lang ang natitira"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Baterya ng stylus <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ikonekta sa charger ang iyong stylus"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Paubos na ang baterya ng stylus"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video camera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Kamakailang ginamit ng <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Ginagamit ng <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Kamakailang ginamit ng <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"System"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Pag-multitask"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Mga shortcut ng app"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Mga keyboard shortcut"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Mga shortcut ng paghahanap"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"I-collapse ang icon"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"I-expand ang icon"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Backlight ng keyboard"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d sa %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Mga Home Control"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index db84644..a66fbed 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Cihaz deneyiminiz ne şekilde etkilendi?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Sorun türünü seçin"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekran kaydedicisi"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Performans"</item>
-    <item msgid="1627504621139124393">"Kullanıcı Arayüzü"</item>
-    <item msgid="8309220355268900335">"Pil"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Tek el modu"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"İşitme cihazları"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"İşitme cihazları"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Yeni cihaz eşle"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Yeni cihaz eşlemek için tıklayın"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Hazır ayar güncellenemedi"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Hazır Ayar"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Canlı Altyazı"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Cihaz mikrofonunun engellemesi kaldırılsın mı?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Cihaz kamerasının engellemesi kaldırılsın mı?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Cihaz kamerası ile mikrofonunun engellemesi kaldırılsın mı?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> düğmesi"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Geri"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Yukarı ok"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Aşağı ok"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Sol ok"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Sağ ok"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Orta"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Boşluk"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"katlanmış"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"katlanmamış"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> pil kaldı"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ekran kaleminizi bir şarj cihazına bağlayın"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Ekran kaleminin pil seviyesi düşük"</string>
     <string name="video_camera" msgid="7654002575156149298">"Video kamera"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"En son <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) tarafından kullanıldı"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) tarafından kullanılıyor"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"En son <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) tarafından kullanıldı"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistem"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Çoklu görev becerisi"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Giriş"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Uygulama kısayolları"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erişilebilirlik"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Klavye kısayolları"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Arama kısayolları"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Daralt simgesi"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Genişlet simgesi"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klavye aydınlatması"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Seviye %1$d / %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Ev Kontrolleri"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 1afcf2a..5262d74 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"На який аспект роботи пристрою вплинула проблема?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Виберіть тип проблеми"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Запис відео з екрана"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Продуктивність"</item>
-    <item msgid="1627504621139124393">"Інтерфейс користувача"</item>
-    <item msgid="8309220355268900335">"Акумулятор"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим керування однією рукою"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Слухові апарати"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Слухові апарати"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Підключити новий пристрій"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Натисніть, щоб підключити новий пристрій"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Не вдалось оновити набір налаштувань"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набір налаштувань"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Живі субтитри"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Надати доступ до мікрофона?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Надати доступ до камери пристрою?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Надати доступ до камери й мікрофона?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрілка вгору"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрілка вниз"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрілка вліво"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрілка вправо"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центр"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Пробіл"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"складений"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"розкладений"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Заряд акумулятора: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Підключіть стилус до зарядного пристрою"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Низький заряд акумулятора стилуса"</string>
     <string name="video_camera" msgid="7654002575156149298">"Відеокамера"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Нещодавно використано (<xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Використовується додатком <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Нещодавно використано (<xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Система"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Багатозадачність"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Введення"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Комбінації клавіш для додатків"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Доступність"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Комбінації клавіш"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Комбінації клавіш для пошуку"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок згортання"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок розгортання"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Підсвічування клавіатури"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Рівень %1$d з %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Автоматизація дому"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index d7c4c88..0d3f1fe 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"آپ کے آلے کے تجربے کا کون سا حصہ متاثر ہوا؟"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"مسئلہ کی قسم منتخب کریں"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"اسکرین ریکارڈ"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"کارکردگی"</item>
-    <item msgid="1627504621139124393">"یوزر انٹرفیس"</item>
-    <item msgid="8309220355268900335">"بیٹری"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"کارکردگی"</string>
+    <string name="user_interface" msgid="3712869377953950887">"یوزر انٹرفیس"</string>
+    <string name="thermal" msgid="6758074791325414831">"تھرمل"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ایک ہاتھ کی وضع"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"سماعت کے آلات"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"سماعت کے آلات"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"نئے آلے کا جوڑا بنائیں"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"نئے آلے کا جوڑا بنانے کے لیے کلک کریں"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"پہلے سے ترتیب شدہ کو اپ ڈیٹ نہیں کیا جا سکا"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"پہلے سے ترتیب شدہ"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"لائیو کیپشن"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"آلے کا مائیکروفون غیر مسدود کریں؟"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"آلے کا کیمرا غیر مسدود کریں؟"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"آلے کا کیمرا اور مائیکروفون غیر مسدود کریں؟"</string>
@@ -731,11 +733,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"بٹن <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"پیچھے"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"اوپر تیر کا نشان"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"نیچے تیر کا نشان"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"بایاں تیر"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"دایاں تیر"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"سینٹر"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1279,7 +1276,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"فولڈ کردہ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"اَن فولڈ کردہ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> بیٹری باقی ہے"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"<xliff:g id="PERCENTAGE">%s</xliff:g> اسٹائلس بیٹری"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"اپنے اسٹائلس کو چارجر منسلک کریں"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"اسٹائلس بیٹری کم ہے"</string>
     <string name="video_camera" msgid="7654002575156149298">"ویڈیو کیمرا"</string>
@@ -1322,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) کے ذریعے حال ہی میں استعمال کیا گیا"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) کے زیر استعمال"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) کے ذریعے حال ہی میں استعمال کیا گیا"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"سسٹم"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ملٹی ٹاسکنگ"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"ان پٹ"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ایپ شارٹ کٹس"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ایکسیسبیلٹی"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"کی بورڈ شارٹ کٹس"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"تلاش کے شارٹ کٹس"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"آئیکن سکیڑیں"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"آئیکن پھیلائیں"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"کی بورڈ بیک لائٹ"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‏%2$d میں سے ‎%1$d کا لیول"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"ہوم کنٹرولز"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 55bdd84..3f3983d 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -361,19 +361,21 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Qurilma ishlashining qaysi qismiga taʼsir qildi?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Muammo turini tanlang"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ekran yozuvi"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Unumdorlik"</item>
-    <item msgid="1627504621139124393">"Foydalanuvchi interfeysi"</item>
-    <item msgid="8309220355268900335">"Batareya"</item>
-  </string-array>
+    <string name="performance" msgid="6552785217174378320">"Unumdorlik"</string>
+    <string name="user_interface" msgid="3712869377953950887">"Foydalanuvchi interfeysi"</string>
+    <string name="thermal" msgid="6758074791325414831">"Termal"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Ixcham rejim"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Eshitish qurilmalari"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Eshitish qurilmalari"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Yangi qurilmani ulash"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Yangi qurilmani ulash uchun bosing"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Andoza yangilanmadi"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Andoza"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Jonli izoh"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Qurilma mikrofoni blokdan chiqarilsinmi?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Qurilma kamerasi blokdan chiqarilsinmi?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Qurilma kamerasi va mikrofoni blokdan chiqarilsinmi?"</string>
@@ -727,11 +729,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> tugmasi"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Bosh ekran"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Orqaga"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Tepaga strelka"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pastga strelka"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Chapga strelka"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Oʻngga strelka"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Markaziy ko‘rsatkichli chiziq"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Probel"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1272,7 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"buklangan"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"buklanmagan"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batareya quvvati: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stilus batareyasi: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Stilusni quvvat manbaiga ulang"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Stilus batareyasi kam"</string>
     <string name="video_camera" msgid="7654002575156149298">"Videokamera"</string>
@@ -1318,6 +1315,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Yaqinda <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) ishlatgan"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ishlatmoqda"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Yaqinda <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ishlatgan"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Tizim"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multi-vazifalilik"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Kiritish"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ilova yorliqlari"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qulayliklar"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Tezkor tugmalar"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Tezkor tugmalar qidiruvi"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Yigʻish belgisi"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Yoyish belgisi"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatura orqa yoritkichi"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Daraja: %1$d / %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Uy boshqaruvi"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index fb1f28c..dc4fa12 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -247,7 +247,7 @@
     <string name="accessibility_quick_settings_dnd" msgid="2415967452264206047">"Không làm phiền."</string>
     <string name="accessibility_quick_settings_bluetooth" msgid="8250942386687551283">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="3819082137684078013">"Bluetooth bật."</string>
-    <string name="accessibility_quick_settings_alarm" msgid="558094529584082090">"Báo thức được đặt cho <xliff:g id="TIME">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_alarm" msgid="558094529584082090">"Chuông báo được đặt cho <xliff:g id="TIME">%s</xliff:g>."</string>
     <string name="accessibility_quick_settings_more_time" msgid="7646479831704665284">"Nhiều thời gian hơn."</string>
     <string name="accessibility_quick_settings_less_time" msgid="9110364286464977870">"Ít thời gian hơn."</string>
     <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Đã ngừng truyền màn hình."</string>
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Bạn gặp loại vấn đề gì khi dùng thiết bị?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Chọn loại vấn đề"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Ghi màn hình"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Hiệu suất"</item>
-    <item msgid="1627504621139124393">"Giao diện người dùng"</item>
-    <item msgid="8309220355268900335">"Pin"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Chế độ một tay"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Thiết bị trợ thính"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Thiết bị trợ thính"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Ghép nối thiết bị mới"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Nhấp để ghép nối thiết bị mới"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Không cập nhật được giá trị đặt trước"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Chế độ đặt sẵn"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Phụ đề trực tiếp"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Bỏ chặn micrô của thiết bị?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Bỏ chặn camera của thiết bị?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Bỏ chặn máy ảnh và micrô của thiết bị?"</string>
@@ -594,11 +599,11 @@
     <string name="screen_pinning_negative" msgid="6882816864569211666">"Không, cảm ơn"</string>
     <string name="screen_pinning_start" msgid="7483998671383371313">"Đã ghim ứng dụng"</string>
     <string name="screen_pinning_exit" msgid="4553787518387346893">"Đã bỏ ghim ứng dụng"</string>
-    <string name="stream_voice_call" msgid="7468348170702375660">"Gọi"</string>
+    <string name="stream_voice_call" msgid="7468348170702375660">"Cuộc gọi"</string>
     <string name="stream_system" msgid="7663148785370565134">"Hệ thống"</string>
     <string name="stream_ring" msgid="7550670036738697526">"Chuông"</string>
     <string name="stream_music" msgid="2188224742361847580">"Nội dung nghe nhìn"</string>
-    <string name="stream_alarm" msgid="16058075093011694">"Báo thức"</string>
+    <string name="stream_alarm" msgid="16058075093011694">"Chuông báo"</string>
     <string name="stream_notification" msgid="7930294049046243939">"Thông báo"</string>
     <string name="stream_bluetooth_sco" msgid="6234562365528664331">"Bluetooth"</string>
     <string name="stream_dtmf" msgid="7322536356554673067">"Tần số đa chuông kép"</string>
@@ -642,7 +647,7 @@
     <string name="enable_demo_mode" msgid="3180345364745966431">"Bật chế độ trình diễn"</string>
     <string name="show_demo_mode" msgid="3677956462273059726">"Hiển thị chế độ trình diễn"</string>
     <string name="status_bar_ethernet" msgid="5690979758988647484">"Ethernet"</string>
-    <string name="status_bar_alarm" msgid="87160847643623352">"Báo thức"</string>
+    <string name="status_bar_alarm" msgid="87160847643623352">"Chuông báo"</string>
     <string name="wallet_title" msgid="5369767670735827105">"Ví"</string>
     <string name="wallet_empty_state_label" msgid="7776761245237530394">"Thiết lập để mua hàng nhanh hơn và an toàn hơn bằng điện thoại"</string>
     <string name="wallet_app_button_label" msgid="7123784239111190992">"Hiện tất cả"</string>
@@ -655,7 +660,7 @@
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Đang cập nhật"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Hồ sơ công việc"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"Chế độ trên máy bay"</string>
-    <string name="zen_alarm_warning" msgid="7844303238486849503">"Bạn sẽ không nghe thấy báo thức tiếp theo lúc <xliff:g id="WHEN">%1$s</xliff:g> của mình"</string>
+    <string name="zen_alarm_warning" msgid="7844303238486849503">"Bạn sẽ không nghe thấy chuông báo tiếp theo lúc <xliff:g id="WHEN">%1$s</xliff:g> của mình"</string>
     <string name="alarm_template" msgid="2234991538018805736">"lúc <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"vào <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"Điểm phát sóng"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Nút <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Quay lại"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Mũi tên lên"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Mũi tên xuống"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Mũi tên trái"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Mũi tên phải"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Giữa"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Dấu cách"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"gập"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"mở"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Còn <xliff:g id="PERCENTAGE">%s</xliff:g> pin"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Hãy kết nối bút cảm ứng với bộ sạc"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Bút cảm ứng bị yếu pin"</string>
     <string name="video_camera" msgid="7654002575156149298">"Máy quay video"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>) đã dùng gần đây"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) đang dùng"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) đã dùng gần đây"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Hệ thống"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Đa nhiệm"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Phương thức nhập"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Lối tắt ứng dụng"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hỗ trợ tiếp cận"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Phím tắt"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Lối tắt tìm kiếm"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Biểu tượng Thu gọn"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Biểu tượng Mở rộng"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Đèn nền bàn phím"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Độ sáng %1$d/%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Điều khiển nhà"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 1a3055c..9b69f9e 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -361,24 +361,29 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"设备体验的哪个方面受到影响?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"选择问题类型"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"屏幕录制"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"性能"</item>
-    <item msgid="1627504621139124393">"界面"</item>
-    <item msgid="8309220355268900335">"电池"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"单手模式"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"助听装置"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"助听装置"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"与新设备配对"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"点击即可与新设备配对"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"无法更新预设"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"预设"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"实时字幕"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要解锁设备麦克风吗?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"要解锁设备摄像头吗?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"要解锁设备摄像头和麦克风吗?"</string>
-    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"这将会为所有获准使用您麦克风的应用和服务启用这项权限。"</string>
-    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"这将会为所有获准使用您摄像头的应用和服务启用这项权限。"</string>
+    <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"解锁后,所有具有麦克风使用权的应用和服务都可使用您的麦克风。"</string>
+    <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"解锁后,所有具有摄像头使用权的应用和服务都可使用您的摄像头。"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"这将会为所有获准使用您的摄像头或麦克风的应用和服务启用这项权限。"</string>
     <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"麦克风已被屏蔽"</string>
     <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"摄像头已被屏蔽"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>按钮"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上键"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下键"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左键"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右键"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中心"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"空格"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
@@ -933,7 +933,7 @@
     <string name="running_foreground_services_title" msgid="5137313173431186685">"在后台运行的应用"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"点按即可详细了解电量和流量消耗情况"</string>
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"要关闭移动数据网络吗?"</string>
-    <string name="mobile_data_disable_message" msgid="8604966027899770415">"您将无法通过<xliff:g id="CARRIER">%s</xliff:g>使用移动数据或互联网,只能通过 WLAN 连接到互联网。"</string>
+    <string name="mobile_data_disable_message" msgid="8604966027899770415">"关闭后,您将无法通过<xliff:g id="CARRIER">%s</xliff:g>使用移动数据或互联网,只能通过 WLAN 连接到互联网。"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"您的运营商"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"是否要切换回 <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"移动流量不会根据网络可用情况自动切换"</string>
@@ -1207,7 +1207,7 @@
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"添加功能块"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"不添加功能块"</string>
     <string name="qs_user_switch_dialog_title" msgid="3045189293587781366">"选择用户"</string>
-    <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# 个应用处于活动状态}other{# 个应用处于活动状态}}"</string>
+    <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# 个应用处于运行状态}other{# 个应用处于运行状态}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"新信息"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"已开启的应用"</string>
     <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"这些应用即使在闲置时仍处于活跃运行状态。应用的功能会因此提升,但可能会影响电池续航时间。"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"折叠状态"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"展开状态"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"电池还剩 <xliff:g id="PERCENTAGE">%s</xliff:g> 的电量"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"请将触控笔连接充电器"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"触控笔电池电量低"</string>
     <string name="video_camera" msgid="7654002575156149298">"摄像机"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”最近使用过(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正在使用(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”最近使用过(<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"系统"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"多任务处理"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"输入"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"应用快捷键"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"无障碍功能"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"键盘快捷键"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜索快捷键"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收起图标"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展开图标"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"键盘背光"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 级,共 %2$d 级"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"家居控制"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 8523972..5c164ab 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"哪些裝置使用體驗受影響?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"選取問題類型"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"螢幕錄影"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"效能"</item>
-    <item msgid="1627504621139124393">"使用者介面"</item>
-    <item msgid="8309220355268900335">"電池"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"單手模式"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"助聽器"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"助聽器"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"配對新裝置"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"㩒一下就可以配對新裝置"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"無法更新預設"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"預設"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"即時字幕"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要解除封鎖裝置麥克風嗎?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"要解除封鎖裝置相機嗎?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"要解除封鎖裝置相機和麥克風嗎?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 鍵"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上箭咀"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下箭咀"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左箭咀"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右箭咀"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"箭咀中央"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"空格"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"輸入 (Enter)"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"已摺疊"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"已打開"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"剩餘電量:<xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"將觸控筆連接充電器"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"觸控筆電量不足"</string>
     <string name="video_camera" msgid="7654002575156149298">"攝影機"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」最近使用過此權限 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> 正在使用 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」最近使用過此權限 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"系統"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"多工處理"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"輸入"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"應用程式捷徑"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙功能"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜尋快速鍵"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收合圖示"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展開圖示"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"鍵盤背光"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"智能家居"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 8d5cad4..0d50ad5 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"哪些裝置使用體驗受到影響?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"選取問題類型"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"螢幕錄影"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"效能"</item>
-    <item msgid="1627504621139124393">"使用者介面"</item>
-    <item msgid="8309220355268900335">"電池"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"單手模式"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"助聽器"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"助聽器"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"配對新裝置"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"按一下即可配對新裝置"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"無法更新預設設定"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"預設"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"即時字幕"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要解除封鎖裝置麥克風嗎?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"要解除封鎖裝置相機嗎?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"要將裝置的相機和麥克風解除封鎖嗎?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 按鈕"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home 鍵"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上箭頭"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下箭頭"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左箭頭"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右箭頭"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中央鍵"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"空格鍵"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter 鍵"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"已摺疊"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"已展開"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"剩餘電量:<xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"將觸控筆接上充電器"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"觸控筆電力不足"</string>
     <string name="video_camera" msgid="7654002575156149298">"攝影機"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」最近用過這項權限 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"正由「<xliff:g id="APP_NAME">%1$s</xliff:g>」使用 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」最近用過這項權限 (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"系統"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"多工處理"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"輸入"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"應用程式捷徑"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜尋快速鍵"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收合圖示"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展開圖示"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"鍵盤背光"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"居家控制"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 6644b53..2e03bd5 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -361,19 +361,24 @@
     <string name="qs_record_issue_dropdown_header" msgid="5995983175678658329">"Kuthinteke yiphi ingxenye yokusebenzisa idivayisi?"</string>
     <string name="qs_record_issue_dropdown_prompt" msgid="2526949919167046219">"Khetha uhlobo lwenkinga"</string>
     <string name="qs_record_issue_dropdown_screenrecord" msgid="6396141928484257626">"Irekhodi lesikrini"</string>
-  <string-array name="qs_record_issue_types">
-    <item msgid="2947988124014085798">"Ukusebenza"</item>
-    <item msgid="1627504621139124393">"Okusetshenziswa Kubonwa"</item>
-    <item msgid="8309220355268900335">"Ibhethri"</item>
-  </string-array>
+    <!-- no translation found for performance (6552785217174378320) -->
+    <skip />
+    <!-- no translation found for user_interface (3712869377953950887) -->
+    <skip />
+    <!-- no translation found for thermal (6758074791325414831) -->
+    <skip />
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Imodi yesandla esisodwa"</string>
     <string name="quick_settings_hearing_devices_label" msgid="7277170419679404129">"Izinsizakuzwa"</string>
+    <!-- no translation found for quick_settings_hearing_devices_connected (6519069502397037781) -->
+    <skip />
+    <!-- no translation found for quick_settings_hearing_devices_disconnected (8907061223998176187) -->
+    <skip />
     <string name="quick_settings_hearing_devices_dialog_title" msgid="9004774017688484981">"Izinsizakuzwa"</string>
     <string name="quick_settings_pair_hearing_devices" msgid="5987105102207447322">"Bhangqa idivayisi entsha"</string>
     <string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Chofoza ukuze ubhangqe idivayisi entsha"</string>
     <string name="hearing_devices_presets_error" msgid="350363093458408536">"Ayikwazanga ukubuyekeza ukusetha ngaphambilini"</string>
-    <!-- no translation found for hearing_devices_preset_label (7878267405046232358) -->
-    <skip />
+    <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Ukusetha ngaphambilini"</string>
+    <string name="live_caption_title" msgid="8916875614623730005">"Amagama-ncazo abukhoma"</string>
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vulela imakrofoni yedivayisi?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vulela ikhamera yedivayisi?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vulela ikhamera yedivayisi nemakrofoni?"</string>
@@ -727,11 +732,6 @@
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Inkinobho <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Ekhaya"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"Emuva"</string>
-    <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Umcibisholo waphezulu"</string>
-    <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Umcibisholo waphansi"</string>
-    <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Umcibisholo wangokwesokunxele"</string>
-    <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Umcibisholo wangokwesokudla"</string>
-    <string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Maphakathi"</string>
     <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
     <string name="keyboard_key_space" msgid="6980847564173394012">"Isikhala"</string>
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Faka"</string>
@@ -1275,7 +1275,8 @@
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kugoqiwe"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kuvuliwe"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
-    <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ibhethri elisele"</string>
+    <!-- no translation found for stylus_battery_low_percentage (2564243323894629626) -->
+    <skip />
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Xhuma i-stylus yakho kushaja"</string>
     <string name="stylus_battery_low" msgid="7134370101603167096">"Ibhethri le-stylus liphansi"</string>
     <string name="video_camera" msgid="7654002575156149298">"Ikhamera yevidiyo"</string>
@@ -1318,6 +1319,17 @@
     <string name="privacy_dialog_recent_app_usage_1" msgid="2551340497722370109">"Kusetshenziswe kamuva yi-<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g>)"</string>
     <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"Isetshenziswa yi-<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
     <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"Kusetshenziswe kamuva yi-<xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string>
+    <string name="shortcut_helper_category_system" msgid="462110876978937359">"Isistimu"</string>
+    <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Ukwenza imisebenzi eminingi"</string>
+    <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Okokufaka"</string>
+    <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Izinqamuleli Zohlelo lokusebenza"</string>
+    <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ukufinyeleleka"</string>
+    <string name="shortcut_helper_title" msgid="8567500639300970049">"Izinqamuleli zekhibhodi"</string>
+    <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Sesha izinqamuleli"</string>
+    <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Goqa isithonjana"</string>
+    <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Nweba isithonjana"</string>
+    <!-- no translation found for shortcut_helper_key_combinations_or_separator (7082902112102125540) -->
+    <skip />
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Ilambu lekhibhodi"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Ileveli %1$d ka-%2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Izilawuli Zasekhaya"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index fb88364..f8762f0 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -37,6 +37,9 @@
         <item>400</item>
     </integer-array>
 
+    <!-- Whether to use deadzone with nav bar -->
+    <bool name="config_useDeadZone">true</bool>
+
     <!-- decay duration (from size_max -> size), in ms -->
     <integer name="navigation_bar_deadzone_hold">333</integer>
     <integer name="navigation_bar_deadzone_decay">333</integer>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 8ce2068..d979abb 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -912,6 +912,10 @@
         obvious when corner radii differ.-->
     <dimen name="communal_enforced_rounded_corner_max_radius">28dp</dimen>
 
+    <!-- Width and height used to filter widgets displayed in the communal widget picker -->
+    <dimen name="communal_widget_picker_desired_width">360dp</dimen>
+    <dimen name="communal_widget_picker_desired_height">240dp</dimen>
+
     <!-- The width/height of the unlock icon view on keyguard. -->
     <dimen name="keyguard_lock_height">42dp</dimen>
     <dimen name="keyguard_lock_padding">20dp</dimen>
@@ -1101,6 +1105,7 @@
     <dimen name="biometric_dialog_button_negative_max_width">160dp</dimen>
     <dimen name="biometric_dialog_button_positive_max_width">136dp</dimen>
     <dimen name="biometric_dialog_corner_size">28dp</dimen>
+    <dimen name="biometric_dialog_indicator_max_width">280dp</dimen>
     <!-- Y translation when showing/dismissing the dialog-->
     <dimen name="biometric_dialog_animation_translation_offset">350dp</dimen>
     <dimen name="biometric_dialog_border_padding">4dp</dimen>
@@ -1117,9 +1122,7 @@
     <dimen name="biometric_prompt_panel_max_width">640dp</dimen>
     <dimen name="biometric_prompt_land_small_horizontal_guideline_padding">344dp</dimen>
     <dimen name="biometric_prompt_two_pane_udfps_horizontal_guideline_padding">114dp</dimen>
-    <dimen name="biometric_prompt_two_pane_udfps_mid_guideline_padding">409dp</dimen>
     <dimen name="biometric_prompt_two_pane_medium_horizontal_guideline_padding">640dp</dimen>
-    <dimen name="biometric_prompt_two_pane_medium_mid_guideline_padding">330dp</dimen>
     <dimen name="biometric_prompt_one_pane_medium_top_guideline_padding">119dp</dimen>
     <dimen name="biometric_prompt_one_pane_medium_horizontal_guideline_padding">0dp</dimen>
 
@@ -1674,6 +1677,7 @@
     <dimen name="rounded_slider_background_padding">8dp</dimen>
     <!-- rounded_slider_corner_radius + rounded_slider_background_padding -->
     <dimen name="rounded_slider_background_rounded_corner">32dp</dimen>
+    <dimen name="rounded_slider_boundary_offset">16dp</dimen>
 
     <!-- Location on the screen of the center of the physical power button. This is a reasonable
     default that should be overridden by device-specific overlays. -->
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 1226bbf..c2ca4da 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -895,11 +895,9 @@
     <string name="qs_record_issue_dropdown_screenrecord">Screen record</string>
 
     <!-- QuickSettings: Issue Type Drop down choices list in Record Issue Start Dialog [CHAR LIMIT=30] -->
-    <string-array name="qs_record_issue_types">
-        <item>Performance</item>
-        <item>User Interface</item>
-        <item>Battery</item>
-    </string-array>
+    <string name="performance">Performance</string>
+    <string name="user_interface">User Interface</string>
+    <string name="thermal">Thermal</string>
 
     <!-- QuickSettings: Label for the toggle that controls whether One-handed mode is enabled. [CHAR LIMIT=NONE] -->
     <string name="quick_settings_onehanded_label">One-handed mode</string>
@@ -907,6 +905,10 @@
     <!-- Hearing devices -->
     <!-- QuickSettings: Hearing devices [CHAR LIMIT=NONE] -->
     <string name="quick_settings_hearing_devices_label">Hearing devices</string>
+    <!-- QuickSettings: Hearing Devices' secondary label shown when the hearing aids are currently connected. [CHAR LIMIT=NONE] -->
+    <string name="quick_settings_hearing_devices_connected">Active</string>
+    <!-- QuickSettings: Hearing devices' secondary label shown when there is no connected hearing aids. [CHAR LIMIT=NONE] -->
+    <string name="quick_settings_hearing_devices_disconnected">Disconnected</string>
     <!-- QuickSettings: Quick Settings Hearing devices dialog title [CHAR LIMIT=30] -->
     <string name="quick_settings_hearing_devices_dialog_title">Hearing devices</string>
     <!-- QuickSettings: Hearing devices dialog pair new device [CHAR LIMIT=NONE]-->
@@ -1944,15 +1946,15 @@
     <!-- Name used to refer to the "Back" key on the keyboard. -->
     <string name="keyboard_key_back">Back</string>
     <!-- Name used to refer to the "Up" arrow key on the keyboard. -->
-    <string name="keyboard_key_dpad_up">Up arrow</string>
+    <string name="keyboard_key_dpad_up" translatable="false">Up arrow</string>
     <!-- Name used to refer to the "Down" arrow key on the keyboard. -->
-    <string name="keyboard_key_dpad_down">Down arrow</string>
+    <string name="keyboard_key_dpad_down" translatable="false">Down arrow</string>
     <!-- Name used to refer to the "Left" arrow key on the keyboard. -->
-    <string name="keyboard_key_dpad_left">Left arrow</string>
+    <string name="keyboard_key_dpad_left" translatable="false">Left arrow</string>
     <!-- Name used to refer to the "Right" arrow key on the keyboard. -->
-    <string name="keyboard_key_dpad_right">Right arrow</string>
+    <string name="keyboard_key_dpad_right" translatable="false">Right arrow</string>
     <!-- Name used to refer to the "Center" arrow key on the keyboard. -->
-    <string name="keyboard_key_dpad_center">Center</string>
+    <string name="keyboard_key_dpad_center" translatable="false">Center</string>
     <!-- Name used to refer to the "Tab" key on the keyboard. -->
     <string name="keyboard_key_tab">Tab</string>
     <!-- Name used to refer to the "Space" key on the keyboard. -->
@@ -3369,7 +3371,7 @@
     <string name="rotation_tile_with_posture_secondary_label_template">%1$s / %2$s</string>
     <!-- Title for notification of low stylus battery with percentage. "percentage" is
         the value of the battery capacity remaining [CHAR LIMIT=none]-->
-    <string name="stylus_battery_low_percentage"><xliff:g id="percentage" example="16%">%s</xliff:g> battery remaining</string>
+    <string name="stylus_battery_low_percentage">Stylus battery <xliff:g id="percentage" example="16%">%s</xliff:g></string>
     <!-- Subtitle for the notification sent when a stylus battery is low. [CHAR LIMIT=none]-->
     <string name="stylus_battery_low_subtitle">Connect your stylus to a charger</string>
 
@@ -3527,6 +3529,14 @@
          use. The helper shows shortcuts in categories, which can be collapsed or expanded.
          [CHAR LIMIT=NONE] -->
     <string name="shortcut_helper_content_description_expand_icon">Expand icon</string>
+    <!-- Word that separates different possible key combinations of a shortcut. For example the
+         "Go to home screen" shortcut could be triggered using "home button" OR "ctrl + h".
+         This is that "or" separator.
+         The keyboard shortcut helper is a  component that shows the  user which keyboard shortcuts
+         they can use.
+         [CHAR LIMIT=NONE]
+          -->
+    <string name="shortcut_helper_key_combinations_or_separator">or</string>
 
     <!-- Content description for keyboard backlight brightness dialog [CHAR LIMIT=NONE] -->
     <string name="keyboard_backlight_dialog_title">Keyboard backlight</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 1e0adec..73b7586 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -338,8 +338,11 @@
         <item name="android:textSize">16sp</item>
     </style>
 
-    <style name="AuthCredentialPanelStyle">
+    <style name="AuthNonCredentialPanelStyle">
         <item name="android:background">?androidprv:attr/materialColorSurfaceBright</item>
+    </style>
+
+    <style name="AuthCredentialPanelStyle" parent="AuthNonCredentialPanelStyle">
         <item name="android:clickable">true</item>
         <item name="android:clipToOutline">true</item>
         <item name="android:importantForAccessibility">no</item>
diff --git a/packages/SystemUI/res/xml/fileprovider.xml b/packages/SystemUI/res/xml/fileprovider.xml
index 71cc05d..78b7e95 100644
--- a/packages/SystemUI/res/xml/fileprovider.xml
+++ b/packages/SystemUI/res/xml/fileprovider.xml
@@ -19,5 +19,4 @@
     <cache-path name="leak" path="leak/"/>
     <external-path name="screenrecord" path="."/>
     <cache-path name="multi_user" path="multi_user/" />
-    <root-path name="traces" path="/data/local/traces"/>
 </paths>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
index c33b7ce..c225cbc 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
@@ -87,10 +87,15 @@
         mTmpDestinationRect.inset(insets);
         // Scale to the bounds no smaller than the destination and offset such that the top/left
         // of the scaled inset source rect aligns with the top/left of the destination bounds
-        final float scale;
+        final float scale, left, top;
         if (sourceRectHint.isEmpty() || sourceRectHint.width() == sourceBounds.width()) {
             scale = Math.max((float) destinationBounds.width() / sourceBounds.width(),
                     (float) destinationBounds.height() / sourceBounds.height());
+            // Work around the rounding error by fix the position at very beginning.
+            left = scale == 1
+                    ? 0 : destinationBounds.left - (insets.left + sourceBounds.left) * scale;
+            top = scale == 1
+                    ? 0 : destinationBounds.top - (insets.top + sourceBounds.top) * scale;
         } else {
             // scale by sourceRectHint if it's not edge-to-edge
             final float endScale = sourceRectHint.width() <= sourceRectHint.height()
@@ -100,9 +105,9 @@
                     ? (float) destinationBounds.width() / sourceBounds.width()
                     : (float) destinationBounds.height() / sourceBounds.height();
             scale = Math.min((1 - progress) * startScale + progress * endScale, 1.0f);
+            left = destinationBounds.left - (insets.left + sourceBounds.left) * scale;
+            top = destinationBounds.top - (insets.top + sourceBounds.top) * scale;
         }
-        final float left = destinationBounds.left - (insets.left + sourceBounds.left) * scale;
-        final float top = destinationBounds.top - (insets.top + sourceBounds.top) * scale;
         mTmpTransform.setScale(scale, scale);
         final float cornerRadius = getScaledCornerRadius(mTmpDestinationRect, destinationBounds);
         tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.kt
index dcf7754..757760f 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.kt
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.kt
@@ -70,10 +70,10 @@
 
         @JvmStatic
         fun wrap(taskIds: IntArray?, snapshots: Array<TaskSnapshot>?): HashMap<Int, ThumbnailData> {
-            return if (taskIds == null || snapshots == null || taskIds.size != snapshots.size) {
-                HashMap()
-            } else {
-                HashMap(taskIds.associateWith { taskId -> fromSnapshot(snapshots[taskId]) })
+            return hashMapOf<Int, ThumbnailData>().apply {
+                if (taskIds != null && snapshots != null && taskIds.size == snapshots.size) {
+                    repeat(snapshots.size) { put(taskIds[it], fromSnapshot(snapshots[it])) }
+                }
             }
         }
 
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java
index b4377ea..c0c8b75 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java
@@ -122,6 +122,8 @@
     public static final long SYSUI_STATE_STATUS_BAR_KEYGUARD_GOING_AWAY = 1L << 31;
     // Physical keyboard shortcuts helper is showing
     public static final long SYSUI_STATE_SHORTCUT_HELPER_SHOWING = 1L << 32;
+    // Touchpad gestures are disabled
+    public static final long SYSUI_STATE_TOUCHPAD_GESTURES_DISABLED = 1L << 33;
 
     // Mask for SystemUiStateFlags to isolate SYSUI_STATE_AWAKE and
     // SYSUI_STATE_WAKEFULNESS_TRANSITION, to match WAKEFULNESS_* constants
@@ -170,6 +172,7 @@
             SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE,
             SYSUI_STATE_STATUS_BAR_KEYGUARD_GOING_AWAY,
             SYSUI_STATE_SHORTCUT_HELPER_SHOWING,
+            SYSUI_STATE_TOUCHPAD_GESTURES_DISABLED,
     })
     public @interface SystemUiStateFlags {}
 
@@ -271,6 +274,9 @@
         if ((flags & SYSUI_STATE_SHORTCUT_HELPER_SHOWING) != 0) {
             str.add("shortcut_helper_showing");
         }
+        if ((flags & SYSUI_STATE_TOUCHPAD_GESTURES_DISABLED) != 0) {
+            str.add("touchpad_gestures_disabled");
+        }
 
         return str.toString();
     }
diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
index 86c807b..5dcf161 100644
--- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
+++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
@@ -178,6 +178,7 @@
         smallClockOnAttachStateChangeListener =
             object : OnAttachStateChangeListener {
                 var pastVisibility: Int? = null
+
                 override fun onViewAttachedToWindow(view: View) {
                     clock.events.onTimeFormatChanged(DateFormat.is24HourFormat(context))
                     // Match the asing for view.parent's layout classes.
@@ -213,6 +214,7 @@
                 override fun onViewAttachedToWindow(p0: View) {
                     clock.events.onTimeFormatChanged(DateFormat.is24HourFormat(context))
                 }
+
                 override fun onViewDetachedFromWindow(p0: View) {}
             }
         clock.largeClock.view.addOnAttachStateChangeListener(largeClockOnAttachStateChangeListener)
@@ -284,8 +286,10 @@
 
     var smallRegionSampler: RegionSampler? = null
         private set
+
     var largeRegionSampler: RegionSampler? = null
         private set
+
     var smallTimeListener: TimeListener? = null
     var largeTimeListener: TimeListener? = null
     val shouldTimeListenerRun: Boolean
@@ -560,7 +564,7 @@
     internal fun listenForAnyStateToAodTransition(scope: CoroutineScope): Job {
         return scope.launch {
             keyguardTransitionInteractor
-                .transitionStepsToState(AOD)
+                .transition(Edge.create(to = AOD))
                 .filter { it.transitionState == TransitionState.STARTED }
                 .filter { it.from != LOCKSCREEN }
                 .collect { handleDoze(1f) }
@@ -571,7 +575,7 @@
     internal fun listenForAnyStateToLockscreenTransition(scope: CoroutineScope): Job {
         return scope.launch {
             keyguardTransitionInteractor
-                .transitionStepsToState(LOCKSCREEN)
+                .transition(Edge.create(to = LOCKSCREEN))
                 .filter { it.transitionState == TransitionState.STARTED }
                 .filter { it.from != AOD }
                 .collect { handleDoze(0f) }
@@ -586,7 +590,7 @@
     internal fun listenForAnyStateToDozingTransition(scope: CoroutineScope): Job {
         return scope.launch {
             keyguardTransitionInteractor
-                .transitionStepsToState(DOZING)
+                .transition(Edge.create(to = DOZING))
                 .filter { it.transitionState == TransitionState.FINISHED }
                 .collect { handleDoze(1f) }
         }
diff --git a/packages/SystemUI/src/com/android/keyguard/LegacyLockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LegacyLockIconViewController.java
index a9fd340..03b13fe 100644
--- a/packages/SystemUI/src/com/android/keyguard/LegacyLockIconViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/LegacyLockIconViewController.java
@@ -70,7 +70,7 @@
 import com.android.systemui.keyguard.MigrateClocksToBlueprint;
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
-import com.android.systemui.keyguard.shared.model.TransitionStep;
+import com.android.systemui.keyguard.shared.model.KeyguardState;
 import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.res.R;
@@ -167,9 +167,9 @@
     private LockIconView mView;
 
     @VisibleForTesting
-    final Consumer<TransitionStep> mDozeTransitionCallback = (TransitionStep step) -> {
-        mInterpolatedDarkAmount = step.getValue();
-        mView.setDozeAmount(step.getValue());
+    final Consumer<Float> mDozeTransitionCallback = (Float value) -> {
+        mInterpolatedDarkAmount = value;
+        mView.setDozeAmount(value);
         updateBurnInOffsets();
     };
 
@@ -265,7 +265,7 @@
         mView.setAccessibilityDelegate(mAccessibilityDelegate);
 
         if (mFeatureFlags.isEnabled(DOZING_MIGRATION_1)) {
-            collectFlow(mView, mTransitionInteractor.getDozeAmountTransition(),
+            collectFlow(mView, mTransitionInteractor.transitionValue(KeyguardState.AOD),
                     mDozeTransitionCallback);
             collectFlow(mView, mKeyguardInteractor.isDozing(), mIsDozingCallback);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java
index d5e911e..dafd5f8 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java
@@ -311,6 +311,7 @@
             constrainPositionAndUpdate(
                     new PointF(mMenuView.getTranslationX(), mMenuView.getTranslationY()),
                     /* writeToPosition = */ true);
+            mMenuView.onPositionChanged(true);
             moveToEdgeAndHide();
             return true;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java
index 7519168..9511e37 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java
@@ -107,6 +107,7 @@
                         mVelocityTracker.computeCurrentVelocity(VELOCITY_UNIT_SECONDS);
                         mMenuAnimationController.flingMenuThenSpringToEdge(endX,
                                 mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity());
+                        mMenuAnimationController.fadeOutIfEnabled();
                     }
                     // Avoid triggering the listener of the item.
                     return true;
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesChecker.java b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesChecker.java
new file mode 100644
index 0000000..2d1cd03
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesChecker.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.accessibility.hearingaid;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.settingslib.bluetooth.BluetoothUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.systemui.dagger.SysUISingleton;
+
+import javax.inject.Inject;
+
+/**
+ * HearingDevicesChecker provides utility methods to determine the presence and status of
+ * connected hearing aid devices.
+ *
+ * <p>It also filters out devices that are exclusively managed by other applications to avoid
+ * interfering with their operation.
+ */
+@SysUISingleton
+public class HearingDevicesChecker {
+
+    private final Context mContext;
+    private final LocalBluetoothManager mLocalBluetoothManager;
+
+    @Inject
+    public HearingDevicesChecker(
+            Context context,
+            @Nullable LocalBluetoothManager localBluetoothManager) {
+        mContext = context;
+        mLocalBluetoothManager = localBluetoothManager;
+    }
+
+    /**
+     * Checks if any hearing device is already paired.
+     *
+     * <p>It includes {@link BluetoothDevice.BOND_BONDING} and {@link BluetoothDevice.BOND_BONDED}).
+     *
+     * <p>A bonded device means it has been paired, but may not connected now.
+     *
+     * @return {@code true} if any bonded hearing device is found, {@code false} otherwise.
+     */
+    @WorkerThread
+    public boolean isAnyPairedHearingDevice() {
+        if (mLocalBluetoothManager == null) {
+            return false;
+        }
+        if (!mLocalBluetoothManager.getBluetoothAdapter().isEnabled()) {
+            return false;
+        }
+
+        return mLocalBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy().stream()
+                .anyMatch(device -> device.isHearingAidDevice()
+                        && device.getBondState() != BluetoothDevice.BOND_NONE
+                        && !isExclusivelyManagedBluetoothDevice(device));
+    }
+
+    /**
+     * Checks if there are any active hearing device.
+     *
+     * <p>An active device means it is currently connected and streaming media.
+     *
+     * @return {@code true} if any active hearing device is found, {@code false} otherwise.
+     */
+    @WorkerThread
+    public boolean isAnyActiveHearingDevice() {
+        if (mLocalBluetoothManager == null) {
+            return false;
+        }
+        if (!mLocalBluetoothManager.getBluetoothAdapter().isEnabled()) {
+            return false;
+        }
+
+        return mLocalBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy().stream()
+                .anyMatch(device -> BluetoothUtils.isActiveMediaDevice(device)
+                        && BluetoothUtils.isAvailableHearingDevice(device)
+                        && !isExclusivelyManagedBluetoothDevice(device));
+    }
+
+    private boolean isExclusivelyManagedBluetoothDevice(
+            @NonNull CachedBluetoothDevice cachedDevice) {
+        if (com.android.settingslib.flags.Flags.enableHideExclusivelyManagedBluetoothDevice()) {
+            return BluetoothUtils.isExclusivelyManagedBluetoothDevice(mContext,
+                    cachedDevice.getDevice());
+        }
+        return false;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManager.java b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManager.java
index 14e5f34..bc4cb45 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManager.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManager.java
@@ -16,19 +16,24 @@
 
 package com.android.systemui.accessibility.hearingaid;
 
-import android.bluetooth.BluetoothDevice;
 import android.util.Log;
 
-import androidx.annotation.Nullable;
+import androidx.concurrent.futures.CallbackToFutureAdapter;
 
 import com.android.internal.jank.InteractionJankMonitor;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.systemui.animation.DialogCuj;
 import com.android.systemui.animation.DialogTransitionAnimator;
 import com.android.systemui.animation.Expandable;
 import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.qualifiers.Background;
+import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.statusbar.phone.SystemUIDialog;
 
+import com.google.common.util.concurrent.ListenableFuture;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+
 import javax.inject.Inject;
 
 /**
@@ -43,16 +48,22 @@
     private SystemUIDialog mDialog;
     private final DialogTransitionAnimator mDialogTransitionAnimator;
     private final HearingDevicesDialogDelegate.Factory mDialogFactory;
-    private final LocalBluetoothManager mLocalBluetoothManager;
+    private final HearingDevicesChecker mDevicesChecker;
+    private final Executor mBackgroundExecutor;
+    private final Executor mMainExecutor;
 
     @Inject
     public HearingDevicesDialogManager(
             DialogTransitionAnimator dialogTransitionAnimator,
             HearingDevicesDialogDelegate.Factory dialogFactory,
-            @Nullable LocalBluetoothManager localBluetoothManager) {
+            HearingDevicesChecker devicesChecker,
+            @Background Executor backgroundExecutor,
+            @Main Executor mainExecutor) {
         mDialogTransitionAnimator = dialogTransitionAnimator;
         mDialogFactory = dialogFactory;
-        mLocalBluetoothManager = localBluetoothManager;
+        mDevicesChecker = devicesChecker;
+        mBackgroundExecutor = backgroundExecutor;
+        mMainExecutor = mainExecutor;
     }
 
     /**
@@ -68,36 +79,41 @@
             destroyDialog();
         }
 
-        mDialog = mDialogFactory.create(!isAnyBondedHearingDevice()).createDialog();
+        final ListenableFuture<Boolean> pairedHearingDeviceCheckTask =
+                CallbackToFutureAdapter.getFuture(completer -> {
+                    mBackgroundExecutor.execute(
+                            () -> {
+                                completer.set(mDevicesChecker.isAnyPairedHearingDevice());
+                            });
+                    // This value is used only for debug purposes: it will be used in toString()
+                    // of returned future or error cases.
+                    return "isAnyPairedHearingDevice check";
+                });
+        pairedHearingDeviceCheckTask.addListener(() -> {
+            try {
+                mDialog = mDialogFactory.create(!pairedHearingDeviceCheckTask.get()).createDialog();
 
-        if (expandable != null) {
-            DialogTransitionAnimator.Controller controller = expandable.dialogTransitionController(
-                    new DialogCuj(InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
-                            INTERACTION_JANK_TAG));
-            if (controller != null) {
-                mDialogTransitionAnimator.show(mDialog,
-                        controller, /* animateBackgroundBoundsChange= */ true);
-                return;
+                if (expandable != null) {
+                    DialogTransitionAnimator.Controller controller =
+                            expandable.dialogTransitionController(
+                                    new DialogCuj(InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
+                                            INTERACTION_JANK_TAG));
+                    if (controller != null) {
+                        mDialogTransitionAnimator.show(mDialog,
+                                controller, /* animateBackgroundBoundsChange= */ true);
+                        return;
+                    }
+                }
+                mDialog.show();
+
+            } catch (InterruptedException | ExecutionException e) {
+                Log.e(TAG, "Exception occurs while running pairedHearingDeviceCheckTask", e);
             }
-        }
-        mDialog.show();
+        }, mMainExecutor);
     }
 
     private void destroyDialog() {
         mDialog.dismiss();
         mDialog = null;
     }
-
-    private boolean isAnyBondedHearingDevice() {
-        if (mLocalBluetoothManager == null) {
-            return false;
-        }
-        if (!mLocalBluetoothManager.getBluetoothAdapter().isEnabled()) {
-            return false;
-        }
-
-        return mLocalBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy().stream()
-                .anyMatch(device -> device.isHearingAidDevice()
-                        && device.getBondState() != BluetoothDevice.BOND_NONE);
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java b/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
index 9ef9938..fcd7ef5 100644
--- a/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
@@ -18,11 +18,15 @@
 
 import static com.android.systemui.ambient.touch.dagger.ShadeModule.NOTIFICATION_SHADE_GESTURE_INITIATION_HEIGHT;
 
+import android.app.DreamManager;
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.view.GestureDetector;
 import android.view.MotionEvent;
 
+import androidx.annotation.NonNull;
+
+import com.android.systemui.Flags;
 import com.android.systemui.shade.ShadeViewController;
 import com.android.systemui.statusbar.phone.CentralSurfaces;
 
@@ -38,28 +42,39 @@
 public class ShadeTouchHandler implements TouchHandler {
     private final Optional<CentralSurfaces> mSurfaces;
     private final ShadeViewController mShadeViewController;
+    private final DreamManager mDreamManager;
     private final int mInitiationHeight;
 
+    /**
+     * Tracks whether or not we are capturing a given touch. Will be null before and after a touch.
+     */
+    private Boolean mCapture;
+
     @Inject
     ShadeTouchHandler(Optional<CentralSurfaces> centralSurfaces,
             ShadeViewController shadeViewController,
+            DreamManager dreamManager,
             @Named(NOTIFICATION_SHADE_GESTURE_INITIATION_HEIGHT) int initiationHeight) {
         mSurfaces = centralSurfaces;
         mShadeViewController = shadeViewController;
+        mDreamManager = dreamManager;
         mInitiationHeight = initiationHeight;
     }
 
     @Override
     public void onSessionStart(TouchSession session) {
-        if (mSurfaces.map(CentralSurfaces::isBouncerShowing).orElse(false)) {
+        if (mSurfaces.isEmpty()) {
             session.pop();
             return;
         }
 
-        session.registerInputListener(ev -> {
-            mShadeViewController.handleExternalTouch((MotionEvent) ev);
+        session.registerCallback(() -> mCapture = null);
 
+        session.registerInputListener(ev -> {
             if (ev instanceof MotionEvent) {
+                if (mCapture != null && mCapture) {
+                    sendTouchEvent((MotionEvent) ev);
+                }
                 if (((MotionEvent) ev).getAction() == MotionEvent.ACTION_UP) {
                     session.pop();
                 }
@@ -68,19 +83,41 @@
 
         session.registerGestureListener(new GestureDetector.SimpleOnGestureListener() {
             @Override
-            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
+            public boolean onScroll(MotionEvent e1, @NonNull MotionEvent e2, float distanceX,
                     float distanceY) {
-                return true;
+                if (mCapture == null) {
+                    // Only capture swipes that are going downwards.
+                    mCapture = Math.abs(distanceY) > Math.abs(distanceX) && distanceY < 0;
+                    if (mCapture) {
+                        // Send the initial touches over, as the input listener has already
+                        // processed these touches.
+                        sendTouchEvent(e1);
+                        sendTouchEvent(e2);
+                    }
+                }
+                return mCapture;
             }
 
             @Override
-            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+            public boolean onFling(MotionEvent e1, @NonNull MotionEvent e2, float velocityX,
                     float velocityY) {
-                return true;
+                return mCapture;
             }
         });
     }
 
+    private void sendTouchEvent(MotionEvent event) {
+        if (Flags.communalHub() && !mDreamManager.isDreaming()) {
+            // Send touches to central surfaces only when on the glanceable hub while not dreaming.
+            // While sending touches where while dreaming will open the shade, the shade
+            // while closing if opened then closed in the same gesture.
+            mSurfaces.get().handleExternalShadeWindowTouch(event);
+        } else {
+            // Send touches to the shade view when dreaming.
+            mShadeViewController.handleExternalTouch(event);
+        }
+    }
+
     @Override
     public void getTouchInitiationRegion(Rect bounds, Region region, Rect exclusionRect) {
         final Rect outBounds = new Rect(bounds);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index 1ee4908..430ff07 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -515,7 +515,9 @@
         } else {
             throw new IllegalStateException("Unknown credential type: " + credentialType);
         }
-        mCredentialView = factory.inflate(layoutResourceId, null, false);
+        // TODO(b/288175645): Once AuthContainerView is removed, set 0dp in credential view xml
+        //  files with the corresponding left/right or top/bottom constraints being set to "parent".
+        mCredentialView = factory.inflate(layoutResourceId, mLayout, false);
 
         // The background is used for detecting taps / cancelling authentication. Since the
         // credential view is full-screen and should not be canceled from background taps,
@@ -552,8 +554,6 @@
         }
 
         mWakefulnessLifecycle.addObserver(this);
-        mPanelInteractionDetector.enable(
-                () -> animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED));
         if (constraintBp()) {
             // Do nothing on attachment with constraintLayout
         } else if (mPromptViewModel.getPromptKind().getValue().isBiometric()) {
@@ -566,6 +566,8 @@
         }
 
         if (!constraintBp()) {
+            mPanelInteractionDetector.enable(
+                    () -> animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED));
             updatePositionByCapability(false /* invalidate */);
         }
 
@@ -977,7 +979,7 @@
         final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT,
-                WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG,
+                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                 windowFlags,
                 PixelFormat.TRANSLUCENT);
         lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
index fb718d3..85b5faf 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
@@ -34,6 +34,7 @@
 import android.content.IntentFilter;
 import android.graphics.Rect;
 import android.hardware.biometrics.BiometricFingerprintConstants;
+import android.hardware.biometrics.BiometricPrompt;
 import android.hardware.biometrics.SensorProperties;
 import android.hardware.display.DisplayManager;
 import android.hardware.fingerprint.FingerprintManager;
@@ -43,7 +44,9 @@
 import android.hardware.fingerprint.IUdfpsOverlayControllerCallback;
 import android.hardware.input.InputManager;
 import android.os.Build;
+import android.os.CancellationSignal;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.PowerManager;
 import android.os.Trace;
 import android.os.VibrationAttributes;
@@ -382,6 +385,26 @@
             UdfpsController.this.mFingerprintManager.onUdfpsUiEvent(
                     FingerprintManager.UDFPS_UI_READY, requestId, sensorId);
         }
+
+        /**
+         * Debug to show biometric prompt
+         */
+        public void debugBiometricPrompt() {
+            final BiometricPrompt.AuthenticationCallback authenticationCallback =
+                    new BiometricPrompt.AuthenticationCallback() {
+                    };
+
+            final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(mContext)
+                    .setTitle("Test")
+                    .setDeviceCredentialAllowed(true)
+                    .setAllowBackgroundAuthentication(true)
+                    .build();
+            final Handler handler = new Handler(Looper.getMainLooper());
+            biometricPrompt.authenticate(
+                    new CancellationSignal(),
+                    handler::post,
+                    authenticationCallback);
+        }
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt
index 298b87d..c3d9240 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt
@@ -39,7 +39,6 @@
 import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
 import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
 import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
-import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.lifecycle.repeatWhenAttached
 import com.android.systemui.plugins.statusbar.StatusBarStateController
 import com.android.systemui.res.R
@@ -59,7 +58,6 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
-import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.launch
 
 /** Class that coordinates non-HBM animations during keyguard authentication. */
@@ -307,27 +305,12 @@
     @VisibleForTesting
     suspend fun listenForLockscreenAodTransitions(scope: CoroutineScope): Job {
         return scope.launch {
-            transitionInteractor.dozeAmountTransition.collect { transitionStep ->
-                if (
-                    transitionStep.from == AOD &&
-                        transitionStep.transitionState == TransitionState.CANCELED
-                ) {
-                    if (transitionInteractor.startedKeyguardTransitionStep.first().to != AOD) {
-                        // If the next started transition isn't transitioning back to AOD, force
-                        // doze amount to be 0f (as if the transition to the lockscreen completed).
-                        view.onDozeAmountChanged(
-                            0f,
-                            0f,
-                            UdfpsKeyguardViewLegacy.ANIMATION_NONE,
-                        )
-                    }
-                } else {
-                    view.onDozeAmountChanged(
-                        transitionStep.value,
-                        transitionStep.value,
-                        UdfpsKeyguardViewLegacy.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN,
-                    )
-                }
+            transitionInteractor.transitionValue(AOD).collect {
+                view.onDozeAmountChanged(
+                    it,
+                    it,
+                    UdfpsKeyguardViewLegacy.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN,
+                )
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsShell.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsShell.kt
index 88b9e1b..f5e3d29 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsShell.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsShell.kt
@@ -45,16 +45,13 @@
 private const val MINOR = 10F
 private const val MAJOR = 10F
 
-/**
- * Used to show and hide the UDFPS overlay with statusbar commands.
- */
+/** Used to show and hide the UDFPS overlay with statusbar commands. */
 @SysUISingleton
-class UdfpsShell @Inject constructor(
-    commandRegistry: CommandRegistry
-) : Command {
+class UdfpsShell @Inject constructor(commandRegistry: CommandRegistry) : Command {
 
     /**
      * Set in [UdfpsController.java] constructor, used to show and hide the UDFPS overlay.
+     *
      * TODO: inject after b/229290039 is resolved
      */
     var udfpsOverlayController: UdfpsController.UdfpsOverlayController? = null
@@ -76,6 +73,8 @@
             simFingerDown()
         } else if (args.size == 1 && args[0] == "simFingerUp") {
             simFingerUp()
+        } else if (args.size == 1 && args[0] == "biometricPrompt") {
+            launchBiometricPrompt()
         } else {
             invalidCommand(pw)
         }
@@ -85,8 +84,10 @@
         pw.println("Usage: adb shell cmd statusbar udfps <cmd>")
         pw.println("Supported commands:")
         pw.println("  - show <reason>")
-        pw.println("    -> supported reasons: [enroll-find-sensor, enroll-enrolling, auth-bp, " +
-                            "auth-keyguard, auth-other, auth-settings]")
+        pw.println(
+            "    -> supported reasons: [enroll-find-sensor, enroll-enrolling, auth-bp, " +
+                "auth-keyguard, auth-other, auth-settings]"
+        )
         pw.println("    -> reason otherwise defaults to unknown")
         pw.println("  - hide")
         pw.println("  - onUiReady")
@@ -94,6 +95,8 @@
         pw.println("    -> Simulates onFingerDown on sensor")
         pw.println("  - simFingerUp")
         pw.println("    -> Simulates onFingerUp on sensor")
+        pw.println("  - biometricPrompt")
+        pw.println("    -> Shows Biometric Prompt")
     }
 
     private fun invalidCommand(pw: PrintWriter) {
@@ -115,14 +118,14 @@
 
     private fun showOverlay(reason: Int) {
         udfpsOverlayController?.showUdfpsOverlay(
-                REQUEST_ID,
-                SENSOR_ID,
-                reason,
-                object : IUdfpsOverlayControllerCallback.Stub() {
-                    override fun onUserCanceled() {
-                        Log.e(TAG, "User cancelled")
-                    }
+            REQUEST_ID,
+            SENSOR_ID,
+            reason,
+            object : IUdfpsOverlayControllerCallback.Stub() {
+                override fun onUserCanceled() {
+                    Log.e(TAG, "User cancelled")
                 }
+            }
         )
     }
 
@@ -130,6 +133,9 @@
         udfpsOverlayController?.hideUdfpsOverlay(SENSOR_ID)
     }
 
+    private fun launchBiometricPrompt() {
+        udfpsOverlayController?.debugBiometricPrompt()
+    }
 
     @VisibleForTesting
     fun onUiReady() {
@@ -140,12 +146,24 @@
     fun simFingerDown() {
         val sensorBounds: Rect = udfpsOverlayController!!.sensorBounds
 
-        val downEvent: MotionEvent? = obtainMotionEvent(ACTION_DOWN, sensorBounds.exactCenterX(),
-                sensorBounds.exactCenterY(), MINOR, MAJOR)
+        val downEvent: MotionEvent? =
+            obtainMotionEvent(
+                ACTION_DOWN,
+                sensorBounds.exactCenterX(),
+                sensorBounds.exactCenterY(),
+                MINOR,
+                MAJOR
+            )
         udfpsOverlayController?.debugOnTouch(downEvent)
 
-        val moveEvent: MotionEvent? = obtainMotionEvent(ACTION_MOVE, sensorBounds.exactCenterX(),
-                sensorBounds.exactCenterY(), MINOR, MAJOR)
+        val moveEvent: MotionEvent? =
+            obtainMotionEvent(
+                ACTION_MOVE,
+                sensorBounds.exactCenterX(),
+                sensorBounds.exactCenterY(),
+                MINOR,
+                MAJOR
+            )
         udfpsOverlayController?.debugOnTouch(moveEvent)
 
         downEvent?.recycle()
@@ -156,18 +174,24 @@
     fun simFingerUp() {
         val sensorBounds: Rect = udfpsOverlayController!!.sensorBounds
 
-        val upEvent: MotionEvent? = obtainMotionEvent(ACTION_UP, sensorBounds.exactCenterX(),
-                sensorBounds.exactCenterY(), MINOR, MAJOR)
+        val upEvent: MotionEvent? =
+            obtainMotionEvent(
+                ACTION_UP,
+                sensorBounds.exactCenterX(),
+                sensorBounds.exactCenterY(),
+                MINOR,
+                MAJOR
+            )
         udfpsOverlayController?.debugOnTouch(upEvent)
         upEvent?.recycle()
     }
 
     private fun obtainMotionEvent(
-            action: Int,
-            x: Float,
-            y: Float,
-            minor: Float,
-            major: Float
+        action: Int,
+        x: Float,
+        y: Float,
+        minor: Float,
+        major: Float
     ): MotionEvent? {
         val pp = MotionEvent.PointerProperties()
         pp.id = 1
@@ -176,7 +200,21 @@
         pc.y = y
         pc.touchMinor = minor
         pc.touchMajor = major
-        return MotionEvent.obtain(0, 0, action, 1, arrayOf(pp), arrayOf(pc),
-                0, 0, 1f, 1f, 0, 0, 0, 0)
+        return MotionEvent.obtain(
+            0,
+            0,
+            action,
+            1,
+            arrayOf(pp),
+            arrayOf(pc),
+            0,
+            0,
+            1f,
+            1f,
+            0,
+            0,
+            0,
+            0
+        )
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
index c836f89..628b533 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
@@ -367,21 +367,21 @@
                                 smallConstraintSet.setGuidelineEnd(topGuideline.id, abs(bounds.top))
                             }
 
-                            // Use rect bottom to set mid guideline of two-pane.
                             if (midGuideline != null) {
-                                if (bounds.bottom >= 0) {
-                                    midGuideline.setGuidelineEnd(bounds.bottom)
-                                    mediumConstraintSet.setGuidelineEnd(
-                                        midGuideline.id,
-                                        bounds.bottom
-                                    )
-                                } else if (bounds.bottom < 0) {
-                                    midGuideline.setGuidelineBegin(abs(bounds.bottom))
-                                    mediumConstraintSet.setGuidelineBegin(
-                                        midGuideline.id,
-                                        abs(bounds.bottom)
-                                    )
-                                }
+                                val left =
+                                    if (bounds.left >= 0) {
+                                        bounds.left
+                                    } else {
+                                        view.width - abs(bounds.left)
+                                    }
+                                val right =
+                                    if (bounds.right >= 0) {
+                                        view.width - abs(bounds.right)
+                                    } else {
+                                        bounds.right
+                                    }
+                                val mid = (left + right) / 2
+                                mediumConstraintSet.setGuidelineBegin(midGuideline.id, mid)
                             }
                         }
                     }
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
index 9e836c3..900d7cc 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
@@ -17,26 +17,30 @@
 
 package com.android.systemui.biometrics.ui.binder
 
-import android.graphics.drawable.Animatable2
 import android.graphics.drawable.AnimatedVectorDrawable
-import android.graphics.drawable.Drawable
+import android.util.Log
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.ConstraintSet
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.repeatOnLifecycle
 import com.airbnb.lottie.LottieAnimationView
 import com.airbnb.lottie.LottieOnCompositionLoadedListener
+import com.airbnb.lottie.LottieListener
 import com.android.settingslib.widget.LottieColorUtils
 import com.android.systemui.Flags.constraintBp
 import com.android.systemui.biometrics.ui.viewmodel.PromptIconViewModel
 import com.android.systemui.biometrics.ui.viewmodel.PromptIconViewModel.AuthType
 import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel
 import com.android.systemui.lifecycle.repeatWhenAttached
+import com.android.systemui.res.R
 import com.android.systemui.util.kotlin.Utils.Companion.toQuad
-import com.android.systemui.util.kotlin.Utils.Companion.toQuint
 import com.android.systemui.util.kotlin.Utils.Companion.toTriple
 import com.android.systemui.util.kotlin.sample
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.launch
 
+private const val TAG = "PromptIconViewBinder"
+
 /** Sub-binder for [BiometricPromptLayout.iconView]. */
 object PromptIconViewBinder {
     /**
@@ -63,16 +67,37 @@
                 }
 
                 var faceIcon: AnimatedVectorDrawable? = null
-                val faceIconCallback =
-                    object : Animatable2.AnimationCallback() {
-                        override fun onAnimationStart(drawable: Drawable) {
-                            viewModel.onAnimationStart()
-                        }
 
-                        override fun onAnimationEnd(drawable: Drawable) {
-                            viewModel.onAnimationEnd()
+                fun updateXmlIconAsset(
+                    iconAsset: Int,
+                    shouldAnimateIconView: Boolean,
+                    activeAuthType: AuthType
+                ) {
+                    faceIcon?.stop()
+                    faceIcon = iconView.context.getDrawable(iconAsset) as AnimatedVectorDrawable
+                    faceIcon?.apply {
+                        iconView.setIconFailureListener(iconAsset, activeAuthType)
+                        iconView.setImageDrawable(this)
+                        if (shouldAnimateIconView) {
+                            forceAnimationOnUI()
+                            start()
                         }
                     }
+                }
+
+                fun updateJsonIconAsset(
+                    iconAsset: Int,
+                    shouldAnimateIconView: Boolean,
+                    activeAuthType: AuthType
+                ) {
+                    iconView.setIconFailureListener(iconAsset, activeAuthType)
+                    iconView.setAnimation(iconAsset)
+                    iconView.frame = 0
+
+                    if (shouldAnimateIconView) {
+                        iconView.playAnimation()
+                    }
+                }
 
                 if (!constraintBp()) {
                     launch {
@@ -138,47 +163,55 @@
                             combine(
                                 viewModel.activeAuthType,
                                 viewModel.shouldAnimateIconView,
-                                viewModel.shouldRepeatAnimation,
                                 viewModel.showingError,
-                                ::toQuad
+                                ::Triple
                             ),
-                            ::toQuint
+                            ::toQuad
                         )
-                        .collect {
-                            (
-                                iconAsset,
-                                activeAuthType,
-                                shouldAnimateIconView,
-                                shouldRepeatAnimation,
-                                showingError) ->
+                        .collect { (iconAsset, activeAuthType, shouldAnimateIconView, showingError)
+                            ->
                             if (iconAsset != -1) {
                                 when (activeAuthType) {
                                     AuthType.Fingerprint,
                                     AuthType.Coex -> {
-                                        iconView.setAnimation(iconAsset)
-                                        iconView.frame = 0
-
-                                        if (shouldAnimateIconView) {
-                                            iconView.playAnimation()
+                                        // TODO(b/318569643): Until assets unified to one type, this
+                                        // check
+                                        //  is needed in face-auth-error-triggered implicit ->
+                                        // explicit
+                                        //  coex auth transition, in case iconAsset updates to
+                                        //  face_dialog_dark_to_error (XML) after activeAuthType
+                                        // updates
+                                        //  from AuthType.Face (which expects XML)
+                                        //  to AuthType.Coex (which expects JSON)
+                                        if (iconAsset == R.drawable.face_dialog_dark_to_error) {
+                                            updateXmlIconAsset(
+                                                iconAsset,
+                                                shouldAnimateIconView,
+                                                activeAuthType
+                                            )
+                                        } else {
+                                            updateJsonIconAsset(
+                                                iconAsset,
+                                                shouldAnimateIconView,
+                                                activeAuthType
+                                            )
                                         }
                                     }
                                     AuthType.Face -> {
-                                        faceIcon?.apply {
-                                            unregisterAnimationCallback(faceIconCallback)
-                                            stop()
-                                        }
-                                        faceIcon =
-                                            iconView.context.getDrawable(iconAsset)
-                                                as AnimatedVectorDrawable
-                                        faceIcon?.apply {
-                                            iconView.setImageDrawable(this)
-                                            if (shouldAnimateIconView) {
-                                                forceAnimationOnUI()
-                                                if (shouldRepeatAnimation) {
-                                                    registerAnimationCallback(faceIconCallback)
-                                                }
-                                                start()
-                                            }
+                                        // TODO(b/318569643): Consolidate logic once all face auth
+                                        // assets are migrated from drawable to json
+                                        if (iconAsset == R.raw.face_dialog_authenticating) {
+                                            updateJsonIconAsset(
+                                                iconAsset,
+                                                shouldAnimateIconView,
+                                                activeAuthType
+                                            )
+                                        } else {
+                                            updateXmlIconAsset(
+                                                iconAsset,
+                                                shouldAnimateIconView,
+                                                activeAuthType
+                                            )
                                         }
                                     }
                                 }
@@ -200,6 +233,7 @@
                         )
                         .collect { (iconOverlayAsset, shouldAnimateIconOverlay, showingError) ->
                             if (iconOverlayAsset != -1) {
+                                iconOverlayView.setIconOverlayFailureListener(iconOverlayAsset)
                                 iconOverlayView.setAnimation(iconOverlayAsset)
                                 iconOverlayView.frame = 0
                                 LottieColorUtils.applyDynamicColors(
@@ -234,3 +268,95 @@
         }
     }
 }
+
+private val assetIdToString: Map<Int, String> =
+    mapOf(
+        // UDFPS assets
+        R.raw.fingerprint_dialogue_error_to_fingerprint_lottie to
+            "fingerprint_dialogue_error_to_fingerprint_lottie",
+        R.raw.fingerprint_dialogue_error_to_success_lottie to
+            "fingerprint_dialogue_error_to_success_lottie",
+        R.raw.fingerprint_dialogue_fingerprint_to_error_lottie to
+            "fingerprint_dialogue_fingerprint_to_error_lottie",
+        R.raw.fingerprint_dialogue_fingerprint_to_success_lottie to
+            "fingerprint_dialogue_fingerprint_to_success_lottie",
+        // SFPS assets
+        R.raw.biometricprompt_fingerprint_to_error_landscape to
+            "biometricprompt_fingerprint_to_error_landscape",
+        R.raw.biometricprompt_folded_base_bottomright to "biometricprompt_folded_base_bottomright",
+        R.raw.biometricprompt_folded_base_default to "biometricprompt_folded_base_default",
+        R.raw.biometricprompt_folded_base_topleft to "biometricprompt_folded_base_topleft",
+        R.raw.biometricprompt_landscape_base to "biometricprompt_landscape_base",
+        R.raw.biometricprompt_portrait_base_bottomright to
+            "biometricprompt_portrait_base_bottomright",
+        R.raw.biometricprompt_portrait_base_topleft to "biometricprompt_portrait_base_topleft",
+        R.raw.biometricprompt_symbol_error_to_fingerprint_landscape to
+            "biometricprompt_symbol_error_to_fingerprint_landscape",
+        R.raw.biometricprompt_symbol_error_to_fingerprint_portrait_bottomright to
+            "biometricprompt_symbol_error_to_fingerprint_portrait_bottomright",
+        R.raw.biometricprompt_symbol_error_to_fingerprint_portrait_topleft to
+            "biometricprompt_symbol_error_to_fingerprint_portrait_topleft",
+        R.raw.biometricprompt_symbol_error_to_success_landscape to
+            "biometricprompt_symbol_error_to_success_landscape",
+        R.raw.biometricprompt_symbol_error_to_success_portrait_bottomright to
+            "biometricprompt_symbol_error_to_success_portrait_bottomright",
+        R.raw.biometricprompt_symbol_error_to_success_portrait_topleft to
+            "biometricprompt_symbol_error_to_success_portrait_topleft",
+        R.raw.biometricprompt_symbol_fingerprint_to_error_portrait_bottomright to
+            "biometricprompt_symbol_fingerprint_to_error_portrait_bottomright",
+        R.raw.biometricprompt_symbol_fingerprint_to_error_portrait_topleft to
+            "biometricprompt_symbol_fingerprint_to_error_portrait_topleft",
+        R.raw.biometricprompt_symbol_fingerprint_to_success_landscape to
+            "biometricprompt_symbol_fingerprint_to_success_landscape",
+        R.raw.biometricprompt_symbol_fingerprint_to_success_portrait_bottomright to
+            "biometricprompt_symbol_fingerprint_to_success_portrait_bottomright",
+        R.raw.biometricprompt_symbol_fingerprint_to_success_portrait_topleft to
+            "biometricprompt_symbol_fingerprint_to_success_portrait_topleft",
+        // Face assets
+        R.drawable.face_dialog_wink_from_dark to "face_dialog_wink_from_dark",
+        R.drawable.face_dialog_dark_to_checkmark to "face_dialog_dark_to_checkmark",
+        R.drawable.face_dialog_dark_to_error to "face_dialog_dark_to_error",
+        R.drawable.face_dialog_error_to_idle to "face_dialog_error_to_idle",
+        R.drawable.face_dialog_idle_static to "face_dialog_idle_static",
+        R.raw.face_dialog_authenticating to "face_dialog_authenticating",
+        // Co-ex assets
+        R.raw.fingerprint_dialogue_unlocked_to_checkmark_success_lottie to
+            "fingerprint_dialogue_unlocked_to_checkmark_success_lottie",
+        R.raw.fingerprint_dialogue_error_to_unlock_lottie to
+            "fingerprint_dialogue_error_to_unlock_lottie",
+        R.raw.fingerprint_dialogue_fingerprint_to_unlock_lottie to
+            "fingerprint_dialogue_fingerprint_to_unlock_lottie",
+    )
+
+private fun getAssetNameFromId(id: Int): String {
+    return assetIdToString.getOrDefault(id, "Asset $id not found")
+}
+
+private fun LottieAnimationView.setIconFailureListener(iconAsset: Int, activeAuthType: AuthType) {
+    setFailureListener(
+        LottieListener<Throwable> { result: Throwable? ->
+            Log.d(
+                TAG,
+                "Collecting iconAsset | " +
+                    "activeAuthType = $activeAuthType | " +
+                    "Invalid resource id: $iconAsset, " +
+                    "name ${getAssetNameFromId(iconAsset)}",
+                result
+            )
+        }
+    )
+}
+
+private fun LottieAnimationView.setIconOverlayFailureListener(iconOverlayAsset: Int) {
+    setFailureListener(
+        LottieListener<Throwable> { result: Throwable? ->
+            Log.d(
+                TAG,
+                "Collecting iconOverlayAsset | " +
+                    "Invalid resource id: $iconOverlayAsset, " +
+                    "name ${getAssetNameFromId(iconOverlayAsset)}",
+                result
+            )
+        }
+    )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
index bde3e99..7081661 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
@@ -32,12 +32,10 @@
 import com.android.systemui.util.kotlin.combine
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.flowOf
-import kotlinx.coroutines.flow.map
 
 /**
  * Models UI of [BiometricPromptLayout.iconView] and [BiometricPromptLayout.biometric_icon_overlay]
@@ -58,11 +56,8 @@
     }
 
     /**
-     * Indicates what auth type the UI currently displays.
-     * Fingerprint-only auth -> Fingerprint
-     * Face-only auth -> Face
-     * Co-ex auth, implicit flow -> Face
-     * Co-ex auth, explicit flow -> Coex
+     * Indicates what auth type the UI currently displays. Fingerprint-only auth -> Fingerprint
+     * Face-only auth -> Face Co-ex auth, implicit flow -> Face Co-ex auth, explicit flow -> Coex
      */
     val activeAuthType: Flow<AuthType> =
         combine(
@@ -119,35 +114,6 @@
         _previousIconOverlayWasError.value = previousIconOverlayWasError
     }
 
-    /** Called when iconView begins animating. */
-    fun onAnimationStart() {
-        _animationEnded.value = false
-    }
-
-    /** Called when iconView ends animating. */
-    fun onAnimationEnd() {
-        _animationEnded.value = true
-    }
-
-    private val _animationEnded: MutableStateFlow<Boolean> = MutableStateFlow(false)
-
-    /**
-     * Whether a face iconView should pulse (i.e. while isAuthenticating and previous animation
-     * ended).
-     */
-    val shouldPulseAnimation: Flow<Boolean> =
-        combine(_animationEnded, promptViewModel.isAuthenticating) {
-                animationEnded,
-                isAuthenticating ->
-                animationEnded && isAuthenticating
-            }
-            .distinctUntilChanged()
-
-    private val _lastPulseLightToDark: MutableStateFlow<Boolean> = MutableStateFlow(false)
-
-    /** Tracks whether a face iconView last pulsed light to dark (vs. dark to light) */
-    val lastPulseLightToDark: Flow<Boolean> = _lastPulseLightToDark.asStateFlow()
-
     val iconSize: Flow<Pair<Int, Int>> =
         combine(
             promptViewModel.position,
@@ -195,35 +161,22 @@
                         }
                     }
                 AuthType.Face ->
-                    shouldPulseAnimation.flatMapLatest { shouldPulseAnimation: Boolean ->
-                        if (shouldPulseAnimation) {
-                            val iconAsset =
-                                if (_lastPulseLightToDark.value) {
-                                    R.drawable.face_dialog_pulse_dark_to_light
-                                } else {
-                                    R.drawable.face_dialog_pulse_light_to_dark
-                                }
-                            _lastPulseLightToDark.value = !_lastPulseLightToDark.value
-                            flowOf(iconAsset)
-                        } else {
-                            combine(
-                                promptViewModel.isAuthenticated.distinctUntilChanged(),
-                                promptViewModel.isAuthenticating.distinctUntilChanged(),
-                                promptViewModel.isPendingConfirmation.distinctUntilChanged(),
-                                promptViewModel.showingError.distinctUntilChanged()
-                            ) {
-                                authState: PromptAuthState,
-                                isAuthenticating: Boolean,
-                                isPendingConfirmation: Boolean,
-                                showingError: Boolean ->
-                                getFaceIconViewAsset(
-                                    authState,
-                                    isAuthenticating,
-                                    isPendingConfirmation,
-                                    showingError
-                                )
-                            }
-                        }
+                    combine(
+                        promptViewModel.isAuthenticated.distinctUntilChanged(),
+                        promptViewModel.isAuthenticating.distinctUntilChanged(),
+                        promptViewModel.isPendingConfirmation.distinctUntilChanged(),
+                        promptViewModel.showingError.distinctUntilChanged()
+                    ) {
+                        authState: PromptAuthState,
+                        isAuthenticating: Boolean,
+                        isPendingConfirmation: Boolean,
+                        showingError: Boolean ->
+                        getFaceIconViewAsset(
+                            authState,
+                            isAuthenticating,
+                            isPendingConfirmation,
+                            showingError
+                        )
                     }
                 AuthType.Coex ->
                     combine(
@@ -327,8 +280,7 @@
         } else if (authState.isAuthenticated) {
             R.drawable.face_dialog_dark_to_checkmark
         } else if (isAuthenticating) {
-            _lastPulseLightToDark.value = false
-            R.drawable.face_dialog_pulse_dark_to_light
+            R.raw.face_dialog_authenticating
         } else if (showingError) {
             R.drawable.face_dialog_dark_to_error
         } else if (_previousIconWasError.value) {
@@ -703,16 +655,6 @@
             }
         }
 
-    /** Whether the current BiometricPromptLayout.iconView asset animation should be repeated. */
-    val shouldRepeatAnimation: Flow<Boolean> =
-        activeAuthType.flatMapLatest { activeAuthType: AuthType ->
-            when (activeAuthType) {
-                AuthType.Fingerprint,
-                AuthType.Coex -> flowOf(false)
-                AuthType.Face -> promptViewModel.isAuthenticating.map { it }
-            }
-        }
-
     /** Called on configuration changes */
     fun onConfigurationChanged(newConfig: Configuration) {
         displayStateInteractor.onConfigurationChanged(newConfig)
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt
index c17b83d..a39a74f 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt
@@ -306,10 +306,6 @@
         context.resources.getDimensionPixelSize(
             R.dimen.biometric_prompt_two_pane_udfps_horizontal_guideline_padding
         )
-    private val udfpsMidGuidelinePadding =
-        context.resources.getDimensionPixelSize(
-            R.dimen.biometric_prompt_two_pane_udfps_mid_guideline_padding
-        )
     private val mediumTopGuidelinePadding =
         context.resources.getDimensionPixelSize(
             R.dimen.biometric_prompt_one_pane_medium_top_guideline_padding
@@ -318,10 +314,6 @@
         context.resources.getDimensionPixelSize(
             R.dimen.biometric_prompt_two_pane_medium_horizontal_guideline_padding
         )
-    private val mediumMidGuidelinePadding =
-        context.resources.getDimensionPixelSize(
-            R.dimen.biometric_prompt_two_pane_medium_mid_guideline_padding
-        )
 
     /** Rect for positioning biometric icon */
     val iconPosition: Flow<Rect> =
@@ -449,7 +441,7 @@
         }
 
     /**
-     * Rect for positioning prompt guidelines (left, top, right, mid)
+     * Rect for positioning prompt guidelines (left, top, right, unused)
      *
      * Negative values are used to signify that guideline measuring should be flipped, measuring
      * from opposite side of the screen
@@ -472,22 +464,17 @@
                         if (size.isSmall) {
                             Rect(-smallHorizontalGuidelinePadding, 0, 0, 0)
                         } else if (modalities.hasUdfps) {
-                            Rect(udfpsHorizontalGuidelinePadding, 0, 0, udfpsMidGuidelinePadding)
+                            Rect(udfpsHorizontalGuidelinePadding, 0, 0, 0)
                         } else {
-                            Rect(-mediumHorizontalGuidelinePadding, 0, 0, mediumMidGuidelinePadding)
+                            Rect(-mediumHorizontalGuidelinePadding, 0, 0, 0)
                         }
                     PromptPosition.Left ->
                         if (size.isSmall) {
                             Rect(0, 0, -smallHorizontalGuidelinePadding, 0)
                         } else if (modalities.hasUdfps) {
-                            Rect(0, 0, udfpsHorizontalGuidelinePadding, -udfpsMidGuidelinePadding)
+                            Rect(0, 0, udfpsHorizontalGuidelinePadding, 0)
                         } else {
-                            Rect(
-                                0,
-                                0,
-                                -mediumHorizontalGuidelinePadding,
-                                -mediumMidGuidelinePadding
-                            )
+                            Rect(0, 0, -mediumHorizontalGuidelinePadding, 0)
                         }
                     PromptPosition.Top -> Rect()
                 }
diff --git a/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt b/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
index 8993a3b..38f51da 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
@@ -19,23 +19,25 @@
 import android.annotation.SuppressLint
 import android.app.DreamManager
 import com.android.systemui.CoreStartable
-import com.android.systemui.Flags.glanceableHubAllowKeyguardWhenDreaming
 import com.android.systemui.Flags.communalHub
+import com.android.systemui.Flags.glanceableHubAllowKeyguardWhenDreaming
 import com.android.systemui.Flags.restartDreamOnUnocclude
-import com.android.systemui.communal.domain.interactor.CommunalInteractor
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.keyguard.shared.model.filterState
 import com.android.systemui.power.domain.interactor.PowerInteractor
-import com.android.systemui.util.kotlin.Utils.Companion.sample
-import com.android.systemui.util.kotlin.sample
+import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.util.kotlin.Utils.Companion.sampleFilter
+import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
-import javax.inject.Inject
 
 /**
  * A [CoreStartable] responsible for automatically starting the dream when the communal hub is
@@ -48,7 +50,6 @@
     private val powerInteractor: PowerInteractor,
     private val keyguardInteractor: KeyguardInteractor,
     private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
-    private val communalInteractor: CommunalInteractor,
     private val dreamManager: DreamManager,
     @Background private val bgScope: CoroutineScope,
 ) : CoreStartable {
@@ -60,31 +61,28 @@
 
         // Return to dream from occluded when not already dreaming.
         if (restartDreamOnUnocclude()) {
-            keyguardTransitionInteractor.startedKeyguardTransitionStep
-                .sample(keyguardInteractor.isDreaming, ::Pair)
-                .filter {
-                    it.first.from == KeyguardState.OCCLUDED &&
-                        it.first.to == KeyguardState.DREAMING &&
-                        !it.second
-                }
+            keyguardTransitionInteractor
+                .transition(Edge.create(from = KeyguardState.OCCLUDED, to = KeyguardState.DREAMING))
+                .filterState(TransitionState.STARTED)
+                .sampleFilter(keyguardInteractor.isDreaming) { isDreaming -> !isDreaming }
                 .onEach { dreamManager.startDream() }
                 .launchIn(bgScope)
         }
 
         // Restart the dream underneath the hub in order to support the ability to swipe
         // away the hub to enter the dream.
-        keyguardTransitionInteractor.finishedKeyguardState
-            .sample(powerInteractor.isAwake, keyguardInteractor.isDreaming)
-            .onEach { (finishedState, isAwake, dreaming) ->
-                if (
-                    finishedState == KeyguardState.GLANCEABLE_HUB &&
-                        !dreaming &&
-                        !glanceableHubAllowKeyguardWhenDreaming() &&
-                        dreamManager.canStartDreaming(isAwake)
-                ) {
-                    dreamManager.startDream()
-                }
+        keyguardTransitionInteractor
+            .transition(
+                edge = Edge.create(to = Scenes.Communal),
+                edgeWithoutSceneContainer = Edge.create(to = KeyguardState.GLANCEABLE_HUB)
+            )
+            .filterState(TransitionState.FINISHED)
+            .sampleFilter(powerInteractor.isAwake) { isAwake ->
+                dreamManager.canStartDreaming(isAwake)
             }
+            .sampleFilter(keyguardInteractor.isDreaming) { isDreaming -> !isDreaming }
+            .filter { !glanceableHubAllowKeyguardWhenDreaming() }
+            .onEach { dreamManager.startDream() }
             .launchIn(bgScope)
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
index 260dcba..7a4006d 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
@@ -28,6 +28,7 @@
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.SharingStarted
@@ -51,7 +52,7 @@
     fun changeScene(toScene: SceneKey, transitionKey: TransitionKey? = null)
 
     /** Immediately snaps to the desired scene. */
-    fun snapToScene(toScene: SceneKey)
+    fun snapToScene(toScene: SceneKey, delayMillis: Long = 0)
 
     /**
      * Updates the transition state of the hub [SceneTransitionLayout].
@@ -92,10 +93,11 @@
         }
     }
 
-    override fun snapToScene(toScene: SceneKey) {
+    override fun snapToScene(toScene: SceneKey, delayMillis: Long) {
         applicationScope.launch {
             // SceneTransitionLayout state updates must be triggered on the thread the STL was
             // created on.
+            delay(delayMillis)
             sceneDataSource.snapToScene(toScene)
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
index 2be28ca..3e513f8 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
@@ -46,6 +46,7 @@
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.log.LogBuffer
 import com.android.systemui.log.core.Logger
@@ -98,7 +99,7 @@
     broadcastDispatcher: BroadcastDispatcher,
     private val widgetRepository: CommunalWidgetRepository,
     private val communalPrefsRepository: CommunalPrefsRepository,
-    mediaRepository: CommunalMediaRepository,
+    private val mediaRepository: CommunalMediaRepository,
     smartspaceRepository: SmartspaceRepository,
     keyguardInteractor: KeyguardInteractor,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
@@ -164,7 +165,7 @@
     /** Whether to start dreaming when returning from occluded */
     val dreamFromOccluded: Flow<Boolean> =
         keyguardTransitionInteractor
-            .transitionStepsToState(KeyguardState.OCCLUDED)
+            .transition(Edge.create(to = KeyguardState.OCCLUDED))
             .map { it.from == KeyguardState.DREAMING }
             .stateIn(scope = applicationScope, SharingStarted.Eagerly, false)
 
@@ -479,40 +480,41 @@
      * A flow of ongoing content, including smartspace timers and umo, ordered by creation time and
      * sized dynamically.
      */
-    val ongoingContent: Flow<List<CommunalContentModel.Ongoing>> =
+    fun getOngoingContent(mediaHostVisible: Boolean): Flow<List<CommunalContentModel.Ongoing>> =
         combine(smartspaceTargets, mediaRepository.mediaModel) { smartspace, media ->
-            val ongoingContent = mutableListOf<CommunalContentModel.Ongoing>()
+                val ongoingContent = mutableListOf<CommunalContentModel.Ongoing>()
 
-            // Add smartspace
-            ongoingContent.addAll(
-                smartspace.map { target ->
-                    CommunalContentModel.Smartspace(
-                        smartspaceTargetId = target.smartspaceTargetId,
-                        remoteViews = target.remoteViews!!,
-                        createdTimestampMillis = target.creationTimeMillis,
+                // Add smartspace
+                ongoingContent.addAll(
+                    smartspace.map { target ->
+                        CommunalContentModel.Smartspace(
+                            smartspaceTargetId = target.smartspaceTargetId,
+                            remoteViews = target.remoteViews!!,
+                            createdTimestampMillis = target.creationTimeMillis,
+                        )
+                    }
+                )
+
+                // Add UMO
+                if (mediaHostVisible && media.hasActiveMediaOrRecommendation) {
+                    ongoingContent.add(
+                        CommunalContentModel.Umo(
+                            createdTimestampMillis = media.createdTimestampMillis,
+                        )
                     )
                 }
-            )
 
-            // Add UMO
-            if (media.hasActiveMediaOrRecommendation) {
-                ongoingContent.add(
-                    CommunalContentModel.Umo(
-                        createdTimestampMillis = media.createdTimestampMillis,
-                    )
-                )
+                // Order by creation time descending
+                ongoingContent.sortByDescending { it.createdTimestampMillis }
+
+                // Dynamic sizing
+                ongoingContent.forEachIndexed { index, model ->
+                    model.size = dynamicContentSize(ongoingContent.size, index)
+                }
+
+                ongoingContent
             }
-
-            // Order by creation time descending
-            ongoingContent.sortByDescending { it.createdTimestampMillis }
-
-            // Dynamic sizing
-            ongoingContent.forEachIndexed { index, model ->
-                model.size = dynamicContentSize(ongoingContent.size, index)
-            }
-
-            return@combine ongoingContent
-        }
+            .flowOn(bgDispatcher)
 
     /**
      * Filter and retain widgets associated with an existing user, safeguarding against displaying
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
index 5cfe979..0dab67c 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
@@ -53,8 +53,8 @@
     }
 
     /** Immediately snaps to the new scene. */
-    fun snapToScene(newScene: SceneKey) {
-        communalSceneRepository.snapToScene(newScene)
+    fun snapToScene(newScene: SceneKey, delayMillis: Long = 0) {
+        communalSceneRepository.snapToScene(newScene, delayMillis)
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/communal/shared/model/CommunalBackgroundType.kt b/packages/SystemUI/src/com/android/systemui/communal/shared/model/CommunalBackgroundType.kt
index 8b816db..4eaba06 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/shared/model/CommunalBackgroundType.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/shared/model/CommunalBackgroundType.kt
@@ -21,4 +21,5 @@
     DEFAULT(0),
     STATIC_GRADIENT(1),
     ANIMATED(2),
+    NONE(3),
 }
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
index bc65ccb..5312aec 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
@@ -24,6 +24,7 @@
 import android.util.Log
 import androidx.activity.result.ActivityResultLauncher
 import com.android.internal.logging.UiEventLogger
+import com.android.systemui.Flags.enableWidgetPickerSizeFilter
 import com.android.systemui.communal.domain.interactor.CommunalInteractor
 import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
 import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
@@ -36,6 +37,7 @@
 import com.android.systemui.log.dagger.CommunalLog
 import com.android.systemui.media.controls.ui.view.MediaHost
 import com.android.systemui.media.dagger.MediaModule
+import com.android.systemui.res.R
 import javax.inject.Inject
 import javax.inject.Named
 import kotlinx.coroutines.CoroutineDispatcher
@@ -138,6 +140,16 @@
 
         return Intent(Intent.ACTION_PICK).apply {
             setPackage(packageName)
+            if (enableWidgetPickerSizeFilter()) {
+                putExtra(
+                    EXTRA_DESIRED_WIDGET_WIDTH,
+                    resources.getDimensionPixelSize(R.dimen.communal_widget_picker_desired_width)
+                )
+                putExtra(
+                    EXTRA_DESIRED_WIDGET_HEIGHT,
+                    resources.getDimensionPixelSize(R.dimen.communal_widget_picker_desired_height)
+                )
+            }
             putExtra(
                 AppWidgetManager.EXTRA_CATEGORY_FILTER,
                 communalSettingsInteractor.communalWidgetCategories.value
@@ -163,6 +175,8 @@
     companion object {
         private const val TAG = "CommunalEditModeViewModel"
 
+        private const val EXTRA_DESIRED_WIDGET_WIDTH = "desired_widget_width"
+        private const val EXTRA_DESIRED_WIDGET_HEIGHT = "desired_widget_height"
         private const val EXTRA_UI_SURFACE_KEY = "ui_surface"
         private const val EXTRA_UI_SURFACE_VALUE = "widgets_hub"
         const val EXTRA_ADDED_APP_WIDGETS_KEY = "added_app_widgets"
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt
index 9114aab..7a20ebc 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt
@@ -21,12 +21,14 @@
 import com.android.systemui.communal.util.CommunalColors
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGlanceableHubTransitionViewModel
+import com.android.systemui.scene.shared.model.Scenes
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
@@ -53,7 +55,7 @@
     // Show UMO on glanceable hub immediately on transition into glanceable hub
     private val showUmoFromOccludedToGlanceableHub: Flow<Boolean> =
         keyguardTransitionInteractor
-            .transitionStepsFromState(KeyguardState.OCCLUDED)
+            .transition(Edge.create(from = KeyguardState.OCCLUDED))
             .filter {
                 it.to == KeyguardState.GLANCEABLE_HUB &&
                     (it.transitionState == TransitionState.STARTED ||
@@ -63,7 +65,10 @@
 
     private val showUmoFromGlanceableHubToOccluded: Flow<Boolean> =
         keyguardTransitionInteractor
-            .transitionStepsFromState(KeyguardState.GLANCEABLE_HUB)
+            .transition(
+                edge = Edge.create(from = Scenes.Communal),
+                edgeWithoutSceneContainer = Edge.create(from = KeyguardState.GLANCEABLE_HUB)
+            )
             .filter {
                 it.to == KeyguardState.OCCLUDED &&
                     (it.transitionState == TransitionState.FINISHED ||
@@ -91,11 +96,12 @@
     val showCommunalFromOccluded: Flow<Boolean> = communalInteractor.showCommunalFromOccluded
 
     val transitionFromOccludedEnded =
-        keyguardTransitionInteractor.transitionStepsFromState(KeyguardState.OCCLUDED).filter { step
-            ->
-            step.transitionState == TransitionState.FINISHED ||
-                step.transitionState == TransitionState.CANCELED
-        }
+        keyguardTransitionInteractor
+            .transition(Edge.create(from = KeyguardState.OCCLUDED))
+            .filter { step ->
+                step.transitionState == TransitionState.FINISHED ||
+                    step.transitionState == TransitionState.CANCELED
+            }
 
     val recentsBackgroundColor: Flow<Color?> =
         combine(showCommunalFromOccluded, communalColors.backgroundColor) {
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
index 3e00b04..c6fa5a84 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
@@ -42,12 +42,15 @@
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.util.kotlin.BooleanFlowOperators.allOf
 import com.android.systemui.util.kotlin.BooleanFlowOperators.not
+import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow
 import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
 import javax.inject.Inject
 import javax.inject.Named
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -56,8 +59,10 @@
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.launch
 
 /** The default view model used for showing the communal hub. */
@@ -66,6 +71,7 @@
 class CommunalViewModel
 @Inject
 constructor(
+    @Main val mainDispatcher: CoroutineDispatcher,
     @Application private val scope: CoroutineScope,
     @Main private val resources: Resources,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
@@ -79,6 +85,18 @@
     @CommunalLog logBuffer: LogBuffer,
 ) : BaseCommunalViewModel(communalSceneInteractor, communalInteractor, mediaHost) {
 
+    private val _isMediaHostVisible =
+        conflatedCallbackFlow<Boolean> {
+                val callback = { visible: Boolean ->
+                    trySend(visible)
+                    Unit
+                }
+                mediaHost.addVisibilityChangeListener(callback)
+                awaitClose { mediaHost.removeVisibilityChangeListener(callback) }
+            }
+            .onStart { emit(mediaHost.visible) }
+            .flowOn(mainDispatcher)
+
     private val logger = Logger(logBuffer, "CommunalViewModel")
 
     /** Communal content saved from the previous emission when the flow is active (not "frozen"). */
@@ -91,8 +109,10 @@
                 if (isTutorialMode) {
                     return@flatMapLatest flowOf(communalInteractor.tutorialContent)
                 }
+                val ongoingContent =
+                    _isMediaHostVisible.flatMapLatest { communalInteractor.getOngoingContent(it) }
                 combine(
-                    communalInteractor.ongoingContent,
+                    ongoingContent,
                     communalInteractor.widgetContent,
                     communalInteractor.ctaTileContent,
                 ) { ongoing, widgets, ctaTile,
diff --git a/packages/SystemUI/src/com/android/systemui/communal/widgets/SmartspaceAppWidgetHostView.kt b/packages/SystemUI/src/com/android/systemui/communal/widgets/SmartspaceAppWidgetHostView.kt
new file mode 100644
index 0000000..7f11463
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/communal/widgets/SmartspaceAppWidgetHostView.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.communal.widgets
+
+import android.appwidget.AppWidgetHostView
+import android.appwidget.AppWidgetProviderInfo
+import android.content.Context
+import com.android.systemui.animation.LaunchableView
+import com.android.systemui.animation.LaunchableViewDelegate
+
+/** AppWidgetHostView that displays in communal hub to show smartspace content. */
+class SmartspaceAppWidgetHostView(context: Context) : AppWidgetHostView(context), LaunchableView {
+    private val launchableViewDelegate =
+        LaunchableViewDelegate(
+            this,
+            superSetVisibility = { super.setVisibility(it) },
+        )
+
+    override fun setAppWidget(appWidgetId: Int, info: AppWidgetProviderInfo?) {
+        super.setAppWidget(appWidgetId, info)
+        setPadding(0, 0, 0, 0)
+    }
+
+    override fun getRemoteContextEnsuringCorrectCachedApkPath(): Context? {
+        // Silence errors
+        return null
+    }
+
+    override fun setShouldBlockVisibilityChanges(block: Boolean) =
+        launchableViewDelegate.setShouldBlockVisibilityChanges(block)
+
+    override fun setVisibility(visibility: Int) = launchableViewDelegate.setVisibility(visibility)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetInteractionHandler.kt b/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetInteractionHandler.kt
index 51a3a6d..e88a8b5 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetInteractionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetInteractionHandler.kt
@@ -18,6 +18,7 @@
 
 import android.app.ActivityOptions
 import android.app.PendingIntent
+import android.appwidget.AppWidgetHostView
 import android.content.Intent
 import android.util.Pair
 import android.view.View
@@ -26,9 +27,11 @@
 import androidx.core.util.component2
 import com.android.systemui.animation.ActivityTransitionAnimator
 import com.android.systemui.common.ui.view.getNearestParent
+import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.plugins.ActivityStarter
 import javax.inject.Inject
 
+@SysUISingleton
 class WidgetInteractionHandler
 @Inject
 constructor(
@@ -55,7 +58,7 @@
         pendingIntent: PendingIntent,
         launchOptions: Pair<Intent, ActivityOptions>,
     ): Boolean {
-        val hostView = view.getNearestParent<CommunalAppWidgetHostView>()
+        val hostView = view.getNearestParent<AppWidgetHostView>()
         val animationController = hostView?.let(ActivityTransitionAnimator.Controller::fromView)
         val (fillInIntent, activityOptions) = launchOptions
 
diff --git a/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java b/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java
index e284bc7..92108e9 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java
@@ -36,7 +36,6 @@
 import com.android.internal.logging.UiEventLogger;
 import com.android.settingslib.Utils;
 import com.android.systemui.CoreStartable;
-import com.android.systemui.Flags;
 import com.android.systemui.animation.ActivityTransitionAnimator;
 import com.android.systemui.complication.dagger.DreamHomeControlsComplicationComponent;
 import com.android.systemui.controls.ControlsServiceInfo;
@@ -137,9 +136,7 @@
 
         private void updateHomeControlsComplication() {
             mControlsComponent.getControlsListingController().ifPresent(c -> {
-                final boolean replacedWithOpenHub =
-                        Flags.glanceableHubShortcutButton() && mReplacedByOpenHub;
-                if (isHomeControlsAvailable(c.getCurrentServices()) && !replacedWithOpenHub) {
+                if (isHomeControlsAvailable(c.getCurrentServices())) {
                     mDreamOverlayStateController.addComplication(mComplication);
                 } else {
                     mDreamOverlayStateController.removeComplication(mComplication);
diff --git a/packages/SystemUI/src/com/android/systemui/complication/OpenHubComplication.java b/packages/SystemUI/src/com/android/systemui/complication/OpenHubComplication.java
index a679bfb..05df2bb 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/OpenHubComplication.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/OpenHubComplication.java
@@ -28,7 +28,6 @@
 
 import com.android.settingslib.Utils;
 import com.android.systemui.CoreStartable;
-import com.android.systemui.Flags;
 import com.android.systemui.communal.domain.interactor.CommunalInteractor;
 import com.android.systemui.communal.shared.model.CommunalScenes;
 import com.android.systemui.complication.dagger.OpenHubComplicationComponent;
@@ -111,11 +110,11 @@
 
         private void updateOpenHubComplication() {
             // TODO(b/339667383): don't show the complication if glanceable hub is disabled
-            if (Flags.glanceableHubShortcutButton()) {
-                mDreamOverlayStateController.addComplication(mComplication);
-            } else {
-                mDreamOverlayStateController.removeComplication(mComplication);
-            }
+//            if (Flags.glanceableHubShortcutButton()) {
+//                mDreamOverlayStateController.addComplication(mComplication);
+//            } else {
+//                mDreamOverlayStateController.removeComplication(mComplication);
+//            }
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DefaultActivityBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/DefaultActivityBinder.java
index c2e1e33..2fbb75e 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DefaultActivityBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DefaultActivityBinder.java
@@ -29,6 +29,7 @@
 import com.android.systemui.sensorprivacy.SensorUseStartedActivity;
 import com.android.systemui.settings.brightness.BrightnessDialog;
 import com.android.systemui.telephony.ui.activity.SwitchToManagedProfileForCallActivity;
+import com.android.systemui.touchpad.tutorial.ui.view.TouchpadTutorialActivity;
 import com.android.systemui.tuner.TunerActivity;
 import com.android.systemui.usb.UsbAccessoryUriActivity;
 import com.android.systemui.usb.UsbConfirmActivity;
@@ -156,4 +157,10 @@
     @ClassKey(SwitchToManagedProfileForCallActivity.class)
     public abstract Activity bindSwitchToManagedProfileForCallActivity(
             SwitchToManagedProfileForCallActivity activity);
+
+    /** Inject into TouchpadTutorialActivity. */
+    @Binds
+    @IntoMap
+    @ClassKey(TouchpadTutorialActivity.class)
+    public abstract Activity bindTouchpadTutorialActivity(TouchpadTutorialActivity activity);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
index 7aab37e..9f0fc51 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
@@ -31,6 +31,7 @@
 import com.android.systemui.dock.DockManager;
 import com.android.systemui.dock.DockManagerImpl;
 import com.android.systemui.doze.DozeHost;
+import com.android.systemui.keyboard.shortcut.ShortcutHelperModule;
 import com.android.systemui.keyguard.ui.composable.blueprint.DefaultBlueprintModule;
 import com.android.systemui.keyguard.ui.view.layout.blueprints.KeyguardBlueprintModule;
 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule;
@@ -137,7 +138,8 @@
         UnfoldTransitionModule.Startables.class,
         ToastModule.class,
         VolumeModule.class,
-        WallpaperModule.class
+        WallpaperModule.class,
+        ShortcutHelperModule.class,
 })
 public abstract class ReferenceSystemUIModule {
 
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index 9311187..4a9f741 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -40,6 +40,7 @@
 import com.android.internal.logging.InstanceId;
 import com.android.internal.logging.UiEvent;
 import com.android.internal.logging.UiEventLogger;
+import com.android.systemui.Flags;
 import com.android.systemui.biometrics.AuthController;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.dock.DockManager;
@@ -564,6 +565,12 @@
             return;
         }
 
+        // When already in pulsing, we can show the new Notification without requesting a new pulse.
+        if (Flags.notificationPulsingFix()
+                && dozeState == State.DOZE_PULSING && reason == DozeLog.PULSE_REASON_NOTIFICATION) {
+            return;
+        }
+
         if (!mAllowPulseTriggers || mDozeHost.isPulsePending()
                 || !canPulse(dozeState, performedProxCheck)) {
             if (!mAllowPulseTriggers) {
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
index 95012a2..1a06418 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
@@ -18,6 +18,7 @@
 
 import static com.android.systemui.doze.DozeMachine.State.DOZE;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED;
+import static com.android.systemui.Flags.dozeuiSchedulingAlarmsBackgroundExecution;
 
 import android.app.AlarmManager;
 import android.content.Context;
@@ -70,6 +71,7 @@
     @Inject
     public DozeUi(Context context, AlarmManager alarmManager,
             WakeLock wakeLock, DozeHost host, @Main Handler handler,
+            @Background Handler bgHandler,
             DozeParameters params,
             @Background DelayableExecutor bgExecutor,
             DozeLog dozeLog) {
@@ -80,7 +82,13 @@
         mBgExecutor = bgExecutor;
         mCanAnimateTransition = !params.getDisplayNeedsBlanking();
         mDozeParameters = params;
-        mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler);
+        if (dozeuiSchedulingAlarmsBackgroundExecution()) {
+            mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick",
+                    bgHandler);
+        } else {
+            mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick",
+                    handler);
+        }
         mDozeLog = dozeLog;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffect.kt b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffect.kt
index 30b9583..ea8d7d7 100644
--- a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffect.kt
+++ b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffect.kt
@@ -19,9 +19,7 @@
 import android.os.VibrationEffect
 import android.view.View
 import androidx.annotation.VisibleForTesting
-import com.android.systemui.animation.Expandable
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
-import com.android.systemui.plugins.qs.QSTile
 import com.android.systemui.statusbar.VibratorHelper
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
@@ -53,10 +51,6 @@
     var state = State.IDLE
         private set
 
-    /** The QSTile and Expandable used to perform a long-click and click actions */
-    var qsTile: QSTile? = null
-    var expandable: Expandable? = null
-
     /** Flow for view control and action */
     private val _postedActionType = MutableStateFlow<ActionType?>(null)
     val actionType: Flow<ActionType?> =
@@ -111,7 +105,6 @@
         when (state) {
             State.IDLE -> {
                 setState(State.TIMEOUT_WAIT)
-                _postedActionType.value = ActionType.WAIT_TAP_TIMEOUT
             }
             State.RUNNING_BACKWARDS -> _postedActionType.value = ActionType.CANCEL_ANIMATOR
             else -> {}
@@ -119,9 +112,16 @@
     }
 
     fun handleActionUp() {
-        if (state == State.RUNNING_FORWARD) {
-            _postedActionType.value = ActionType.REVERSE_ANIMATOR
-            setState(State.RUNNING_BACKWARDS)
+        when (state) {
+            State.TIMEOUT_WAIT -> {
+                _postedActionType.value = ActionType.CLICK
+                setState(State.IDLE)
+            }
+            State.RUNNING_FORWARD -> {
+                _postedActionType.value = ActionType.REVERSE_ANIMATOR
+                setState(State.RUNNING_BACKWARDS)
+            }
+            else -> {}
         }
     }
 
@@ -129,7 +129,6 @@
         when (state) {
             State.TIMEOUT_WAIT -> {
                 setState(State.IDLE)
-                clearActionType()
             }
             State.RUNNING_FORWARD -> {
                 _postedActionType.value = ActionType.REVERSE_ANIMATOR
@@ -146,23 +145,18 @@
 
     /** This function is called both when an animator completes or gets cancelled */
     fun handleAnimationComplete() {
-        when (state) {
-            State.RUNNING_FORWARD -> {
-                setState(State.IDLE)
-                vibrate(snapEffect)
-                _postedActionType.value = ActionType.LONG_PRESS
-            }
-            State.RUNNING_BACKWARDS -> {
-                setState(State.IDLE)
-                clearActionType()
-            }
-            else -> {}
+        if (state == State.RUNNING_FORWARD) {
+            vibrate(snapEffect)
+            _postedActionType.value = ActionType.LONG_PRESS
+        }
+        if (state != State.TIMEOUT_WAIT) {
+            // This will happen if the animator did not finish by being cancelled
+            setState(State.IDLE)
         }
     }
 
     fun handleAnimationCancel() {
         setState(State.TIMEOUT_WAIT)
-        _postedActionType.value = ActionType.WAIT_TAP_TIMEOUT
     }
 
     fun handleTimeoutComplete() {
@@ -196,22 +190,9 @@
                 effectDuration
             )
         setState(State.IDLE)
-        clearActionType()
         return true
     }
 
-    fun onTileClick(): Boolean {
-        if (state == State.TIMEOUT_WAIT) {
-            setState(State.IDLE)
-            clearActionType()
-            qsTile?.let {
-                it.click(expandable)
-                return true
-            }
-        }
-        return false
-    }
-
     enum class State {
         IDLE, /* The effect is idle waiting for touch input */
         TIMEOUT_WAIT, /* The effect is waiting for a [PRESSED_TIMEOUT] period */
@@ -221,7 +202,7 @@
 
     /* A type of action to perform on the view depending on the effect's state and logic */
     enum class ActionType {
-        WAIT_TAP_TIMEOUT,
+        CLICK,
         LONG_PRESS,
         RESET_AND_LONG_PRESS,
         START_ANIMATOR,
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt
index 92a55ef..4875f48 100644
--- a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt
@@ -17,6 +17,8 @@
 package com.android.systemui.haptics.qs
 
 import android.animation.ValueAnimator
+import android.annotation.SuppressLint
+import android.view.MotionEvent
 import android.view.ViewConfiguration
 import android.view.animation.AccelerateDecelerateInterpolator
 import androidx.core.animation.doOnCancel
@@ -28,7 +30,6 @@
 import com.android.systemui.lifecycle.repeatWhenAttached
 import com.android.systemui.qs.tileimpl.QSTileViewImpl
 import kotlinx.coroutines.DisposableHandle
-import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.filterNotNull
 
 object QSLongPressEffectViewBinder {
@@ -40,6 +41,9 @@
     ): DisposableHandle? {
         if (qsLongPressEffect == null) return null
 
+        // Set the touch listener as the long-press effect
+        setTouchListener(tile, qsLongPressEffect)
+
         return tile.repeatWhenAttached {
             repeatOnLifecycle(Lifecycle.State.CREATED) {
                 // Action to perform
@@ -48,18 +52,18 @@
 
                     qsLongPressEffect.actionType.filterNotNull().collect { action ->
                         when (action) {
-                            QSLongPressEffect.ActionType.WAIT_TAP_TIMEOUT -> {
-                                delay(ViewConfiguration.getTapTimeout().toLong())
-                                qsLongPressEffect.handleTimeoutComplete()
+                            QSLongPressEffect.ActionType.CLICK -> {
+                                tile.performClick()
+                                qsLongPressEffect.clearActionType()
                             }
                             QSLongPressEffect.ActionType.LONG_PRESS -> {
                                 tile.prepareForLaunch()
-                                qsLongPressEffect.qsTile?.longClick(qsLongPressEffect.expandable)
+                                tile.performLongClick()
                                 qsLongPressEffect.clearActionType()
                             }
                             QSLongPressEffect.ActionType.RESET_AND_LONG_PRESS -> {
                                 tile.resetLongPressEffectProperties()
-                                qsLongPressEffect.qsTile?.longClick(qsLongPressEffect.expandable)
+                                tile.performLongClick()
                                 qsLongPressEffect.clearActionType()
                             }
                             QSLongPressEffect.ActionType.START_ANIMATOR -> {
@@ -102,4 +106,22 @@
             }
         }
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    private fun setTouchListener(tile: QSTileViewImpl, longPressEffect: QSLongPressEffect?) {
+        tile.setOnTouchListener { _, event ->
+            when (event.actionMasked) {
+                MotionEvent.ACTION_DOWN -> {
+                    tile.postDelayed(
+                        { longPressEffect?.handleTimeoutComplete() },
+                        ViewConfiguration.getTapTimeout().toLong(),
+                    )
+                    longPressEffect?.handleActionDown()
+                }
+                MotionEvent.ACTION_UP -> longPressEffect?.handleActionUp()
+                MotionEvent.ACTION_CANCEL -> longPressEffect?.handleActionCancel()
+            }
+            true
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardModule.kt b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardModule.kt
index fc9406b..c6fb4f9 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardModule.kt
@@ -19,13 +19,12 @@
 
 import com.android.systemui.keyboard.data.repository.KeyboardRepository
 import com.android.systemui.keyboard.data.repository.KeyboardRepositoryImpl
-import com.android.systemui.keyboard.shortcut.ShortcutHelperModule
 import com.android.systemui.keyboard.stickykeys.data.repository.StickyKeysRepository
 import com.android.systemui.keyboard.stickykeys.data.repository.StickyKeysRepositoryImpl
 import dagger.Binds
 import dagger.Module
 
-@Module(includes = [ShortcutHelperModule::class])
+@Module
 abstract class KeyboardModule {
 
     @Binds
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
index 52ccc21..271e79b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
@@ -16,13 +16,16 @@
 
 package com.android.systemui.keyboard.shortcut.ui.composable
 
-import androidx.annotation.StringRes
 import androidx.compose.animation.AnimatedVisibility
 import androidx.compose.animation.core.animateFloatAsState
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ExperimentalLayoutApi
+import androidx.compose.foundation.layout.FlowRow
+import androidx.compose.foundation.layout.FlowRowScope
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxSize
@@ -32,21 +35,19 @@
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.filled.OpenInNew
-import androidx.compose.material.icons.filled.Accessibility
-import androidx.compose.material.icons.filled.Apps
 import androidx.compose.material.icons.filled.ExpandMore
-import androidx.compose.material.icons.filled.Keyboard
 import androidx.compose.material.icons.filled.Search
-import androidx.compose.material.icons.filled.Tv
-import androidx.compose.material.icons.filled.VerticalSplit
 import androidx.compose.material3.CenterAlignedTopAppBar
 import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.HorizontalDivider
 import androidx.compose.material3.Icon
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.NavigationDrawerItemColors
@@ -56,6 +57,7 @@
 import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.material3.TopAppBarDefaults
+import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
 import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
@@ -69,10 +71,13 @@
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.role
 import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import androidx.compose.ui.util.fastForEach
@@ -81,8 +86,13 @@
 import com.android.systemui.res.R
 
 @Composable
-fun ShortcutHelper(modifier: Modifier = Modifier, onKeyboardSettingsClicked: () -> Unit) {
-    if (shouldUseSinglePane()) {
+fun ShortcutHelper(
+    onKeyboardSettingsClicked: () -> Unit,
+    modifier: Modifier = Modifier,
+    categories: List<ShortcutHelperCategory> = ShortcutHelperTemporaryData.categories,
+    useSinglePane: @Composable () -> Boolean = { shouldUseSinglePane() },
+) {
+    if (useSinglePane()) {
         ShortcutHelperSinglePane(modifier, categories, onKeyboardSettingsClicked)
     } else {
         ShortcutHelperTwoPane(modifier, categories, onKeyboardSettingsClicked)
@@ -91,7 +101,8 @@
 
 @Composable
 private fun shouldUseSinglePane() =
-    LocalWindowSizeClass.current.widthSizeClass == WindowWidthSizeClass.Compact
+    LocalWindowSizeClass.current.widthSizeClass == WindowWidthSizeClass.Compact ||
+        LocalWindowSizeClass.current.heightSizeClass == WindowHeightSizeClass.Compact
 
 @Composable
 private fun ShortcutHelperSinglePane(
@@ -209,11 +220,31 @@
 
 @Composable
 private fun ShortcutCategoryDetailsSinglePane(category: ShortcutHelperCategory) {
-    Box(modifier = Modifier.fillMaxWidth().heightIn(min = 300.dp)) {
-        Text(
-            modifier = Modifier.align(Alignment.Center),
-            text = stringResource(category.labelResId),
-        )
+    Column(Modifier.padding(horizontal = 16.dp)) {
+        category.subCategories.fastForEach { subCategory ->
+            ShortcutSubCategorySinglePane(subCategory)
+        }
+    }
+}
+
+@Composable
+private fun ShortcutSubCategorySinglePane(subCategory: SubCategory) {
+    // This @Composable is expected to be in a Column.
+    SubCategoryTitle(subCategory.label)
+    subCategory.shortcuts.fastForEachIndexed { index, shortcut ->
+        if (index > 0) {
+            HorizontalDivider()
+        }
+        ShortcutSinglePane(shortcut)
+    }
+}
+
+@Composable
+private fun ShortcutSinglePane(shortcut: Shortcut) {
+    Column(Modifier.padding(vertical = 24.dp)) {
+        ShortcutDescriptionText(shortcut = shortcut)
+        Spacer(modifier = Modifier.height(12.dp))
+        ShortcutKeyCombinations(shortcut = shortcut)
     }
 }
 
@@ -223,6 +254,7 @@
     categories: List<ShortcutHelperCategory>,
     onKeyboardSettingsClicked: () -> Unit,
 ) {
+    var selectedCategory by remember { mutableStateOf(categories.first()) }
     Column(modifier = modifier.fillMaxSize().padding(start = 24.dp, end = 24.dp, top = 26.dp)) {
         TitleBar()
         Spacer(modifier = Modifier.height(12.dp))
@@ -230,39 +262,189 @@
             StartSidePanel(
                 modifier = Modifier.fillMaxWidth(fraction = 0.32f),
                 categories = categories,
+                selectedCategory = selectedCategory,
+                onCategoryClicked = { selectedCategory = it },
                 onKeyboardSettingsClicked = onKeyboardSettingsClicked,
             )
             Spacer(modifier = Modifier.width(24.dp))
-            EndSidePanel(Modifier.fillMaxSize())
+            EndSidePanel(Modifier.fillMaxSize(), selectedCategory)
         }
     }
 }
 
 @Composable
+private fun EndSidePanel(modifier: Modifier, category: ShortcutHelperCategory) {
+    LazyColumn(modifier.nestedScroll(rememberNestedScrollInteropConnection())) {
+        items(items = category.subCategories, key = { item -> item.label }) {
+            SubCategoryContainerDualPane(it)
+            Spacer(modifier = Modifier.height(8.dp))
+        }
+    }
+}
+
+@Composable
+private fun SubCategoryContainerDualPane(subCategory: SubCategory) {
+    Surface(
+        modifier = Modifier.fillMaxWidth(),
+        shape = RoundedCornerShape(28.dp),
+        color = MaterialTheme.colorScheme.surfaceBright
+    ) {
+        Column(Modifier.padding(horizontal = 32.dp, vertical = 24.dp)) {
+            SubCategoryTitle(subCategory.label)
+            Spacer(Modifier.height(24.dp))
+            subCategory.shortcuts.fastForEachIndexed { index, shortcut ->
+                if (index > 0) {
+                    HorizontalDivider()
+                }
+                ShortcutViewDualPane(shortcut)
+            }
+        }
+    }
+}
+
+@Composable
+private fun SubCategoryTitle(title: String) {
+    Text(
+        title,
+        style = MaterialTheme.typography.titleSmall,
+        color = MaterialTheme.colorScheme.primary,
+    )
+}
+
+@Composable
+private fun ShortcutViewDualPane(shortcut: Shortcut) {
+    Row(Modifier.padding(vertical = 16.dp)) {
+        ShortcutDescriptionText(
+            modifier = Modifier.weight(0.25f).align(Alignment.CenterVertically),
+            shortcut = shortcut,
+        )
+        ShortcutKeyCombinations(
+            modifier = Modifier.weight(0.75f),
+            shortcut = shortcut,
+        )
+    }
+}
+
+@OptIn(ExperimentalLayoutApi::class)
+@Composable
+private fun ShortcutKeyCombinations(
+    modifier: Modifier = Modifier,
+    shortcut: Shortcut,
+) {
+    FlowRow(modifier = modifier, verticalArrangement = Arrangement.spacedBy(8.dp)) {
+        shortcut.commands.forEachIndexed { index, command ->
+            if (index > 0) {
+                ShortcutOrSeparator(spacing = 16.dp)
+            }
+            ShortcutCommand(command)
+        }
+    }
+}
+
+@Composable
+private fun ShortcutCommand(command: ShortcutCommand) {
+    // This @Composable is expected to be in a Row or FlowRow.
+    command.keys.forEachIndexed { keyIndex, key ->
+        if (keyIndex > 0) {
+            Spacer(Modifier.width(4.dp))
+        }
+        ShortcutKeyContainer {
+            if (key is ShortcutKey.Text) {
+                ShortcutTextKey(key)
+            } else if (key is ShortcutKey.Icon) {
+                ShortcutIconKey(key)
+            }
+        }
+    }
+}
+
+@Composable
+private fun ShortcutKeyContainer(shortcutKeyContent: @Composable BoxScope.() -> Unit) {
+    Box(
+        modifier =
+            Modifier.height(36.dp)
+                .background(
+                    color = MaterialTheme.colorScheme.surfaceContainer,
+                    shape = RoundedCornerShape(12.dp)
+                ),
+    ) {
+        shortcutKeyContent()
+    }
+}
+
+@Composable
+private fun BoxScope.ShortcutTextKey(key: ShortcutKey.Text) {
+    Text(
+        text = key.value,
+        modifier = Modifier.align(Alignment.Center).padding(horizontal = 12.dp),
+        style = MaterialTheme.typography.titleSmall,
+    )
+}
+
+@Composable
+private fun BoxScope.ShortcutIconKey(key: ShortcutKey.Icon) {
+    Icon(
+        imageVector = key.value,
+        contentDescription = null,
+        modifier = Modifier.align(Alignment.Center).padding(6.dp)
+    )
+}
+
+@OptIn(ExperimentalLayoutApi::class)
+@Composable
+private fun FlowRowScope.ShortcutOrSeparator(spacing: Dp) {
+    Spacer(Modifier.width(spacing))
+    Text(
+        text = stringResource(R.string.shortcut_helper_key_combinations_or_separator),
+        modifier = Modifier.align(Alignment.CenterVertically),
+        style = MaterialTheme.typography.titleSmall,
+    )
+    Spacer(Modifier.width(spacing))
+}
+
+@Composable
+private fun ShortcutDescriptionText(
+    shortcut: Shortcut,
+    modifier: Modifier = Modifier,
+) {
+    Text(
+        modifier = modifier,
+        text = shortcut.label,
+        style = MaterialTheme.typography.bodyMedium,
+        color = MaterialTheme.colorScheme.onSurface,
+    )
+}
+
+@Composable
 private fun StartSidePanel(
     modifier: Modifier,
     categories: List<ShortcutHelperCategory>,
     onKeyboardSettingsClicked: () -> Unit,
+    selectedCategory: ShortcutHelperCategory,
+    onCategoryClicked: (ShortcutHelperCategory) -> Unit,
 ) {
     Column(modifier) {
         ShortcutsSearchBar()
         Spacer(modifier = Modifier.heightIn(16.dp))
-        CategoriesPanelTwoPane(categories)
+        CategoriesPanelTwoPane(categories, selectedCategory, onCategoryClicked)
         Spacer(modifier = Modifier.weight(1f))
         KeyboardSettings(onKeyboardSettingsClicked)
     }
 }
 
 @Composable
-private fun CategoriesPanelTwoPane(categories: List<ShortcutHelperCategory>) {
-    var selected by remember { mutableStateOf(categories.first()) }
+private fun CategoriesPanelTwoPane(
+    categories: List<ShortcutHelperCategory>,
+    selectedCategory: ShortcutHelperCategory,
+    onCategoryClicked: (ShortcutHelperCategory) -> Unit
+) {
     Column {
         categories.fastForEach {
             CategoryItemTwoPane(
                 label = stringResource(it.labelResId),
                 icon = it.icon,
-                selected = selected == it,
-                onClick = { selected = it }
+                selected = selectedCategory == it,
+                onClick = { onCategoryClicked(it) }
             )
         }
     }
@@ -305,15 +487,6 @@
 }
 
 @Composable
-fun EndSidePanel(modifier: Modifier) {
-    Surface(
-        modifier = modifier,
-        shape = RoundedCornerShape(28.dp),
-        color = MaterialTheme.colorScheme.surfaceBright
-    ) {}
-}
-
-@Composable
 @OptIn(ExperimentalMaterial3Api::class)
 private fun TitleBar() {
     CenterAlignedTopAppBar(
@@ -333,6 +506,7 @@
 private fun ShortcutsSearchBar() {
     var query by remember { mutableStateOf("") }
     SearchBar(
+        modifier = Modifier.fillMaxWidth(),
         colors = SearchBarDefaults.colors(containerColor = MaterialTheme.colorScheme.surfaceBright),
         query = query,
         active = false,
@@ -372,25 +546,6 @@
     }
 }
 
-/** Temporary data class just to populate the UI. */
-private data class ShortcutHelperCategory(
-    @StringRes val labelResId: Int,
-    val icon: ImageVector,
-)
-
-// Temporarily populating the categories directly in the UI.
-private val categories =
-    listOf(
-        ShortcutHelperCategory(R.string.shortcut_helper_category_system, Icons.Default.Tv),
-        ShortcutHelperCategory(
-            R.string.shortcut_helper_category_multitasking,
-            Icons.Default.VerticalSplit
-        ),
-        ShortcutHelperCategory(R.string.shortcut_helper_category_input, Icons.Default.Keyboard),
-        ShortcutHelperCategory(R.string.shortcut_helper_category_app_shortcuts, Icons.Default.Apps),
-        ShortcutHelperCategory(R.string.shortcut_helper_category_a11y, Icons.Default.Accessibility),
-    )
-
 object ShortcutHelper {
 
     object Shapes {
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelperTemporaryData.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelperTemporaryData.kt
new file mode 100644
index 0000000..fa2388f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelperTemporaryData.kt
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.keyboard.shortcut.ui.composable
+
+import androidx.annotation.StringRes
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Accessibility
+import androidx.compose.material.icons.filled.Apps
+import androidx.compose.material.icons.filled.ArrowBackIosNew
+import androidx.compose.material.icons.filled.Keyboard
+import androidx.compose.material.icons.filled.KeyboardCommandKey
+import androidx.compose.material.icons.filled.RadioButtonUnchecked
+import androidx.compose.material.icons.filled.Tv
+import androidx.compose.material.icons.filled.VerticalSplit
+import androidx.compose.ui.graphics.vector.ImageVector
+import com.android.systemui.res.R
+
+/** Temporary data classes and data below just to populate the UI. */
+data class ShortcutHelperCategory(
+    @StringRes val labelResId: Int,
+    val icon: ImageVector,
+    val subCategories: List<SubCategory>,
+)
+
+data class SubCategory(
+    val label: String,
+    val shortcuts: List<Shortcut>,
+)
+
+data class Shortcut(val label: String, val commands: List<ShortcutCommand>)
+
+data class ShortcutCommand(val keys: List<ShortcutKey>)
+
+sealed interface ShortcutKey {
+    data class Text(val value: String) : ShortcutKey
+
+    data class Icon(val value: ImageVector) : ShortcutKey
+}
+
+// DSL Builder Functions
+private fun shortcutHelperCategory(
+    labelResId: Int,
+    icon: ImageVector,
+    block: ShortcutHelperCategoryBuilder.() -> Unit
+): ShortcutHelperCategory = ShortcutHelperCategoryBuilder(labelResId, icon).apply(block).build()
+
+private fun ShortcutHelperCategoryBuilder.subCategory(
+    label: String,
+    block: SubCategoryBuilder.() -> Unit
+) {
+    subCategories.add(SubCategoryBuilder(label).apply(block).build())
+}
+
+private fun SubCategoryBuilder.shortcut(label: String, block: ShortcutBuilder.() -> Unit) {
+    shortcuts.add(ShortcutBuilder(label).apply(block).build())
+}
+
+private fun ShortcutBuilder.command(block: ShortcutCommandBuilder.() -> Unit) {
+    commands.add(ShortcutCommandBuilder().apply(block).build())
+}
+
+private fun ShortcutCommandBuilder.key(value: String) {
+    keys.add(ShortcutKey.Text(value))
+}
+
+private fun ShortcutCommandBuilder.key(value: ImageVector) {
+    keys.add(ShortcutKey.Icon(value))
+}
+
+private class ShortcutHelperCategoryBuilder(
+    private val labelResId: Int,
+    private val icon: ImageVector
+) {
+    val subCategories = mutableListOf<SubCategory>()
+
+    fun build() = ShortcutHelperCategory(labelResId, icon, subCategories)
+}
+
+private class SubCategoryBuilder(private val label: String) {
+    val shortcuts = mutableListOf<Shortcut>()
+
+    fun build() = SubCategory(label, shortcuts)
+}
+
+private class ShortcutBuilder(private val label: String) {
+    val commands = mutableListOf<ShortcutCommand>()
+
+    fun build() = Shortcut(label, commands)
+}
+
+private class ShortcutCommandBuilder {
+    val keys = mutableListOf<ShortcutKey>()
+
+    fun build() = ShortcutCommand(keys)
+}
+
+object ShortcutHelperTemporaryData {
+
+    // Some shortcuts and their strings below are made up just to populate the UI for now.
+    // For this reason they are not in translatable resources yet.
+    val categories =
+        listOf(
+            shortcutHelperCategory(R.string.shortcut_helper_category_system, Icons.Default.Tv) {
+                subCategory("System controls") {
+                    shortcut("Go to home screen") {
+                        command { key(Icons.Default.RadioButtonUnchecked) }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("H")
+                        }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Return")
+                        }
+                    }
+                    shortcut("View recent apps") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Tab")
+                        }
+                    }
+                    shortcut("All apps search") {
+                        command { key(Icons.Default.KeyboardCommandKey) }
+                    }
+                }
+                subCategory("System apps") {
+                    shortcut("Go back") {
+                        command { key(Icons.Default.ArrowBackIosNew) }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Left arrow")
+                        }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("ESC")
+                        }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Backspace")
+                        }
+                    }
+                    shortcut("View notifications") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("N")
+                        }
+                    }
+                    shortcut("Take a screenshot") {
+                        command { key(Icons.Default.KeyboardCommandKey) }
+                        command { key("CTRL") }
+                        command { key("S") }
+                    }
+                    shortcut("Open Settings") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("I")
+                        }
+                    }
+                }
+            },
+            shortcutHelperCategory(
+                R.string.shortcut_helper_category_multitasking,
+                Icons.Default.VerticalSplit
+            ) {
+                subCategory("Multitasking & windows") {
+                    shortcut("Take a screenshot") {
+                        command { key(Icons.Default.KeyboardCommandKey) }
+                        command { key("CTRL") }
+                        command { key("S") }
+                    }
+                }
+            },
+            shortcutHelperCategory(
+                R.string.shortcut_helper_category_input,
+                Icons.Default.Keyboard
+            ) {
+                subCategory("Input") {
+                    shortcut("Open Settings") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("I")
+                        }
+                    }
+                    shortcut("View notifications") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("N")
+                        }
+                    }
+                }
+            },
+            shortcutHelperCategory(
+                R.string.shortcut_helper_category_app_shortcuts,
+                Icons.Default.Apps
+            ) {
+                subCategory("App shortcuts") {
+                    shortcut("Open Settings") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("I")
+                        }
+                    }
+                    shortcut("Go back") {
+                        command { key(Icons.Default.ArrowBackIosNew) }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Left arrow")
+                        }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("ESC")
+                        }
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Backspace")
+                        }
+                    }
+                }
+            },
+            shortcutHelperCategory(
+                R.string.shortcut_helper_category_a11y,
+                Icons.Default.Accessibility
+            ) {
+                subCategory("Accessibility shortcuts") {
+                    shortcut("View recent apps") {
+                        command {
+                            key(Icons.Default.KeyboardCommandKey)
+                            key("Tab")
+                        }
+                    }
+                    shortcut("All apps search") {
+                        command { key(Icons.Default.KeyboardCommandKey) }
+                    }
+                }
+            }
+        )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/GlanceableHubQuickAffordanceConfig.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/GlanceableHubQuickAffordanceConfig.kt
index d09b9f6..5d54126 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/GlanceableHubQuickAffordanceConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/GlanceableHubQuickAffordanceConfig.kt
@@ -38,6 +38,7 @@
 ) : KeyguardQuickAffordanceConfig {
 
     override val key: String = BuiltInKeyguardQuickAffordanceKeys.GLANCEABLE_HUB
+
     override fun pickerName(): String = "Glanceable hub"
 
     override val pickerIconResourceId = R.drawable.ic_widgets
@@ -52,6 +53,10 @@
         }
     }
 
+    override suspend fun getPickerScreenState(): KeyguardQuickAffordanceConfig.PickerScreenState {
+        return KeyguardQuickAffordanceConfig.PickerScreenState.UnavailableOnDevice
+    }
+
     override fun onTriggered(
         expandable: Expandable?
     ): KeyguardQuickAffordanceConfig.OnTriggeredResult {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
index a2bbcad..f15896b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
@@ -183,7 +183,7 @@
     val statusBarState: StateFlow<StatusBarState>
 
     /** Observable for biometric unlock state which includes the mode and unlock source */
-    val biometricUnlockState: Flow<BiometricUnlockModel>
+    val biometricUnlockState: StateFlow<BiometricUnlockModel>
 
     fun setBiometricUnlockState(
         unlockMode: BiometricUnlockMode,
@@ -307,17 +307,20 @@
     private val _dismissAction: MutableStateFlow<DismissAction> =
         MutableStateFlow(DismissAction.None)
     override val dismissAction = _dismissAction.asStateFlow()
+
     override fun setDismissAction(dismissAction: DismissAction) {
         _dismissAction.value = dismissAction
     }
 
     private val _keyguardDone: MutableSharedFlow<KeyguardDone> = MutableSharedFlow()
     override val keyguardDone = _keyguardDone.asSharedFlow()
+
     override suspend fun setKeyguardDone(keyguardDoneType: KeyguardDone) {
         _keyguardDone.emit(keyguardDoneType)
     }
 
     override val keyguardDoneAnimationsFinished: MutableSharedFlow<Unit> = MutableSharedFlow()
+
     override fun keyguardDoneAnimationsFinished() {
         keyguardDoneAnimationsFinished.tryEmit(Unit)
     }
@@ -490,6 +493,7 @@
                         override fun onStartDream() {
                             trySendWithFailureLogging(true, TAG, "updated isDreamingWithOverlay")
                         }
+
                         override fun onWakeUp() {
                             trySendWithFailureLogging(false, TAG, "updated isDreamingWithOverlay")
                         }
@@ -618,7 +622,8 @@
 
     private val _biometricUnlockState: MutableStateFlow<BiometricUnlockModel> =
         MutableStateFlow(BiometricUnlockModel(BiometricUnlockMode.NONE, null))
-    override val biometricUnlockState = _biometricUnlockState.asStateFlow()
+    override val biometricUnlockState: StateFlow<BiometricUnlockModel> =
+        _biometricUnlockState.asStateFlow()
 
     override fun setBiometricUnlockState(
         unlockMode: BiometricUnlockMode,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
index 8ec460a..1b201ce 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
@@ -20,6 +20,7 @@
 import android.animation.ValueAnimator
 import android.animation.ValueAnimator.AnimatorUpdateListener
 import android.annotation.FloatRange
+import android.annotation.SuppressLint
 import android.os.Trace
 import android.util.Log
 import com.android.app.tracing.coroutines.withContext
@@ -117,10 +118,11 @@
 constructor(
     @Main val mainDispatcher: CoroutineDispatcher,
 ) : KeyguardTransitionRepository {
-    /*
-     * Each transition between [KeyguardState]s will have an associated Flow.
-     * In order to collect these events, clients should call [transition].
+    /**
+     * Each transition between [KeyguardState]s will have an associated Flow. In order to collect
+     * these events, clients should call [transition].
      */
+    @SuppressLint("SharedFlowCreation")
     private val _transitions =
         MutableSharedFlow<TransitionStep>(
             replay = 2,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractor.kt
index 576fafd..ebc3483 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractor.kt
@@ -3,6 +3,7 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.keyguard.data.repository.KeyguardRepository
 import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
+import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
 import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_DISMISS_BOUNCER
 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_NONE
@@ -15,6 +16,7 @@
 import com.android.systemui.statusbar.phone.BiometricUnlockController.WakeAndUnlockMode
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.StateFlow
 
 @ExperimentalCoroutinesApi
 @SysUISingleton
@@ -24,6 +26,8 @@
     private val keyguardRepository: KeyguardRepository,
 ) {
 
+    val unlockState: StateFlow<BiometricUnlockModel> = keyguardRepository.biometricUnlockState
+
     fun setBiometricUnlockState(
         @WakeAndUnlockMode unlockStateInt: Int,
         biometricUnlockSource: BiometricUnlockSource?,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
index 756c6c2..118ea16 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
@@ -24,10 +24,10 @@
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.keyguard.KeyguardWmStateRefactor
 import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
 import com.android.wm.shell.animation.Interpolators
 import javax.inject.Inject
 import kotlin.time.Duration.Companion.milliseconds
@@ -46,6 +46,7 @@
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.launch
+import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
 
 @ExperimentalCoroutinesApi
 @SysUISingleton
@@ -83,7 +84,7 @@
     val surfaceBehindVisibility: Flow<Boolean?> =
         combine(
                 transitionInteractor.startedKeyguardTransitionStep,
-                transitionInteractor.transitionStepsFromState(KeyguardState.ALTERNATE_BOUNCER)
+                transitionInteractor.transition(Edge.create(from = KeyguardState.ALTERNATE_BOUNCER))
             ) { startedStep, fromBouncerStep ->
                 if (startedStep.to != KeyguardState.GONE) {
                     return@combine null
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
index a540d76..f5b12a2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
@@ -169,6 +169,7 @@
                     KeyguardState.AOD -> TO_AOD_DURATION
                     KeyguardState.DOZING -> TO_DOZING_DURATION
                     KeyguardState.LOCKSCREEN -> TO_LOCKSCREEN_DURATION
+                    KeyguardState.GLANCEABLE_HUB -> TO_GLANCEABLE_HUB_DURATION
                     else -> DEFAULT_DURATION
                 }.inWholeMilliseconds
         }
@@ -181,5 +182,6 @@
         val TO_AOD_DURATION = 1300.milliseconds
         val TO_DOZING_DURATION = 933.milliseconds
         val TO_LOCKSCREEN_DURATION = DEFAULT_DURATION
+        val TO_GLANCEABLE_HUB_DURATION = DEFAULT_DURATION
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
index 19b2b81..aaf935f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
@@ -25,10 +25,12 @@
 import com.android.systemui.flags.FeatureFlags
 import com.android.systemui.keyguard.KeyguardWmStateRefactor
 import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.user.domain.interactor.SelectedUserInteractor
 import com.android.systemui.util.kotlin.Utils.Companion.sample
 import com.android.systemui.util.kotlin.sample
@@ -81,7 +83,10 @@
     val surfaceBehindVisibility: Flow<Boolean?> =
         combine(
                 transitionInteractor.startedKeyguardTransitionStep,
-                transitionInteractor.transitionStepsFromState(KeyguardState.PRIMARY_BOUNCER)
+                transitionInteractor.transition(
+                    edge = Edge.create(from = Scenes.Bouncer),
+                    edgeWithoutSceneContainer = Edge.create(from = KeyguardState.PRIMARY_BOUNCER)
+                )
             ) { startedStep, fromBouncerStep ->
                 if (startedStep.to != KeyguardState.GONE) {
                     return@combine null
@@ -222,17 +227,24 @@
     override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
         return ValueAnimator().apply {
             interpolator = Interpolators.LINEAR
-            duration = DEFAULT_DURATION.inWholeMilliseconds
+            duration =
+                when (toState) {
+                    KeyguardState.AOD -> TO_AOD_DURATION
+                    KeyguardState.DOZING -> TO_DOZING_DURATION
+                    KeyguardState.GONE -> TO_GONE_DURATION
+                    KeyguardState.LOCKSCREEN -> TO_LOCKSCREEN_DURATION
+                    else -> DEFAULT_DURATION
+                }.inWholeMilliseconds
         }
     }
 
     companion object {
         private val DEFAULT_DURATION = 300.milliseconds
+        val TO_AOD_DURATION = DEFAULT_DURATION
+        val TO_DOZING_DURATION = DEFAULT_DURATION
         val TO_GONE_DURATION = 500.milliseconds
         val TO_GONE_SHORT_DURATION = 200.milliseconds
-        val TO_AOD_DURATION = DEFAULT_DURATION
-        val TO_LOCKSCREEN_DURATION = DEFAULT_DURATION
-        val TO_DOZING_DURATION = DEFAULT_DURATION
+        val TO_LOCKSCREEN_DURATION = 450.milliseconds
         val TO_GONE_SURFACE_BEHIND_VISIBLE_THRESHOLD = 0.5f
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index b142b44..48660f2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -50,7 +50,7 @@
 import com.android.systemui.statusbar.CommandQueue
 import com.android.systemui.statusbar.notification.NotificationUtils.interpolate
 import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor
-import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
+import com.android.systemui.util.kotlin.Utils.Companion.sampleFilter
 import com.android.systemui.util.kotlin.pairwise
 import com.android.systemui.util.kotlin.sample
 import javax.inject.Inject
@@ -77,6 +77,7 @@
 import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.flow.stateIn
+import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
 
 /**
  * Encapsulates business-logic related to the keyguard but not to a more specific part within it.
@@ -91,7 +92,7 @@
     bouncerRepository: KeyguardBouncerRepository,
     configurationInteractor: ConfigurationInteractor,
     shadeRepository: ShadeRepository,
-    keyguardTransitionInteractor: KeyguardTransitionInteractor,
+    private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
     sceneInteractorProvider: Provider<SceneInteractor>,
     private val fromGoneTransitionInteractor: Provider<FromGoneTransitionInteractor>,
     private val fromLockscreenTransitionInteractor: Provider<FromLockscreenTransitionInteractor>,
@@ -181,6 +182,8 @@
     /** Doze transition information. */
     val dozeTransitionModel: Flow<DozeTransitionModel> = repository.dozeTransitionModel
 
+    val isPulsing: Flow<Boolean> = dozeTransitionModel.map { it.to == DozeStateModel.DOZE_PULSING }
+
     /**
      * Whether the system is dreaming. [isDreaming] will be always be true when [isDozing] is true,
      * but not vice-versa.
@@ -246,21 +249,17 @@
     val isKeyguardGoingAway: Flow<Boolean> = repository.isKeyguardGoingAway
 
     /** Keyguard can be clipped at the top as the shade is dragged */
-    val topClippingBounds: Flow<Int?> =
-        combineTransform(
-                configurationInteractor.onAnyConfigurationChange,
+    val topClippingBounds: Flow<Int?> by lazy {
+        repository.topClippingBounds
+            .sampleFilter(
                 keyguardTransitionInteractor
-                    .transitionValue(GONE)
-                    .map { it == 1f }
-                    .onStart { emit(false) }
-                    .distinctUntilChanged(),
-                repository.topClippingBounds
-            ) { _, isGone, topClippingBounds ->
-                if (!isGone) {
-                    emit(topClippingBounds)
-                }
+                    .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
+                    .onStart { emit(0f) }
+            ) { goneValue ->
+                goneValue != 1f
             }
             .distinctUntilChanged()
+    }
 
     /** Last point that [KeyguardRootView] view was tapped */
     val lastRootViewTapPosition: Flow<Point?> = repository.lastRootViewTapPosition.asStateFlow()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionAuditLogger.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionAuditLogger.kt
index cf6942e..e132eb7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionAuditLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionAuditLogger.kt
@@ -104,6 +104,12 @@
         }
 
         scope.launch {
+            keyguardInteractor.isKeyguardGoingAway.collect {
+                logger.log(TAG, VERBOSE, "isKeyguardGoingAway", it)
+            }
+        }
+
+        scope.launch {
             keyguardInteractor.isKeyguardOccluded.collect {
                 logger.log(TAG, VERBOSE, "isOccluded", it)
             }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
index 2766b71..37272dc 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
@@ -223,6 +223,17 @@
         }
     }
 
+    fun transitionValue(
+        scene: SceneKey,
+        stateWithoutSceneContainer: KeyguardState,
+    ): Flow<Float> {
+        return if (SceneContainerFlag.isEnabled) {
+            sceneInteractor.get().transitionProgress(scene)
+        } else {
+            transitionValue(stateWithoutSceneContainer)
+        }
+    }
+
     /**
      * The amount of transition into or out of the given [KeyguardState].
      *
@@ -232,26 +243,13 @@
     fun transitionValue(
         state: KeyguardState,
     ): Flow<Float> {
+        if (SceneContainerFlag.isEnabled && state != state.mapToSceneContainerState()) {
+            Log.e(TAG, "SceneContainer is enabled but a deprecated state $state is used.")
+            return transitionValue(state.mapToSceneContainerScene()!!, state)
+        }
         return getTransitionValueFlow(state)
     }
 
-    /**
-     * AOD<->* transition information, mapped to dozeAmount range of AOD (1f) <->
-     * * (0f).
-     */
-    @SuppressLint("SharedFlowCreation")
-    val dozeAmountTransition: Flow<TransitionStep> =
-        repository.transitions
-            .filter { step -> step.from == AOD || step.to == AOD }
-            .map { step ->
-                if (step.from == AOD) {
-                    step.copy(value = 1 - step.value)
-                } else {
-                    step
-                }
-            }
-            .shareIn(scope, SharingStarted.Eagerly, replay = 1)
-
     /** The last [TransitionStep] with a [TransitionState] of STARTED */
     val startedKeyguardTransitionStep: Flow<TransitionStep> =
         repository.transitions.filter { step -> step.transitionState == TransitionState.STARTED }
@@ -267,8 +265,6 @@
             .map { step -> step.to }
             .shareIn(scope, SharingStarted.Eagerly, replay = 1)
 
-    val currentTransitionInfo: StateFlow<TransitionInfo> = repository.currentTransitionInfoInternal
-
     /** The from state of the last [TransitionState.STARTED] transition. */
     // TODO: is it performant to have several SharedFlows side by side instead of one?
     @SuppressLint("SharedFlowCreation")
@@ -415,14 +411,6 @@
     /** Whether we've currently STARTED a transition and haven't yet FINISHED it. */
     val isInTransitionToAnyState = isInTransitionWhere({ true }, { true })
 
-    fun transitionStepsFromState(fromState: KeyguardState): Flow<TransitionStep> {
-        return transition(Edge.create(from = fromState, to = null))
-    }
-
-    fun transitionStepsToState(toState: KeyguardState): Flow<TransitionStep> {
-        return transition(Edge.create(from = null, to = toState))
-    }
-
     /**
      * Called to start a transition that will ultimately dismiss the keyguard from the current
      * state.
@@ -558,10 +546,6 @@
         return currentKeyguardState.replayCache.last()
     }
 
-    fun getStartedState(): KeyguardState {
-        return startedKeyguardState.replayCache.last()
-    }
-
     fun getStartedFromState(): KeyguardState {
         return startedKeyguardFromState.replayCache.last()
     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
index 3baeb76..9b3ba7d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
@@ -131,7 +131,7 @@
         val newTransition =
             TransitionInfo(
                 ownerName = this::class.java.simpleName,
-                from = transitionInteractor.currentTransitionInfo.value.to,
+                from = transitionInteractor.currentTransitionInfoInternal.value.to,
                 to = state,
                 animator = null,
                 modeOnCanceled = TransitionModeOnCanceled.REVERSE
@@ -150,7 +150,7 @@
     private suspend fun handleTransition(transition: ObservableTransitionState.Transition) {
         if (transition.fromScene == Scenes.Lockscreen) {
             if (currentTransitionId != null) {
-                val currentToState = transitionInteractor.currentTransitionInfo.value.to
+                val currentToState = transitionInteractor.currentTransitionInfoInternal.value.to
                 if (currentToState == UNDEFINED) {
                     transitionKtfTo(transitionInteractor.getStartedFromState())
                 }
@@ -201,7 +201,7 @@
     }
 
     private suspend fun startTransitionFromLockscreen() {
-        val currentState = transitionInteractor.currentTransitionInfo.value.to
+        val currentState = transitionInteractor.currentTransitionInfoInternal.value.to
         val newTransition =
             TransitionInfo(
                 ownerName = this::class.java.simpleName,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
index c1e8d22..1306b26 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/Edge.kt
@@ -96,10 +96,23 @@
     companion object {
         private const val TAG = "Edge"
 
+        @JvmStatic
+        @JvmOverloads
         fun create(from: KeyguardState? = null, to: KeyguardState? = null) = StateToState(from, to)
 
+        @JvmStatic
+        @JvmOverloads
         fun create(from: KeyguardState? = null, to: SceneKey) = StateToScene(from, to)
 
+        @JvmStatic
+        @JvmOverloads
         fun create(from: SceneKey, to: KeyguardState? = null) = SceneToState(from, to)
+
+        /**
+         * This edge is a placeholder for when an edge needs to be passed but there is no edge for
+         * this flag configuration available. Usually for Scene <-> Scene edges with scene container
+         * enabled where these edges are managed by STL separately.
+         */
+        val INVALID = StateToState(UNDEFINED, UNDEFINED)
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/TransitionStep.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/TransitionStep.kt
index 2b4c4af..0a8c190 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/TransitionStep.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/TransitionStep.kt
@@ -15,6 +15,9 @@
  */
 package com.android.systemui.keyguard.shared.model
 
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filter
+
 /** This information will flow from the [KeyguardTransitionRepository] to control the UI layer */
 data class TransitionStep
 @JvmOverloads
@@ -39,3 +42,6 @@
         return to == state && transitionState == TransitionState.FINISHED
     }
 }
+
+fun Flow<TransitionStep>.filterState(transitionState: TransitionState) =
+    this.filter { it.transitionState == transitionState }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
index 6b11dc5..191056c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
@@ -121,10 +121,7 @@
             ) {
                 val dateView =
                     constraintLayout.requireViewById<View>(sharedR.id.date_smartspace_view)
-                val weatherView =
-                    constraintLayout.requireViewById<View>(sharedR.id.weather_smartspace_view)
                 addView(dateView)
-                addView(weatherView)
             }
         }
     }
@@ -141,9 +138,6 @@
             ) {
                 val dateView =
                     constraintLayout.requireViewById<View>(sharedR.id.date_smartspace_view)
-                val weatherView =
-                    constraintLayout.requireViewById<View>(sharedR.id.weather_smartspace_view)
-                removeView(weatherView)
                 removeView(dateView)
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
index 1f4bc61..ecdc21c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
@@ -35,6 +35,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GoneToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDozingTransitionViewModel
@@ -246,4 +247,10 @@
     abstract fun occludedToGlanceableHub(
         impl: OccludedToGlanceableHubTransitionViewModel
     ): DeviceEntryIconTransition
+
+    @Binds
+    @IntoSet
+    abstract fun goneToGlanceableHub(
+        impl: GoneToGlanceableHubTransitionViewModel
+    ): DeviceEntryIconTransition
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
index 0435531..8a751f0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
@@ -18,6 +18,7 @@
 
 import android.content.Context
 import android.view.View
+import android.view.ViewGroup
 import android.view.ViewTreeObserver.OnGlobalLayoutListener
 import androidx.constraintlayout.widget.Barrier
 import androidx.constraintlayout.widget.ConstraintLayout
@@ -51,7 +52,7 @@
 ) : KeyguardSection() {
     private var smartspaceView: View? = null
     private var weatherView: View? = null
-    private var dateView: View? = null
+    private var dateWeatherView: ViewGroup? = null
 
     private var smartspaceVisibilityListener: OnGlobalLayoutListener? = null
     private var pastVisibility: Int = -1
@@ -69,12 +70,15 @@
         if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
         smartspaceView = smartspaceController.buildAndConnectView(constraintLayout)
         weatherView = smartspaceController.buildAndConnectWeatherView(constraintLayout)
-        dateView = smartspaceController.buildAndConnectDateView(constraintLayout)
+        dateWeatherView =
+            smartspaceController.buildAndConnectDateView(constraintLayout) as ViewGroup
         pastVisibility = smartspaceView?.visibility ?: View.GONE
         constraintLayout.addView(smartspaceView)
         if (keyguardSmartspaceViewModel.isDateWeatherDecoupled) {
-            constraintLayout.addView(weatherView)
-            constraintLayout.addView(dateView)
+            constraintLayout.addView(dateWeatherView)
+            // Place weather right after the date, before the extras (alarm and dnd)
+            val index = if (dateWeatherView?.childCount == 0) 0 else 1
+            dateWeatherView?.addView(weatherView, index)
         }
         keyguardUnlockAnimationController.lockscreenSmartspace = smartspaceView
         smartspaceVisibilityListener = OnGlobalLayoutListener {
@@ -116,26 +120,6 @@
                 ConstraintSet.START,
                 horizontalPaddingStart
             )
-            constrainWidth(sharedR.id.weather_smartspace_view, ConstraintSet.WRAP_CONTENT)
-            connect(
-                sharedR.id.weather_smartspace_view,
-                ConstraintSet.TOP,
-                sharedR.id.date_smartspace_view,
-                ConstraintSet.TOP
-            )
-            connect(
-                sharedR.id.weather_smartspace_view,
-                ConstraintSet.BOTTOM,
-                sharedR.id.date_smartspace_view,
-                ConstraintSet.BOTTOM
-            )
-            connect(
-                sharedR.id.weather_smartspace_view,
-                ConstraintSet.START,
-                sharedR.id.date_smartspace_view,
-                ConstraintSet.END,
-                4
-            )
 
             // migrate addSmartspaceView from KeyguardClockSwitchController
             constrainHeight(sharedR.id.bc_smartspace_view, ConstraintSet.WRAP_CONTENT)
@@ -186,7 +170,6 @@
                 *intArrayOf(
                     sharedR.id.bc_smartspace_view,
                     sharedR.id.date_smartspace_view,
-                    sharedR.id.weather_smartspace_view,
                 )
             )
         }
@@ -196,7 +179,7 @@
     override fun removeViews(constraintLayout: ConstraintLayout) {
         if (!MigrateClocksToBlueprint.isEnabled) return
         if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
-        listOf(smartspaceView, dateView, weatherView).forEach {
+        listOf(smartspaceView, dateWeatherView).forEach {
             it?.let {
                 if (it.parent == constraintLayout) {
                     constraintLayout.removeView(it)
@@ -220,7 +203,7 @@
             setVisibility(sharedR.id.weather_smartspace_view, weatherVisibility)
             setAlpha(
                 sharedR.id.weather_smartspace_view,
-                if (weatherVisibility == ConstraintSet.VISIBLE) 1f else 0f
+                if (weatherVisibility == View.VISIBLE) 1f else 0f
             )
             val dateVisibility =
                 if (keyguardClockViewModel.hasCustomWeatherDataDisplay.value) ConstraintSet.GONE
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
index c05a1b7..d9a6d64 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
@@ -29,6 +29,7 @@
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
 import com.android.systemui.keyguard.shared.model.BurnInModel
 import com.android.systemui.keyguard.shared.model.ClockSize
+import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.ui.StateToValue
 import com.android.systemui.res.R
 import javax.inject.Inject
@@ -111,8 +112,8 @@
         params: BurnInParameters,
     ): Flow<BurnInModel> {
         return combine(
-            keyguardTransitionInteractor.dozeAmountTransition.map {
-                Interpolators.FAST_OUT_SLOW_IN.getInterpolation(it.value)
+            keyguardTransitionInteractor.transitionValue(KeyguardState.AOD).map {
+                Interpolators.FAST_OUT_SLOW_IN.getInterpolation(it)
             },
             burnInInteractor.burnIn(
                 xDimenResourceId = R.dimen.burn_in_prevention_offset_x,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToGlanceableHubTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToGlanceableHubTransitionViewModel.kt
new file mode 100644
index 0000000..8eab406
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToGlanceableHubTransitionViewModel.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromGoneTransitionInteractor.Companion.TO_GLANCEABLE_HUB_DURATION
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.GLANCEABLE_HUB
+import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
+import com.android.systemui.scene.shared.model.Scenes
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.flow.Flow
+
+@SysUISingleton
+class GoneToGlanceableHubTransitionViewModel
+@Inject
+constructor(
+    animationFlow: KeyguardTransitionAnimationFlow,
+) : DeviceEntryIconTransition {
+
+    private val transitionAnimation =
+        animationFlow
+            .setup(duration = TO_GLANCEABLE_HUB_DURATION, edge = Edge.create(GONE, Scenes.Communal))
+            .setupWithoutSceneContainer(edge = Edge.create(GONE, GLANCEABLE_HUB))
+
+    override val deviceEntryParentViewAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            duration = 167.milliseconds,
+            onStep = { it },
+            onCancel = { 0f },
+            onFinish = { 1f },
+        )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
index 448a71c..a758720d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
@@ -17,6 +17,8 @@
 package com.android.systemui.keyguard.ui.viewmodel
 
 import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.doze.util.BurnInHelperWrapper
 import com.android.systemui.keyguard.KeyguardBottomAreaRefactor
 import com.android.systemui.keyguard.MigrateClocksToBlueprint
@@ -28,10 +30,13 @@
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.res.R
 import javax.inject.Inject
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 
 /** View-model for the keyguard indication area view */
@@ -46,6 +51,8 @@
     private val shortcutsCombinedViewModel: KeyguardQuickAffordancesCombinedViewModel,
     configurationInteractor: ConfigurationInteractor,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
+    @Background private val backgroundCoroutineContext: CoroutineContext,
+    @Main private val mainDispatcher: CoroutineDispatcher,
 ) {
 
     /** Notifies when a new configuration is set */
@@ -90,11 +97,12 @@
                 )
             }
             .distinctUntilChanged()
+            .flowOn(backgroundCoroutineContext)
 
     /** An observable for the x-offset by which the indication area should be translated. */
     val indicationAreaTranslationX: Flow<Float> =
         if (MigrateClocksToBlueprint.isEnabled || KeyguardBottomAreaRefactor.isEnabled) {
-            burnIn.map { it.translationX.toFloat() }
+            burnIn.map { it.translationX.toFloat() }.flowOn(mainDispatcher)
         } else {
             bottomAreaInteractor.clockPosition.map { it.x.toFloat() }.distinctUntilChanged()
         }
@@ -102,7 +110,7 @@
     /** Returns an observable for the y-offset by which the indication area should be translated. */
     fun indicationAreaTranslationY(defaultBurnInOffset: Int): Flow<Float> {
         return if (MigrateClocksToBlueprint.isEnabled) {
-            burnIn.map { it.translationY.toFloat() }
+            burnIn.map { it.translationY.toFloat() }.flowOn(mainDispatcher)
         } else {
             keyguardInteractor.dozeAmount
                 .map { dozeAmount ->
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index 1ec2a49..5027524 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -36,6 +36,7 @@
 import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
 import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
 import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
+import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
 import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
 import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
 import com.android.systemui.keyguard.ui.StateToValue
@@ -159,12 +160,26 @@
                     edge = Edge.create(from = LOCKSCREEN, to = Scenes.Gone),
                     edgeWithoutSceneContainer = Edge.create(from = LOCKSCREEN, to = GONE),
                 ),
+                keyguardTransitionInteractor.isInTransition(
+                    edge = Edge.create(from = PRIMARY_BOUNCER, to = Scenes.Lockscreen),
+                    edgeWithoutSceneContainer =
+                        Edge.create(from = PRIMARY_BOUNCER, to = LOCKSCREEN),
+                ),
                 isOnLockscreen,
                 shadeInteractor.qsExpansion,
                 shadeInteractor.shadeExpansion,
-            ) { lockscreenToGoneTransitionRunning, isOnLockscreen, qsExpansion, shadeExpansion ->
+            ) {
+                lockscreenToGoneTransitionRunning,
+                primaryBouncerToLockscreenTransitionRunning,
+                isOnLockscreen,
+                qsExpansion,
+                shadeExpansion ->
                 // Fade out quickly as the shade expands
-                if (isOnLockscreen && !lockscreenToGoneTransitionRunning) {
+                if (
+                    isOnLockscreen &&
+                        !lockscreenToGoneTransitionRunning &&
+                        !primaryBouncerToLockscreenTransitionRunning
+                ) {
                     val alpha =
                         1f -
                             MathUtils.constrainedMap(
@@ -188,7 +203,7 @@
         combine(
                 communalInteractor.isIdleOnCommunal,
                 keyguardTransitionInteractor
-                    .transitionValue(GONE)
+                    .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE)
                     .map { it == 1f }
                     .onStart { emit(false) },
                 keyguardTransitionInteractor
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
index 8e985e1..37dffd1 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
@@ -107,6 +107,7 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.launch
@@ -371,6 +372,7 @@
             .onStart { emit(Unit) }
             .map { allowMediaRecommendations() }
             .distinctUntilChanged()
+            .flowOn(backgroundDispatcher)
             // only track the most recent emission
             .collectLatest {
                 allowMediaRecommendations = it
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index edead51..8f15561 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -42,7 +42,6 @@
 import com.android.keyguard.KeyguardUpdateMonitorCallback
 import com.android.systemui.Dumpable
 import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.dump.DumpManager
@@ -107,6 +106,7 @@
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.launch
@@ -124,7 +124,6 @@
 class MediaCarouselController
 @Inject
 constructor(
-    @Application applicationScope: CoroutineScope,
     private val context: Context,
     private val mediaControlPanelFactory: Provider<MediaControlPanel>,
     private val visualStabilityProvider: VisualStabilityProvider,
@@ -389,12 +388,12 @@
             repeatOnLifecycle(Lifecycle.State.STARTED) {
                 listenForAnyStateToGoneKeyguardTransition(this)
                 listenForAnyStateToLockscreenTransition(this)
+                listenForLockscreenSettingChanges(this)
 
                 if (!mediaFlags.isSceneContainerEnabled()) return@repeatOnLifecycle
                 listenForMediaItemsChanges(this)
             }
         }
-        listenForLockscreenSettingChanges(applicationScope)
 
         // Notifies all active players about animation scale changes.
         globalSettings.registerContentObserverSync(
@@ -696,6 +695,7 @@
                 .onStart { emit(Unit) }
                 .map { getMediaLockScreenSetting() }
                 .distinctUntilChanged()
+                .flowOn(backgroundDispatcher)
                 .collectLatest {
                     allowMediaPlayerOnLockScreen = it
                     updateHostVisibility()
diff --git a/packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManager.kt b/packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManager.kt
index f47954a..3a292e7 100644
--- a/packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManager.kt
@@ -94,7 +94,7 @@
     }
 
     private fun AudioDeviceAttributes.getIcon(): Drawable {
-        return deviceIconUtil.getIconFromAudioDeviceType(this.type, context)
+        return deviceIconUtil.getIconFromAudioDeviceType(this.type)
     }
 
     private fun IntArray.hasMedia() = USAGE_MEDIA in this
diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/data/RecentTaskListProvider.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/data/RecentTaskListProvider.kt
index 596c18f..03adf1b 100644
--- a/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/data/RecentTaskListProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/data/RecentTaskListProvider.kt
@@ -53,8 +53,13 @@
         withContext(coroutineDispatcher) {
             val groupedTasks: List<GroupedRecentTaskInfo> = recents?.getTasks() ?: emptyList()
             // Note: the returned task list is from the most-recent to least-recent order.
-            // The last foreground task is at index 1, because at index 0 will be our app selector.
-            val foregroundGroup = groupedTasks.elementAtOrNull(1)
+            // When opening the app selector in full screen, index 0 will be just the app selector
+            // activity and a null second task, so the foreground task will be index 1, but when
+            // opening the app selector in split screen mode, the foreground task will be the second
+            // task in index 0.
+            val foregroundGroup =
+                if (groupedTasks.first().splitBounds != null) groupedTasks.first()
+                else groupedTasks.elementAtOrNull(1)
             val foregroundTaskId1 = foregroundGroup?.taskInfo1?.taskId
             val foregroundTaskId2 = foregroundGroup?.taskInfo2?.taskId
             val foregroundTaskIds = listOfNotNull(foregroundTaskId1, foregroundTaskId2)
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/DeadZone.java b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/DeadZone.java
index 3268306..8177fde 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/DeadZone.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/DeadZone.java
@@ -61,6 +61,7 @@
         }
     };
 
+    private final boolean mUseDeadZone;
     private final NavigationBarController mNavBarController;
     private final NavigationBarView mNavigationBarView;
 
@@ -86,9 +87,12 @@
 
     @Inject
     public DeadZone(NavigationBarView view) {
+        mUseDeadZone = view.getResources().getBoolean(R.bool.config_useDeadZone);
+
         mNavigationBarView = view;
         mNavBarController = Dependency.get(NavigationBarController.class);
         mDisplayId = view.getContext().getDisplayId();
+
         onConfigurationChanged(HORIZONTAL);
     }
 
@@ -108,12 +112,20 @@
     }
 
     public void setFlashOnTouchCapture(boolean dbg) {
+        if (!mUseDeadZone) {
+            return;
+        }
+
         mShouldFlash = dbg;
         mFlashFrac = 0f;
         mNavigationBarView.postInvalidate();
     }
 
     public void onConfigurationChanged(int rotation) {
+        if (!mUseDeadZone) {
+            return;
+        }
+
         mDisplayRotation = rotation;
 
         final Resources res = mNavigationBarView.getResources();
@@ -134,6 +146,10 @@
 
     // I made you a touch event...
     public boolean onTouchEvent(MotionEvent event) {
+        if (!mUseDeadZone) {
+            return false;
+        }
+
         if (DEBUG) {
             Slog.v(TAG, this + " onTouch: " + MotionEvent.actionToString(event.getAction()));
         }
@@ -187,17 +203,17 @@
         if (mShouldFlash) mNavigationBarView.postInvalidate();
     }
 
-    public void setFlash(float f) {
+    private void setFlash(float f) {
         mFlashFrac = f;
         mNavigationBarView.postInvalidate();
     }
 
-    public float getFlash() {
+    private float getFlash() {
         return mFlashFrac;
     }
 
     public void onDraw(Canvas can) {
-        if (!mShouldFlash || mFlashFrac <= 0f) {
+        if (!mUseDeadZone || !mShouldFlash || mFlashFrac <= 0f) {
             return;
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModel.kt
index f677ec1b..d0c7fbc 100644
--- a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeSceneViewModel.kt
@@ -17,41 +17,25 @@
 package com.android.systemui.notifications.ui.viewmodel
 
 import com.android.compose.animation.scene.Back
-import com.android.compose.animation.scene.SceneKey
 import com.android.compose.animation.scene.Swipe
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
 import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel
+import com.android.systemui.scene.shared.model.SceneFamilies
 import javax.inject.Inject
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.asStateFlow
 
 /** Models UI state and handles user input for the Notifications Shade scene. */
 @SysUISingleton
-class NotificationsShadeSceneViewModel
-@Inject
-constructor(
-    @Application private val applicationScope: CoroutineScope,
-    overlayShadeViewModel: OverlayShadeViewModel,
-) {
+class NotificationsShadeSceneViewModel @Inject constructor() {
     val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
-        overlayShadeViewModel.backgroundScene
-            .map(::destinationScenes)
-            .stateIn(
-                scope = applicationScope,
-                started = SharingStarted.WhileSubscribed(),
-                initialValue = destinationScenes(overlayShadeViewModel.backgroundScene.value),
+        MutableStateFlow(
+                mapOf(
+                    Swipe.Up to SceneFamilies.Home,
+                    Back to SceneFamilies.Home,
+                )
             )
-
-    private fun destinationScenes(backgroundScene: SceneKey): Map<UserAction, UserActionResult> {
-        return mapOf(
-            Swipe.Up to backgroundScene,
-            Back to backgroundScene,
-        )
-    }
+            .asStateFlow()
 }
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
index 9e31379..0a880293 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
@@ -23,7 +23,6 @@
 import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
 import static android.appwidget.AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN;
 import static android.appwidget.AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD;
-import static android.appwidget.flags.Flags.drawDataParcel;
 import static android.appwidget.flags.Flags.generatedPreviews;
 import static android.content.Intent.ACTION_BOOT_COMPLETED;
 import static android.content.Intent.ACTION_PACKAGE_ADDED;
@@ -72,7 +71,6 @@
 import android.content.pm.ShortcutInfo;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -113,8 +111,6 @@
 import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
 import com.android.wm.shell.bubbles.Bubbles;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -1456,54 +1452,13 @@
         if (DEBUG) {
             Log.d(TAG, "Updating People Space widget preview for user " + user.getIdentifier());
         }
-        if (!drawDataParcel() || (!Build.IS_USERDEBUG && !Build.IS_ENG)) {
-            updateGeneratedPreviewForUserInternal(provider, user,
-                    new RemoteViews(mContext.getPackageName(),
-                        R.layout.people_space_placeholder_layout));
-        } else {
-            mBgExecutor.execute(updateGeneratedPreviewFromDrawInstructionsForUser(provider, user));
-        }
-    }
-
-    private void updateGeneratedPreviewForUserInternal(@NonNull final ComponentName provider,
-            @NonNull final UserHandle user, @NonNull final RemoteViews rv) {
         boolean success = mAppWidgetManager.setWidgetPreview(
                 provider, WIDGET_CATEGORY_HOME_SCREEN | WIDGET_CATEGORY_KEYGUARD,
-                rv);
+                new RemoteViews(mContext.getPackageName(),
+                        R.layout.people_space_placeholder_layout));
         if (DEBUG && !success) {
             Log.d(TAG, "Failed to update generated preview for user " + user.getIdentifier());
         }
         mUpdatedPreviews.put(user.getIdentifier(), success);
     }
-
-    private Runnable updateGeneratedPreviewFromDrawInstructionsForUser(
-            @NonNull final ComponentName provider, @NonNull final UserHandle user) {
-        return () -> {
-            if (DEBUG) {
-                Log.d(TAG, "Parsing People Space widget preview from binary for user "
-                        + user.getIdentifier());
-            }
-            if (!generatedPreviews() || mUpdatedPreviews.get(user.getIdentifier())
-                    || !mUserManager.isUserUnlocked(user)) {
-                // Conditions may have changed given this is called from background thread
-                return;
-            }
-            try (InputStream is = mContext.getResources().openRawResource(R.raw.widget)
-            ) {
-                final byte[] preview = new byte[(int) is.available()];
-                final int result = is.read(preview);
-                if (DEBUG && result == -1) {
-                    Log.d(TAG, "Failed parsing previews from binary for user "
-                            + user.getIdentifier());
-                }
-                updateGeneratedPreviewForUserInternal(provider, user, new RemoteViews(
-                        new RemoteViews.DrawInstructions.Builder(
-                                Collections.singletonList(preview)).build()));
-            } catch (IOException e) {
-                if (DEBUG) {
-                    Log.e(TAG, "Failed to generate preview for people widget", e);
-                }
-            }
-        };
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 9c8c17b..f3cc35ba 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -113,6 +113,9 @@
 
     private boolean mSceneContainerEnabled;
 
+    @Nullable
+    private View mMediaViewPlaceHolderForScene;
+
     public QSPanel(Context context, AttributeSet attrs) {
         super(context, attrs);
         mUsingMediaPlayer = useQsMediaPlayer(context);
@@ -125,7 +128,6 @@
         setOrientation(VERTICAL);
 
         mMovableContentStartIndex = getChildCount();
-
     }
 
     void initialize(QSLogger qsLogger, boolean usingMediaPlayer) {
@@ -133,7 +135,7 @@
         mUsingMediaPlayer = usingMediaPlayer;
         mTileLayout = getOrCreateTileLayout();
 
-        if (mUsingMediaPlayer) {
+        if (mUsingMediaPlayer || SceneContainerFlag.isEnabled()) {
             mHorizontalLinearLayout = new RemeasuringLinearLayout(mContext);
             mHorizontalLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
             mHorizontalLinearLayout.setVisibility(
@@ -151,6 +153,13 @@
             lp.setMarginEnd(marginSize);
             lp.gravity = Gravity.CENTER_VERTICAL;
             mHorizontalLinearLayout.addView(mHorizontalContentContainer, lp);
+            if (SceneContainerFlag.isEnabled()) {
+                int mediaHeight = mContext.getResources()
+                        .getDimensionPixelSize(R.dimen.qs_media_session_height_expanded);
+                lp = new LayoutParams(0, mediaHeight, 1);
+                mMediaViewPlaceHolderForScene = new View(mContext);
+                mHorizontalLinearLayout.addView(mMediaViewPlaceHolderForScene, lp);
+            }
 
             lp = new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1);
             addView(mHorizontalLinearLayout, lp);
@@ -383,6 +392,13 @@
         if (mTileLayout != null) {
             mTileLayout.updateResources();
         }
+
+        if (mMediaViewPlaceHolderForScene != null) {
+            ViewGroup.LayoutParams lp = mMediaViewPlaceHolderForScene.getLayoutParams();
+            lp.height = mContext.getResources()
+                    .getDimensionPixelSize(R.dimen.qs_media_session_height_expanded);
+            mMediaViewPlaceHolderForScene.setLayoutParams(lp);
+        }
     }
 
     protected void updatePadding() {
@@ -417,7 +433,8 @@
     }
 
     private void updateHorizontalLinearLayoutMargins() {
-        if (mUsingMediaPlayer && mHorizontalLinearLayout != null && !displayMediaMarginsOnMedia()) {
+        if ((mUsingMediaPlayer || SceneContainerFlag.isEnabled()) && mHorizontalLinearLayout != null
+                && !displayMediaMarginsOnMedia()) {
             LayoutParams lp = (LayoutParams) mHorizontalLinearLayout.getLayoutParams();
             lp.bottomMargin = Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0);
             mHorizontalLinearLayout.setLayoutParams(lp);
@@ -632,6 +649,7 @@
             // using media, the parent should always be this.
             ViewGroup newParent =
                     horizontal && mUsingMediaPlayer ? mHorizontalContentContainer : this;
+            if (SceneContainerFlag.isEnabled()) return;
             switchAllContentToParent(newParent, mTileLayout);
             reAttachMediaHost(mediaHostView, horizontal);
             if (needsDynamicRowsAndColumns()) {
@@ -647,6 +665,19 @@
     void setColumnRowLayout(boolean withMedia) {
         mTileLayout.setMinRows(withMedia ? 2 : 1);
         mTileLayout.setMaxColumns(withMedia ? 2 : 4);
+        placeTileLayoutForScene(withMedia);
+    }
+
+    protected void placeTileLayoutForScene(boolean withMedia) {
+        // The tile layout should be reparented if horizontal and we are using media. If not
+        // using media, the parent should always be this.
+        ViewGroup newParent = withMedia ? mHorizontalContentContainer : this;
+        if (mTileLayout != null && ((View) mTileLayout).getParent() != newParent) {
+            switchAllContentToParent(newParent, mTileLayout);
+        }
+        if (mHorizontalLinearLayout != null) {
+            mHorizontalLinearLayout.setVisibility(withMedia ? View.VISIBLE : View.GONE);
+        }
     }
 
     private void updateMargins(ViewGroup mediaHostView) {
@@ -699,6 +730,12 @@
         mCanCollapse = canCollapse;
     }
 
+    @Nullable
+    @VisibleForTesting
+    View getMediaPlaceholder() {
+        return mMediaViewPlaceHolderForScene;
+    }
+
     public interface QSTileLayout {
         /** */
         default void saveInstanceState(Bundle outState) {}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
index 3b5cc61..13cedc2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
@@ -456,7 +456,7 @@
     boolean switchTileLayout(boolean force) {
         /* Whether or not the panel currently contains a media player. */
         boolean horizontal = shouldUseHorizontalLayout();
-        if (horizontal != mUsingHorizontalLayout || force) {
+        if ((!SceneContainerFlag.isEnabled() && horizontal != mUsingHorizontalLayout) || force) {
             mQSLogger.logSwitchTileLayout(horizontal, mUsingHorizontalLayout, force,
                     mView.getDumpableTag());
             mUsingHorizontalLayout = horizontal;
@@ -470,7 +470,7 @@
         return false;
     }
 
-    void setLayoutForMediaInScene() {
+    private void setLayoutForMediaInScene() {
         boolean withMedia = shouldUseHorizontalInScene();
         mView.setColumnRowLayout(withMedia);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
index 828d6ed..03c2aa6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
@@ -108,7 +108,7 @@
     private AutoTileManager mAutoTiles;
     private final ArrayList<QSFactory> mQsFactories = new ArrayList<>();
     private int mCurrentUser;
-    private final ShadeController mShadeController;
+    private final Lazy<ShadeController> mShadeControllerProvider;
     private Context mUserContext;
     private UserTracker mUserTracker;
     private SecureSettings mSecureSettings;
@@ -130,7 +130,7 @@
             PluginManager pluginManager,
             TunerService tunerService,
             Provider<AutoTileManager> autoTiles,
-            ShadeController shadeController,
+            Lazy<ShadeController> shadeControllerProvider,
             QSLogger qsLogger,
             UserTracker userTracker,
             SecureSettings secureSettings,
@@ -149,7 +149,7 @@
         mUserFileManager = userFileManager;
         mFeatureFlags = featureFlags;
 
-        mShadeController = shadeController;
+        mShadeControllerProvider = shadeControllerProvider;
 
         if (featureFlags.getTilesEnabled()) {
             mQsFactories.add(newQsTileFactoryProvider.get());
@@ -216,17 +216,17 @@
 
     @Override
     public void collapsePanels() {
-        mShadeController.postAnimateCollapseShade();
+        mShadeControllerProvider.get().postAnimateCollapseShade();
     }
 
     @Override
     public void forceCollapsePanels() {
-        mShadeController.postAnimateForceCollapseShade();
+        mShadeControllerProvider.get().postAnimateForceCollapseShade();
     }
 
     @Override
     public void openPanels() {
-        mShadeController.postAnimateExpandQs();
+        mShadeControllerProvider.get().postAnimateExpandQs();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
index d457e88..fb47b40 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
@@ -332,7 +332,7 @@
                 if (info.applicationInfo.isSystemApp()) {
                     final StatusBarIcon statusIcon = icon != null
                             ? new StatusBarIcon(userHandle, packageName, icon, 0, 0,
-                            contentDescription)
+                            contentDescription, StatusBarIcon.Type.SystemIcon)
                             : null;
                     final String slot = getStatusBarIconSlotName(componentName);
                     mMainHandler.post(new Runnable() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PartitionedGridLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PartitionedGridLayout.kt
index d600767..e1b21ef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PartitionedGridLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PartitionedGridLayout.kt
@@ -284,7 +284,7 @@
         Box(
             Modifier.fillMaxWidth()
                 .background(
-                    color = MaterialTheme.colorScheme.surfaceVariant,
+                    color = MaterialTheme.colorScheme.background,
                     alpha = { 1f },
                     shape = RoundedCornerShape(dimensionResource(R.dimen.qs_corner_radius))
                 )
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/Tile.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/Tile.kt
index f776bf0..e4fbb4b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/Tile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/Tile.kt
@@ -17,6 +17,8 @@
 package com.android.systemui.qs.panels.ui.compose
 
 import android.graphics.drawable.Animatable
+import android.service.quicksettings.Tile.STATE_ACTIVE
+import android.service.quicksettings.Tile.STATE_INACTIVE
 import android.text.TextUtils
 import androidx.appcompat.content.res.AppCompatResources
 import androidx.compose.animation.graphics.ExperimentalAnimationGraphicsApi
@@ -49,6 +51,7 @@
 import androidx.compose.material.icons.filled.Add
 import androidx.compose.material.icons.filled.Remove
 import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
@@ -75,14 +78,11 @@
 import androidx.compose.ui.unit.dp
 import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.android.compose.animation.Expandable
-import com.android.compose.theme.colorAttr
 import com.android.systemui.common.shared.model.Icon
 import com.android.systemui.common.ui.compose.Icon
 import com.android.systemui.common.ui.compose.load
-import com.android.systemui.qs.panels.ui.viewmodel.ActiveTileColorAttributes
 import com.android.systemui.qs.panels.ui.viewmodel.AvailableEditActions
 import com.android.systemui.qs.panels.ui.viewmodel.EditTileViewModel
-import com.android.systemui.qs.panels.ui.viewmodel.TileColorAttributes
 import com.android.systemui.qs.panels.ui.viewmodel.TileUiState
 import com.android.systemui.qs.panels.ui.viewmodel.TileViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.toUiState
@@ -108,10 +108,12 @@
         tile.state
             .mapLatest { it.toUiState() }
             .collectAsStateWithLifecycle(tile.currentState.toUiState())
+    val colors = TileDefaults.getColorForState(state.state)
+
     val context = LocalContext.current
 
     Expandable(
-        color = colorAttr(state.colors.background),
+        color = colors.background,
         shape = RoundedCornerShape(dimensionResource(R.dimen.qs_corner_radius)),
     ) {
         Row(
@@ -121,7 +123,7 @@
                         onClick = { tile.onClick(it) },
                         onLongClick = { tile.onLongClick(it) }
                     )
-                    .tileModifier(state.colors),
+                    .tileModifier(colors),
             verticalAlignment = Alignment.CenterVertically,
             horizontalArrangement = tileHorizontalArrangement(iconOnly),
         ) {
@@ -139,7 +141,7 @@
                 label = state.label.toString(),
                 secondaryLabel = state.secondaryLabel.toString(),
                 icon = icon,
-                colors = state.colors,
+                colors = colors,
                 iconOnly = iconOnly,
                 showLabels = showLabels,
             )
@@ -292,7 +294,7 @@
     modifier: Modifier = Modifier,
 ) {
     val label = tileViewModel.label.load() ?: tileViewModel.tileSpec.spec
-    val colors = ActiveTileColorAttributes
+    val colors = TileDefaults.inactiveTileColors()
 
     Row(
         modifier = modifier.tileModifier(colors).semantics { this.contentDescription = label },
@@ -361,10 +363,10 @@
 }
 
 @Composable
-private fun Modifier.tileModifier(colors: TileColorAttributes): Modifier {
+private fun Modifier.tileModifier(colors: TileColors): Modifier {
     return fillMaxWidth()
         .clip(RoundedCornerShape(dimensionResource(R.dimen.qs_corner_radius)))
-        .background(colorAttr(colors.background))
+        .background(colors.background)
         .padding(horizontal = dimensionResource(id = R.dimen.qs_label_container_margin))
 }
 
@@ -387,7 +389,7 @@
     label: String,
     secondaryLabel: String?,
     icon: Icon,
-    colors: TileColorAttributes,
+    colors: TileColors,
     iconOnly: Boolean,
     showLabels: Boolean = false,
     animateIconToEnd: Boolean = false,
@@ -397,13 +399,13 @@
         verticalArrangement = Arrangement.Center,
         modifier = Modifier.fillMaxHeight()
     ) {
-        TileIcon(icon, colorAttr(colors.icon), animateIconToEnd)
+        TileIcon(icon, colors.icon, animateIconToEnd)
 
         if (iconOnly && showLabels) {
             Text(
                 label,
                 maxLines = 2,
-                color = colorAttr(colors.label),
+                color = colors.label,
                 overflow = TextOverflow.Ellipsis,
                 textAlign = TextAlign.Center,
             )
@@ -414,13 +416,13 @@
         Column(verticalArrangement = Arrangement.Center, modifier = Modifier.fillMaxHeight()) {
             Text(
                 label,
-                color = colorAttr(colors.label),
+                color = colors.label,
                 modifier = Modifier.basicMarquee(),
             )
             if (!TextUtils.isEmpty(secondaryLabel)) {
                 Text(
                     secondaryLabel ?: "",
-                    color = colorAttr(colors.secondaryLabel),
+                    color = colors.secondaryLabel,
                     modifier = Modifier.basicMarquee(),
                 )
             }
@@ -431,12 +433,55 @@
 @Composable
 fun tileHeight(iconWithLabel: Boolean = false): Dp {
     return if (iconWithLabel) {
-        TileDimensions.IconTileWithLabelHeight
+        TileDefaults.IconTileWithLabelHeight
     } else {
         dimensionResource(id = R.dimen.qs_tile_height)
     }
 }
 
-private object TileDimensions {
+private data class TileColors(
+    val background: Color,
+    val label: Color,
+    val secondaryLabel: Color,
+    val icon: Color,
+)
+
+private object TileDefaults {
     val IconTileWithLabelHeight = 100.dp
+
+    @Composable
+    fun activeTileColors(): TileColors =
+        TileColors(
+            background = MaterialTheme.colorScheme.primary,
+            label = MaterialTheme.colorScheme.onPrimary,
+            secondaryLabel = MaterialTheme.colorScheme.onPrimary,
+            icon = MaterialTheme.colorScheme.onPrimary,
+        )
+
+    @Composable
+    fun inactiveTileColors(): TileColors =
+        TileColors(
+            background = MaterialTheme.colorScheme.surfaceVariant,
+            label = MaterialTheme.colorScheme.onSurfaceVariant,
+            secondaryLabel = MaterialTheme.colorScheme.onSurfaceVariant,
+            icon = MaterialTheme.colorScheme.onSurfaceVariant,
+        )
+
+    @Composable
+    fun unavailableTileColors(): TileColors =
+        TileColors(
+            background = MaterialTheme.colorScheme.surface,
+            label = MaterialTheme.colorScheme.onSurface,
+            secondaryLabel = MaterialTheme.colorScheme.onSurface,
+            icon = MaterialTheme.colorScheme.onSurface,
+        )
+
+    @Composable
+    fun getColorForState(state: Int): TileColors {
+        return when (state) {
+            STATE_ACTIVE -> activeTileColors()
+            STATE_INACTIVE -> inactiveTileColors()
+            else -> unavailableTileColors()
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileColorAttributes.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileColorAttributes.kt
deleted file mode 100644
index 1290bf3..0000000
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileColorAttributes.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * 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.
- */
-
-package com.android.systemui.qs.panels.ui.viewmodel
-
-import android.service.quicksettings.Tile
-import androidx.annotation.AttrRes
-import com.android.systemui.plugins.qs.QSTile
-import com.android.systemui.res.R
-
-data class TileColorAttributes(
-    @AttrRes val background: Int = 0,
-    @AttrRes val label: Int = 0,
-    @AttrRes val secondaryLabel: Int = 0,
-    @AttrRes val icon: Int = 0,
-)
-
-val ActiveTileColorAttributes =
-    TileColorAttributes(
-        background = R.attr.shadeActive,
-        label = R.attr.onShadeActive,
-        secondaryLabel = R.attr.onShadeActiveVariant,
-        icon = R.attr.onShadeActive,
-    )
-
-val InactiveTileColorAttributes =
-    TileColorAttributes(
-        background = R.attr.shadeInactive,
-        label = R.attr.onShadeInactive,
-        secondaryLabel = R.attr.onShadeInactiveVariant,
-        icon = R.attr.onShadeInactiveVariant,
-    )
-
-val UnavailableTileColorAttributes =
-    TileColorAttributes(
-        background = R.attr.shadeDisabled,
-        label = R.attr.outline,
-        secondaryLabel = R.attr.outline,
-        icon = R.attr.outline,
-    )
-
-fun QSTile.State.colors(): TileColorAttributes =
-    when (state) {
-        Tile.STATE_UNAVAILABLE -> UnavailableTileColorAttributes
-        Tile.STATE_ACTIVE -> ActiveTileColorAttributes
-        Tile.STATE_INACTIVE -> InactiveTileColorAttributes
-        else -> TileColorAttributes()
-    }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileUiState.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileUiState.kt
index 58d07c3..578a292 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileUiState.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileUiState.kt
@@ -22,7 +22,7 @@
 data class TileUiState(
     val label: CharSequence,
     val secondaryLabel: CharSequence,
-    val colors: TileColorAttributes,
+    val state: Int,
     val icon: Supplier<QSTile.Icon>,
 )
 
@@ -30,7 +30,7 @@
     return TileUiState(
         label ?: "",
         secondaryLabel ?: "",
-        colors(),
+        state,
         icon?.let { Supplier { icon } } ?: iconSupplier,
     )
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
index 762dacd..1143c30 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
@@ -19,7 +19,6 @@
 import android.animation.ArgbEvaluator
 import android.animation.PropertyValuesHolder
 import android.animation.ValueAnimator
-import android.annotation.SuppressLint
 import android.content.Context
 import android.content.res.ColorStateList
 import android.content.res.Configuration
@@ -38,7 +37,6 @@
 import android.util.TypedValue
 import android.view.Gravity
 import android.view.LayoutInflater
-import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.view.accessibility.AccessibilityEvent
@@ -397,22 +395,15 @@
 
     override fun init(tile: QSTile) {
         val expandable = Expandable.fromView(this)
-        if (quickSettingsVisualHapticsLongpress()) {
-            isHapticFeedbackEnabled = false
-            longPressEffect?.qsTile = tile
-            longPressEffect?.expandable = expandable
-            init(
-                { _: View? -> longPressEffect?.onTileClick() },
-                null, // Haptics and long-clicks will be handled by the [QSLongPressEffect]
-            )
-        } else {
-            init(
+        init(
                 { _: View? -> tile.click(expandable) },
                 { _: View? ->
                     tile.longClick(expandable)
                     true
-                },
-            )
+                }
+        )
+        if (quickSettingsVisualHapticsLongpress()) {
+            isHapticFeedbackEnabled = false // Haptics will be handled by the [QSLongPressEffect]
         }
     }
 
@@ -550,20 +541,6 @@
         return sb.toString()
     }
 
-    @SuppressLint("ClickableViewAccessibility")
-    override fun onTouchEvent(event: MotionEvent?): Boolean {
-        // let the View run the onTouch logic for click and long-click detection
-        val result = super.onTouchEvent(event)
-        if (longPressEffect != null) {
-            when (event?.actionMasked) {
-                MotionEvent.ACTION_DOWN -> longPressEffect.handleActionDown()
-                MotionEvent.ACTION_UP -> longPressEffect.handleActionUp()
-                MotionEvent.ACTION_CANCEL -> longPressEffect.handleActionCancel()
-            }
-        }
-        return result
-    }
-
     // HANDLE STATE CHANGES RELATED METHODS
 
     protected open fun handleStateChanged(state: QSTile.State) {
@@ -698,6 +675,7 @@
             // Long-press effects might have been enabled before but the new state does not
             // handle a long-press. In this case, we go back to the behaviour of a regular tile
             // and clean-up the resources
+            setOnTouchListener(null)
             unbindLongPressEffect()
             showRippleEffect = isClickable
             initialLongPressProperties = null
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HearingDevicesTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HearingDevicesTile.java
index 183c1a4..b96e83d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HearingDevicesTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HearingDevicesTile.java
@@ -19,34 +19,53 @@
 import android.content.Intent;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.UserManager;
 import android.provider.Settings;
+import android.service.quicksettings.Tile;
 
 import androidx.annotation.Nullable;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.Flags;
+import com.android.systemui.accessibility.hearingaid.HearingDevicesChecker;
 import com.android.systemui.accessibility.hearingaid.HearingDevicesDialogManager;
 import com.android.systemui.animation.Expandable;
 import com.android.systemui.dagger.qualifiers.Background;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.FalsingManager;
-import com.android.systemui.plugins.qs.QSTile.State;
+import com.android.systemui.plugins.qs.QSTile.BooleanState;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.qs.QSHost;
 import com.android.systemui.qs.QsEventLogger;
 import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSTileImpl;
 import com.android.systemui.res.R;
+import com.android.systemui.statusbar.policy.BluetoothController;
 
 import javax.inject.Inject;
 
 /** Quick settings tile: Hearing Devices **/
-public class HearingDevicesTile extends QSTileImpl<State> {
-
+public class HearingDevicesTile extends QSTileImpl<BooleanState> {
+    //TODO(b/338520598): Transform the current implementation into new QS architecture
+    // and use Kotlin except Tile class.
     public static final String TILE_SPEC = "hearing_devices";
 
     private final HearingDevicesDialogManager mDialogManager;
+    private final HearingDevicesChecker mDevicesChecker;
+    private final BluetoothController mBluetoothController;
+
+    private final BluetoothController.Callback mCallback = new BluetoothController.Callback() {
+        @Override
+        public void onBluetoothStateChange(boolean enabled) {
+            refreshState();
+        }
+
+        @Override
+        public void onBluetoothDevicesChanged() {
+            refreshState();
+        }
+    };
 
     @Inject
     public HearingDevicesTile(
@@ -59,16 +78,20 @@
             StatusBarStateController statusBarStateController,
             ActivityStarter activityStarter,
             QSLogger qsLogger,
-            HearingDevicesDialogManager hearingDevicesDialogManager
-    ) {
+            HearingDevicesDialogManager hearingDevicesDialogManager,
+            HearingDevicesChecker hearingDevicesChecker,
+            BluetoothController bluetoothController) {
         super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
                 statusBarStateController, activityStarter, qsLogger);
         mDialogManager = hearingDevicesDialogManager;
+        mDevicesChecker = hearingDevicesChecker;
+        mBluetoothController = bluetoothController;
+        mBluetoothController.observe(getLifecycle(), mCallback);
     }
 
     @Override
-    public State newTileState() {
-        return new State();
+    public BooleanState newTileState() {
+        return new BooleanState();
     }
 
     @Override
@@ -77,9 +100,28 @@
     }
 
     @Override
-    protected void handleUpdateState(State state, Object arg) {
+    protected void handleUpdateState(BooleanState state, Object arg) {
+        checkIfRestrictionEnforcedByAdminOnly(state, UserManager.DISALLOW_BLUETOOTH);
+
         state.label = mContext.getString(R.string.quick_settings_hearing_devices_label);
         state.icon = ResourceIcon.get(R.drawable.qs_hearing_devices_icon);
+        state.forceExpandIcon = true;
+
+        boolean isBonded = mDevicesChecker.isAnyPairedHearingDevice();
+        boolean isActive = mDevicesChecker.isAnyActiveHearingDevice();
+
+        if (isActive) {
+            state.state = Tile.STATE_ACTIVE;
+            state.secondaryLabel = mContext.getString(
+                    R.string.quick_settings_hearing_devices_connected);
+        } else if (isBonded) {
+            state.state = Tile.STATE_INACTIVE;
+            state.secondaryLabel = mContext.getString(
+                    R.string.quick_settings_hearing_devices_disconnected);
+        } else {
+            state.state = Tile.STATE_INACTIVE;
+            state.secondaryLabel = "";
+        }
     }
 
     @Nullable
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
index 9937ea4..70f3b84 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
@@ -46,11 +46,13 @@
 import com.android.systemui.recordissue.IssueRecordingService
 import com.android.systemui.recordissue.IssueRecordingState
 import com.android.systemui.recordissue.RecordIssueDialogDelegate
+import com.android.systemui.recordissue.TraceurMessageSender
 import com.android.systemui.res.R
 import com.android.systemui.screenrecord.RecordingService
 import com.android.systemui.settings.UserContextProvider
 import com.android.systemui.statusbar.phone.KeyguardDismissUtil
 import com.android.systemui.statusbar.policy.KeyguardStateController
+import java.util.concurrent.Executor
 import javax.inject.Inject
 
 class RecordIssueTile
@@ -70,6 +72,8 @@
     private val dialogTransitionAnimator: DialogTransitionAnimator,
     private val panelInteractor: PanelInteractor,
     private val userContextProvider: UserContextProvider,
+    private val traceurMessageSender: TraceurMessageSender,
+    @Background private val bgExecutor: Executor,
     private val issueRecordingState: IssueRecordingState,
     private val delegateFactory: RecordIssueDialogDelegate.Factory,
 ) :
@@ -96,6 +100,11 @@
         }
     }
 
+    override fun handleDestroy() {
+        super.handleDestroy()
+        bgExecutor.execute { traceurMessageSender.unbindFromTraceur(mContext) }
+    }
+
     override fun getTileLabel(): CharSequence = mContext.getString(R.string.qs_record_issue_label)
 
     /**
@@ -121,15 +130,11 @@
         }
     }
 
-    private fun startIssueRecordingService(screenRecord: Boolean, winscopeTracing: Boolean) =
+    private fun startIssueRecordingService() =
         PendingIntent.getForegroundService(
                 userContextProvider.userContext,
                 RecordingService.REQUEST_CODE,
-                IssueRecordingService.getStartIntent(
-                    userContextProvider.userContext,
-                    screenRecord,
-                    winscopeTracing
-                ),
+                IssueRecordingService.getStartIntent(userContextProvider.userContext),
                 PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
             )
             .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())
@@ -147,7 +152,7 @@
         val dialog: AlertDialog =
             delegateFactory
                 .create {
-                    startIssueRecordingService(it.screenRecord, it.winscopeTracing)
+                    startIssueRecordingService()
                     dialogTransitionAnimator.disableAllCurrentDialogsExitAnimations()
                     panelInteractor.collapsePanels()
                 }
@@ -159,8 +164,7 @@
                 if (expandable != null && !keyguardStateController.isShowing) {
                     expandable
                         .dialogTransitionController(DialogCuj(CUJ_SHADE_DIALOG_OPEN, TILE_SPEC))
-                        ?.let { dialogTransitionAnimator.show(dialog, it) }
-                        ?: dialog.show()
+                        ?.let { dialogTransitionAnimator.show(dialog, it) } ?: dialog.show()
                 } else {
                     dialog.show()
                 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
index c091ac3de..df7430a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
@@ -118,8 +118,6 @@
 public class InternetDialogController implements AccessPointController.AccessPointCallback {
 
     private static final String TAG = "InternetDialogController";
-    private static final String ACTION_NETWORK_PROVIDER_SETTINGS =
-            "android.settings.NETWORK_PROVIDER_SETTINGS";
     private static final String ACTION_WIFI_SCANNING_SETTINGS =
             "android.settings.WIFI_SCANNING_SETTINGS";
     /**
@@ -363,7 +361,8 @@
 
     @VisibleForTesting
     protected Intent getSettingsIntent() {
-        return new Intent(ACTION_NETWORK_PROVIDER_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return new Intent(Settings.ACTION_NETWORK_PROVIDER_SETTINGS).addFlags(
+                Intent.FLAG_ACTIVITY_NEW_TASK);
     }
 
     @Nullable
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
index c7326b08..bb36fd5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
@@ -33,6 +33,7 @@
 import com.android.systemui.qs.QSContainerImpl
 import com.android.systemui.qs.QSImpl
 import com.android.systemui.qs.dagger.QSSceneComponent
+import com.android.systemui.qs.tiles.viewmodel.StubQSTileViewModel.state
 import com.android.systemui.res.R
 import com.android.systemui.settings.brightness.MirrorController
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -267,6 +268,7 @@
 
     override val qqsHeight: Int
         get() = qsImpl.value?.qqsHeight ?: 0
+
     override val qsHeight: Int
         get() = qsImpl.value?.qsHeight ?: 0
 
@@ -375,8 +377,10 @@
             qs.view.setPadding(0, 0, 0, 0)
             qs.setContainerController(this@QSSceneAdapterImpl)
             qs.applyState(state.value)
+            applyLatestExpansionAndSquishiness()
         }
     }
+
     override fun setState(state: QSSceneAdapter.State) {
         this.state.value = state
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
index 6cf2e52..79cdfec 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
 package com.android.systemui.qs.ui.viewmodel
 
 import androidx.lifecycle.LifecycleOwner
@@ -28,12 +26,12 @@
 import com.android.compose.animation.scene.UserActionResult
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
 import com.android.systemui.qs.FooterActionsController
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.qs.ui.adapter.QSSceneAdapter
 import com.android.systemui.scene.domain.interactor.SceneBackInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
@@ -41,7 +39,6 @@
 import java.util.concurrent.atomic.AtomicBoolean
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.combine
@@ -55,7 +52,6 @@
 @Inject
 constructor(
     @Application private val applicationScope: CoroutineScope,
-    deviceEntryInteractor: DeviceEntryInteractor,
     val brightnessMirrorViewModel: BrightnessMirrorViewModel,
     val shadeHeaderViewModel: ShadeHeaderViewModel,
     val qsSceneAdapter: QSSceneAdapter,
@@ -77,25 +73,15 @@
 
     val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
         combine(
-                deviceEntryInteractor.isUnlocked,
-                deviceEntryInteractor.canSwipeToEnter,
                 qsSceneAdapter.isCustomizerShowing,
                 backScene,
-            ) { isUnlocked, canSwipeToDismiss, isCustomizerShowing, backScene ->
-                destinationScenes(
-                    isUnlocked,
-                    canSwipeToDismiss,
-                    isCustomizerShowing,
-                    backScene,
-                )
-            }
+                transform = ::destinationScenes,
+            )
             .stateIn(
                 scope = applicationScope,
                 started = SharingStarted.WhileSubscribed(),
                 initialValue =
                     destinationScenes(
-                        isUnlocked = deviceEntryInteractor.isUnlocked.value,
-                        canSwipeToDismiss = deviceEntryInteractor.canSwipeToEnter.value,
                         isCustomizing = qsSceneAdapter.isCustomizerShowing.value,
                         backScene = backScene.value,
                     ),
@@ -104,18 +90,9 @@
     val isMediaVisible: StateFlow<Boolean> = mediaCarouselInteractor.hasAnyMediaOrRecommendation
 
     private fun destinationScenes(
-        isUnlocked: Boolean,
-        canSwipeToDismiss: Boolean?,
         isCustomizing: Boolean,
         backScene: SceneKey?,
     ): Map<UserAction, UserActionResult> {
-        val upBottomEdge =
-            when {
-                canSwipeToDismiss == true -> Scenes.Lockscreen
-                isUnlocked -> Scenes.Gone
-                else -> Scenes.Lockscreen
-            }
-
         return buildMap {
             if (isCustomizing) {
                 // TODO(b/332749288) Empty map so there are no back handlers and back can close
@@ -127,11 +104,8 @@
                 put(Back, UserActionResult(backScene ?: Scenes.Shade))
                 put(Swipe(SwipeDirection.Up), UserActionResult(backScene ?: Scenes.Shade))
                 put(
-                    Swipe(
-                        fromSource = Edge.Bottom,
-                        direction = SwipeDirection.Up,
-                    ),
-                    UserActionResult(upBottomEdge),
+                    Swipe(fromSource = Edge.Bottom, direction = SwipeDirection.Up),
+                    UserActionResult(SceneFamilies.Home),
                 )
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModel.kt
index d48d55d..bd748d5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeSceneViewModel.kt
@@ -17,41 +17,38 @@
 package com.android.systemui.qs.ui.viewmodel
 
 import com.android.compose.animation.scene.Back
-import com.android.compose.animation.scene.SceneKey
 import com.android.compose.animation.scene.Swipe
 import com.android.compose.animation.scene.UserAction
 import com.android.compose.animation.scene.UserActionResult
+import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
 import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.qs.panels.ui.viewmodel.EditModeViewModel
+import com.android.systemui.qs.panels.ui.viewmodel.TileGridViewModel
+import com.android.systemui.qs.ui.adapter.QSSceneAdapter
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel
 import javax.inject.Inject
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.asStateFlow
 
 /** Models UI state and handles user input for the Quick Settings Shade scene. */
 @SysUISingleton
 class QuickSettingsShadeSceneViewModel
 @Inject
 constructor(
-    @Application private val applicationScope: CoroutineScope,
-    overlayShadeViewModel: OverlayShadeViewModel,
+    val overlayShadeViewModel: OverlayShadeViewModel,
+    val brightnessSliderViewModel: BrightnessSliderViewModel,
+    val tileGridViewModel: TileGridViewModel,
+    val editModeViewModel: EditModeViewModel,
+    val qsSceneAdapter: QSSceneAdapter,
 ) {
     val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
-        overlayShadeViewModel.backgroundScene
-            .map(::destinationScenes)
-            .stateIn(
-                scope = applicationScope,
-                started = SharingStarted.WhileSubscribed(),
-                initialValue = destinationScenes(overlayShadeViewModel.backgroundScene.value),
+        MutableStateFlow(
+                mapOf(
+                    Swipe.Up to SceneFamilies.Home,
+                    Back to SceneFamilies.Home,
+                )
             )
-
-    private fun destinationScenes(backgroundScene: SceneKey): Map<UserAction, UserActionResult> {
-        return mapOf(
-            Swipe.Up to backgroundScene,
-            Back to backgroundScene,
-        )
-    }
+            .asStateFlow()
 }
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
index 6694878..4a4c73b 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
@@ -24,8 +24,6 @@
 import android.net.Uri
 import android.os.Handler
 import android.os.UserHandle
-import android.util.Log
-import androidx.core.content.FileProvider
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.animation.DialogTransitionAnimator
 import com.android.systemui.dagger.qualifiers.LongRunning
@@ -37,16 +35,8 @@
 import com.android.systemui.screenrecord.RecordingServiceStrings
 import com.android.systemui.settings.UserContextProvider
 import com.android.systemui.statusbar.phone.KeyguardDismissUtil
-import com.android.traceur.FileSender
-import com.android.traceur.TraceUtils
-import java.io.File
-import java.io.FileOutputStream
-import java.nio.file.Files
 import java.util.concurrent.Executor
-import java.util.zip.ZipEntry
-import java.util.zip.ZipOutputStream
 import javax.inject.Inject
-import kotlin.jvm.optionals.getOrElse
 
 class IssueRecordingService
 @Inject
@@ -60,6 +50,7 @@
     keyguardDismissUtil: KeyguardDismissUtil,
     private val dialogTransitionAnimator: DialogTransitionAnimator,
     private val panelInteractor: PanelInteractor,
+    private val traceurMessageSender: TraceurMessageSender,
     private val issueRecordingState: IssueRecordingState,
     private val iActivityManager: IActivityManager,
 ) :
@@ -82,19 +73,11 @@
     override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
         when (intent?.action) {
             ACTION_START -> {
-                TraceUtils.traceStart(
-                    this,
-                    DEFAULT_TRACE_TAGS,
-                    DEFAULT_BUFFER_SIZE,
-                    DEFAULT_IS_INCLUDING_WINSCOPE,
-                    DEFAULT_IS_INCLUDING_APP_TRACE,
-                    DEFAULT_IS_LONG_TRACE,
-                    DEFAULT_ATTACH_TO_BUGREPORT,
-                    DEFAULT_MAX_TRACE_SIZE,
-                    DEFAULT_MAX_TRACE_DURATION_IN_MINUTES
-                )
+                bgExecutor.execute {
+                    traceurMessageSender.startTracing(issueRecordingState.traceType)
+                }
                 issueRecordingState.isRecording = true
-                if (!intent.getBooleanExtra(EXTRA_SCREEN_RECORD, false)) {
+                if (!issueRecordingState.recordScreen) {
                     // If we don't want to record the screen, the ACTION_SHOW_START_NOTIF action
                     // will circumvent the RecordingService's screen recording start code.
                     return super.onStartCommand(Intent(ACTION_SHOW_START_NOTIF), flags, startId)
@@ -102,7 +85,10 @@
             }
             ACTION_STOP,
             ACTION_STOP_NOTIF -> {
-                TraceUtils.traceStop(this)
+                // ViewCapture needs to save it's data before it is disabled, or else the data will
+                // be lost. This is expected to change in the near future, and when that happens
+                // this line should be removed.
+                bgExecutor.execute { traceurMessageSender.stopTracing() }
                 issueRecordingState.isRecording = false
             }
             ACTION_SHARE -> {
@@ -114,10 +100,10 @@
                     )
 
                     val screenRecording = intent.getParcelableExtra(EXTRA_PATH, Uri::class.java)
-                    if (issueRecordingState.takeBugReport) {
+                    if (issueRecordingState.takeBugreport) {
                         iActivityManager.requestBugReportWithExtraAttachment(screenRecording)
                     } else {
-                        shareRecording(screenRecording)
+                        traceurMessageSender.shareTraces(applicationContext, screenRecording)
                     }
                 }
 
@@ -134,75 +120,9 @@
         return super.onStartCommand(intent, flags, startId)
     }
 
-    private fun shareRecording(screenRecording: Uri?) {
-        val traces =
-            TraceUtils.traceDump(this, TRACE_FILE_NAME).getOrElse {
-                Log.v(
-                    TAG,
-                    "Traces were not present. This can happen if users double" +
-                        "click on share notification. Traces are cleaned up after sharing" +
-                        "so they won't be present for the 2nd share attempt."
-                )
-                return
-            }
-        val perfetto = FileProvider.getUriForFile(this, AUTHORITY, traces.first())
-        val urisToShare = mutableListOf(perfetto)
-        traces.removeFirst()
-
-        getZipWinscopeFileUri(traces)?.let { urisToShare.add(it) }
-        screenRecording?.let { urisToShare.add(it) }
-
-        val sendIntent =
-            FileSender.buildSendIntent(this, urisToShare).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-
-        // TODO: Debug why the notification shade isn't closing upon starting the BetterBug activity
-        mKeyguardDismissUtil.executeWhenUnlocked(
-            {
-                startActivity(sendIntent)
-                false
-            },
-            false,
-            false
-        )
-    }
-
-    private fun getZipWinscopeFileUri(traceFiles: List<File>): Uri? {
-        try {
-            externalCacheDir?.mkdirs()
-            val outZip: File = File.createTempFile(TEMP_FILE_PREFIX, ZIP_SUFFIX, externalCacheDir)
-            ZipOutputStream(FileOutputStream(outZip)).use { os ->
-                traceFiles.forEach { file ->
-                    os.putNextEntry(ZipEntry(file.name))
-                    Files.copy(file.toPath(), os)
-                    os.closeEntry()
-                }
-            }
-            return FileProvider.getUriForFile(this, AUTHORITY, outZip)
-        } catch (e: Exception) {
-            Log.e(TAG, "Failed to zip and package Recordings. Cannot share with BetterBug.", e)
-            return null
-        }
-    }
-
     companion object {
         private const val TAG = "IssueRecordingService"
         private const val CHANNEL_ID = "issue_record"
-        private const val EXTRA_SCREEN_RECORD = "extra_screenRecord"
-        private const val EXTRA_WINSCOPE_TRACING = "extra_winscopeTracing"
-        private const val ZIP_SUFFIX = ".zip"
-        private const val TEMP_FILE_PREFIX = "winscope_recordings"
-
-        private val DEFAULT_TRACE_TAGS = listOf<String>()
-        private const val DEFAULT_BUFFER_SIZE = 16384
-        private const val DEFAULT_IS_INCLUDING_WINSCOPE = true
-        private const val DEFAULT_IS_LONG_TRACE = false
-        private const val DEFAULT_IS_INCLUDING_APP_TRACE = true
-        private const val DEFAULT_ATTACH_TO_BUGREPORT = true
-        private const val DEFAULT_MAX_TRACE_SIZE = 10240
-        private const val DEFAULT_MAX_TRACE_DURATION_IN_MINUTES = 30
-
-        private val TRACE_FILE_NAME = TraceUtils.getOutputFilename(TraceUtils.RecordingType.TRACE)
-        private const val AUTHORITY = "com.android.systemui.fileprovider"
 
         /**
          * Get an intent to stop the issue recording service.
@@ -220,35 +140,36 @@
          *
          * @param context Context from the requesting activity
          */
-        fun getStartIntent(
-            context: Context,
-            screenRecord: Boolean,
-            winscopeTracing: Boolean,
-        ): Intent =
-            Intent(context, IssueRecordingService::class.java)
-                .setAction(ACTION_START)
-                .putExtra(EXTRA_SCREEN_RECORD, screenRecord)
-                .putExtra(EXTRA_WINSCOPE_TRACING, winscopeTracing)
+        fun getStartIntent(context: Context): Intent =
+            Intent(context, IssueRecordingService::class.java).setAction(ACTION_START)
     }
 }
 
 private class IrsStrings(private val res: Resources) : RecordingServiceStrings(res) {
     override val title
         get() = res.getString(R.string.issuerecord_title)
+
     override val notificationChannelDescription
         get() = res.getString(R.string.issuerecord_channel_description)
+
     override val startErrorResId
         get() = R.string.issuerecord_start_error
+
     override val startError
         get() = res.getString(R.string.issuerecord_start_error)
+
     override val saveErrorResId
         get() = R.string.issuerecord_save_error
+
     override val saveError
         get() = res.getString(R.string.issuerecord_save_error)
+
     override val ongoingRecording
         get() = res.getString(R.string.issuerecord_ongoing_screen_only)
+
     override val backgroundProcessingLabel
         get() = res.getString(R.string.issuerecord_background_processing_label)
+
     override val saveTitle
         get() = res.getString(R.string.issuerecord_save_title)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
index 12ed06d..4ea3345 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
@@ -16,23 +16,62 @@
 
 package com.android.systemui.recordissue
 
+import android.content.Context
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.res.R
+import com.android.systemui.settings.UserFileManager
+import com.android.systemui.settings.UserTracker
+import com.android.traceur.TraceUtils.PresetTraceType
 import java.util.concurrent.CopyOnWriteArrayList
 import javax.inject.Inject
 
 @SysUISingleton
-class IssueRecordingState @Inject constructor() {
+class IssueRecordingState
+@Inject
+constructor(
+    userTracker: UserTracker,
+    userFileManager: UserFileManager,
+) {
+
+    private val prefs =
+        userFileManager.getSharedPreferences(
+            RecordIssueTile.TILE_SPEC,
+            Context.MODE_PRIVATE,
+            userTracker.userId
+        )
+
+    var takeBugreport
+        get() = prefs.getBoolean(KEY_TAKE_BUG_REPORT, false)
+        set(value) = prefs.edit().putBoolean(KEY_TAKE_BUG_REPORT, value).apply()
+
+    var recordScreen
+        get() = prefs.getBoolean(KEY_RECORD_SCREEN, false)
+        set(value) = prefs.edit().putBoolean(KEY_RECORD_SCREEN, value).apply()
+
+    var hasUserApprovedScreenRecording
+        get() = prefs.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false)
+        private set(value) = prefs.edit().putBoolean(HAS_APPROVED_SCREEN_RECORDING, value).apply()
+
+    var issueTypeRes
+        get() = prefs.getInt(KEY_ISSUE_TYPE_RES, ISSUE_TYPE_NOT_SET)
+        set(value) = prefs.edit().putInt(KEY_ISSUE_TYPE_RES, value).apply()
+
+    val traceType: PresetTraceType
+        get() = ALL_ISSUE_TYPES[issueTypeRes] ?: PresetTraceType.UNSET
 
     private val listeners = CopyOnWriteArrayList<Runnable>()
 
-    var takeBugReport: Boolean = false
-
     var isRecording = false
         set(value) {
             field = value
             listeners.forEach(Runnable::run)
         }
 
+    fun markUserApprovalForScreenRecording() {
+        hasUserApprovedScreenRecording = true
+    }
+
     fun addListener(listener: Runnable) {
         listeners.add(listener)
     }
@@ -40,4 +79,20 @@
     fun removeListener(listener: Runnable) {
         listeners.remove(listener)
     }
+
+    companion object {
+        private const val KEY_TAKE_BUG_REPORT = "key_takeBugReport"
+        private const val HAS_APPROVED_SCREEN_RECORDING = "HasApprovedScreenRecord"
+        private const val KEY_RECORD_SCREEN = "key_recordScreen"
+        const val KEY_ISSUE_TYPE_RES = "key_issueTypeRes"
+        const val ISSUE_TYPE_NOT_SET = -1
+
+        val ALL_ISSUE_TYPES: Map<Int, PresetTraceType> =
+            hashMapOf(
+                Pair(R.string.performance, PresetTraceType.PERFORMANCE),
+                Pair(R.string.user_interface, PresetTraceType.UI),
+                Pair(R.string.battery, PresetTraceType.BATTERY),
+                Pair(R.string.thermal, PresetTraceType.THERMAL)
+            )
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
index 68b8836..bbf4e51 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
@@ -17,8 +17,9 @@
 package com.android.systemui.recordissue
 
 import android.annotation.SuppressLint
-import android.app.AlertDialog
+import android.app.AlertDialog.BUTTON_POSITIVE
 import android.content.Context
+import android.content.Intent
 import android.content.res.ColorStateList
 import android.graphics.Color
 import android.os.Bundle
@@ -40,16 +41,16 @@
 import com.android.systemui.mediaprojection.SessionCreationSource
 import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver
 import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDisabledDialogDelegate
-import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ALL_ISSUE_TYPES
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ISSUE_TYPE_NOT_SET
+import com.android.systemui.recordissue.IssueRecordingState.Companion.KEY_ISSUE_TYPE_RES
 import com.android.systemui.res.R
-import com.android.systemui.settings.UserFileManager
 import com.android.systemui.settings.UserTracker
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import java.util.concurrent.Executor
-import java.util.function.Consumer
 
 class RecordIssueDialogDelegate
 @AssistedInject
@@ -61,21 +62,20 @@
     @Main private val mainExecutor: Executor,
     private val devicePolicyResolver: dagger.Lazy<ScreenCaptureDevicePolicyResolver>,
     private val mediaProjectionMetricsLogger: MediaProjectionMetricsLogger,
-    private val userFileManager: UserFileManager,
     private val screenCaptureDisabledDialogDelegate: ScreenCaptureDisabledDialogDelegate,
-    private val issueRecordingState: IssueRecordingState,
-    @Assisted private val onStarted: Consumer<IssueRecordingConfig>,
+    private val state: IssueRecordingState,
+    private val traceurMessageSender: TraceurMessageSender,
+    @Assisted private val onStarted: Runnable,
 ) : SystemUIDialog.Delegate {
 
     /** To inject dependencies and allow for easier testing */
     @AssistedFactory
     interface Factory {
         /** Create a dialog object */
-        fun create(onStarted: Consumer<IssueRecordingConfig>): RecordIssueDialogDelegate
+        fun create(onStarted: Runnable): RecordIssueDialogDelegate
     }
 
     @SuppressLint("UseSwitchCompatOrMaterialCode") private lateinit var screenRecordSwitch: Switch
-    @SuppressLint("UseSwitchCompatOrMaterialCode") private lateinit var bugReportSwitch: Switch
     private lateinit var issueTypeButton: Button
 
     @MainThread
@@ -84,22 +84,10 @@
             setView(LayoutInflater.from(context).inflate(R.layout.record_issue_dialog, null))
             setTitle(context.getString(R.string.qs_record_issue_label))
             setIcon(R.drawable.qs_record_issue_icon_off)
-            setNegativeButton(R.string.cancel) { _, _ -> dismiss() }
-            setPositiveButton(
-                R.string.qs_record_issue_start,
-                { _, _ ->
-                    issueRecordingState.takeBugReport = bugReportSwitch.isChecked
-                    onStarted.accept(
-                        IssueRecordingConfig(
-                            screenRecordSwitch.isChecked,
-                            true /* TODO: Base this on issueType selected */
-                        )
-                    )
-                    dismiss()
-                },
-                false
-            )
+            setNegativeButton(R.string.cancel) { _, _ -> }
+            setPositiveButton(R.string.qs_record_issue_start) { _, _ -> onStarted.run() }
         }
+        bgExecutor.execute { traceurMessageSender.bindToTraceur(dialog.context) }
     }
 
     override fun createDialog(): SystemUIDialog = factory.create(this)
@@ -107,22 +95,39 @@
     @MainThread
     override fun onCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
         dialog.apply {
-            window?.addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
-            window?.setGravity(Gravity.CENTER)
+            window?.apply {
+                addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
+                setGravity(Gravity.CENTER)
+            }
 
-            screenRecordSwitch = requireViewById(R.id.screenrecord_switch)
-            screenRecordSwitch.setOnCheckedChangeListener { _, isEnabled ->
-                if (isEnabled) {
-                    bgExecutor.execute { onScreenRecordSwitchClicked() }
+            screenRecordSwitch =
+                requireViewById<Switch>(R.id.screenrecord_switch).apply {
+                    isChecked = state.recordScreen
+                    setOnCheckedChangeListener { _, isChecked ->
+                        state.recordScreen = isChecked
+                        if (isChecked) {
+                            bgExecutor.execute { onScreenRecordSwitchClicked() }
+                        }
+                    }
                 }
+
+            requireViewById<Switch>(R.id.bugreport_switch).apply {
+                isChecked = state.takeBugreport
+                setOnCheckedChangeListener { _, isChecked -> state.takeBugreport = isChecked }
             }
-            bugReportSwitch = requireViewById(R.id.bugreport_switch)
-            val startButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
-            issueTypeButton = requireViewById(R.id.issue_type_button)
-            issueTypeButton.setOnClickListener {
-                onIssueTypeClicked(context) { startButton.isEnabled = true }
-            }
-            startButton.isEnabled = false
+
+            issueTypeButton =
+                requireViewById<Button>(R.id.issue_type_button).apply {
+                    val startButton = dialog.getButton(BUTTON_POSITIVE)
+                    if (state.issueTypeRes != ISSUE_TYPE_NOT_SET) {
+                        setText(state.issueTypeRes)
+                    } else {
+                        startButton.isEnabled = false
+                    }
+                    setOnClickListener {
+                        onIssueTypeClicked(context) { startButton.isEnabled = true }
+                    }
+                }
         }
     }
 
@@ -146,19 +151,14 @@
             SessionCreationSource.SYSTEM_UI_SCREEN_RECORDER
         )
 
-        if (flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)) {
-            val prefs =
-                userFileManager.getSharedPreferences(
-                    RecordIssueTile.TILE_SPEC,
-                    Context.MODE_PRIVATE,
-                    userTracker.userId
-                )
-            if (!prefs.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false)) {
-                mainExecutor.execute {
-                    ScreenCapturePermissionDialogDelegate(factory, prefs).createDialog().apply {
-                        setOnCancelListener { screenRecordSwitch.isChecked = false }
-                        show()
-                    }
+        if (
+            flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING) &&
+                !state.hasUserApprovedScreenRecording
+        ) {
+            mainExecutor.execute {
+                ScreenCapturePermissionDialogDelegate(factory, state).createDialog().apply {
+                    setOnCancelListener { screenRecordSwitch.isChecked = false }
+                    show()
                 }
             }
         }
@@ -166,20 +166,23 @@
 
     @MainThread
     private fun onIssueTypeClicked(context: Context, onIssueTypeSelected: Runnable) {
-        val selectedCategory = issueTypeButton.text.toString()
         val popupMenu = PopupMenu(context, issueTypeButton)
 
-        context.resources.getStringArray(R.array.qs_record_issue_types).forEachIndexed { i, cat ->
-            popupMenu.menu.add(0, 0, i, cat).apply {
+        ALL_ISSUE_TYPES.keys.forEach {
+            popupMenu.menu.add(it).apply {
                 setIcon(R.drawable.arrow_pointing_down)
-                if (selectedCategory != cat) {
+                if (it != state.issueTypeRes) {
                     iconTintList = ColorStateList.valueOf(Color.TRANSPARENT)
                 }
+                intent = Intent().putExtra(KEY_ISSUE_TYPE_RES, it)
             }
         }
         popupMenu.apply {
             setOnMenuItemClickListener {
                 issueTypeButton.text = it.title
+                state.issueTypeRes =
+                    it.intent?.getIntExtra(KEY_ISSUE_TYPE_RES, ISSUE_TYPE_NOT_SET)
+                        ?: ISSUE_TYPE_NOT_SET
                 onIssueTypeSelected.run()
                 true
             }
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
index de6d3f6..b029d07 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
@@ -16,18 +16,15 @@
 
 package com.android.systemui.recordissue
 
-import android.content.SharedPreferences
 import android.os.Bundle
 import android.view.Gravity
 import android.view.WindowManager
 import com.android.systemui.res.R
 import com.android.systemui.statusbar.phone.SystemUIDialog
 
-const val HAS_APPROVED_SCREEN_RECORDING = "HasApprovedScreenRecord"
-
 class ScreenCapturePermissionDialogDelegate(
     private val dialogFactory: SystemUIDialog.Factory,
-    private val sharedPreferences: SharedPreferences,
+    private val state: IssueRecordingState,
 ) : SystemUIDialog.Delegate {
 
     override fun beforeCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
@@ -37,7 +34,7 @@
             setMessage(R.string.screenrecord_permission_dialog_warning_entire_screen)
             setNegativeButton(R.string.slice_permission_deny) { _, _ -> cancel() }
             setPositiveButton(R.string.slice_permission_allow) { _, _ ->
-                sharedPreferences.edit().putBoolean(HAS_APPROVED_SCREEN_RECORDING, true).apply()
+                state.markUserApprovalForScreenRecording()
                 dismiss()
             }
             window?.addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt b/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt
new file mode 100644
index 0000000..51744aa
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.recordissue
+
+import android.annotation.SuppressLint
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Bundle
+import android.os.Handler
+import android.os.IBinder
+import android.os.Looper
+import android.os.Message
+import android.os.Messenger
+import android.util.Log
+import androidx.annotation.WorkerThread
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.traceur.FileSender
+import com.android.traceur.MessageConstants
+import com.android.traceur.TraceUtils.PresetTraceType
+import javax.inject.Inject
+
+private const val TAG = "TraceurMessageSender"
+
+@SysUISingleton
+class TraceurMessageSender @Inject constructor(@Background private val backgroundLooper: Looper) {
+    private var binder: Messenger? = null
+    private var isBound: Boolean = false
+
+    private val traceurConnection =
+        object : ServiceConnection {
+            override fun onServiceConnected(className: ComponentName, service: IBinder) {
+                binder = Messenger(service)
+                isBound = true
+            }
+
+            override fun onServiceDisconnected(className: ComponentName) {
+                binder = null
+                isBound = false
+            }
+        }
+
+    @SuppressLint("WrongConstant")
+    @WorkerThread
+    fun bindToTraceur(context: Context) {
+        if (isBound) {
+            // Binding needs to happen after the phone has been unlocked. The RecordIssueTile is
+            // initialized before this happens though, so binding is placed at a later time, during
+            // normal operations that can be repeated. This check avoids calling "bindService" 2x+
+            return
+        }
+        try {
+            val info =
+                context.packageManager.getPackageInfo(
+                    MessageConstants.TRACING_APP_PACKAGE_NAME,
+                    PackageManager.MATCH_SYSTEM_ONLY
+                )
+            val intent =
+                Intent().setClassName(info.packageName, MessageConstants.TRACING_APP_ACTIVITY)
+            val flags =
+                Context.BIND_AUTO_CREATE or
+                    Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE or
+                    Context.BIND_WAIVE_PRIORITY
+            context.bindService(intent, traceurConnection, flags)
+        } catch (e: Exception) {
+            Log.e(TAG, "failed to bind to Traceur's service", e)
+        }
+    }
+
+    @WorkerThread
+    fun unbindFromTraceur(context: Context) {
+        if (isBound) {
+            context.unbindService(traceurConnection)
+        }
+    }
+
+    @WorkerThread
+    fun startTracing(traceType: PresetTraceType) {
+        val data =
+            Bundle().apply { putSerializable(MessageConstants.INTENT_EXTRA_TRACE_TYPE, traceType) }
+        notifyTraceur(MessageConstants.START_WHAT, data)
+    }
+
+    @WorkerThread fun stopTracing() = notifyTraceur(MessageConstants.STOP_WHAT)
+
+    @WorkerThread
+    fun shareTraces(context: Context, screenRecord: Uri?) {
+        val replyHandler = Messenger(TraceurMessageHandler(context, screenRecord, backgroundLooper))
+        notifyTraceur(MessageConstants.SHARE_WHAT, replyTo = replyHandler)
+    }
+
+    @WorkerThread
+    private fun notifyTraceur(what: Int, data: Bundle = Bundle(), replyTo: Messenger? = null) {
+        try {
+            binder!!.send(
+                Message.obtain().apply {
+                    this.what = what
+                    this.data = data
+                    this.replyTo = replyTo
+                }
+            )
+        } catch (e: Exception) {
+            Log.e(TAG, "failed to notify Traceur", e)
+        }
+    }
+
+    private class TraceurMessageHandler(
+        private val context: Context,
+        private val screenRecord: Uri?,
+        looper: Looper,
+    ) : Handler(looper) {
+
+        override fun handleMessage(msg: Message) {
+            if (MessageConstants.SHARE_WHAT == msg.what) {
+                shareTraces(
+                    msg.data.getParcelable(MessageConstants.EXTRA_PERFETTO, Uri::class.java),
+                    msg.data.getParcelable(MessageConstants.EXTRA_WINSCOPE, Uri::class.java)
+                )
+            } else {
+                throw IllegalArgumentException("received unknown msg.what: " + msg.what)
+            }
+        }
+
+        private fun shareTraces(perfetto: Uri?, winscope: Uri?) {
+            val uris: List<Uri> =
+                mutableListOf<Uri>().apply {
+                    perfetto?.let { add(it) }
+                    winscope?.let { add(it) }
+                    screenRecord?.let { add(it) }
+                }
+            val fileSharingIntent =
+                FileSender.buildSendIntent(context, uris)
+                    .addFlags(
+                        Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
+                    )
+            context.startActivity(fileSharingIntent)
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
index 8169dec..da23936 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
@@ -18,8 +18,10 @@
 
 import com.android.systemui.CoreStartable
 import com.android.systemui.notifications.ui.composable.NotificationsShadeSessionModule
+import com.android.systemui.scene.domain.SceneDomainModule
 import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor
 import com.android.systemui.scene.domain.startable.SceneContainerStartable
+import com.android.systemui.scene.domain.startable.ScrimStartable
 import com.android.systemui.scene.shared.model.SceneContainerConfig
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.shared.flag.DualShade
@@ -39,6 +41,7 @@
             NotificationsShadeSessionModule::class,
             QuickSettingsSceneModule::class,
             ShadeSceneModule::class,
+            SceneDomainModule::class,
         ],
 )
 interface KeyguardlessSceneContainerFrameworkModule {
@@ -50,6 +53,11 @@
 
     @Binds
     @IntoMap
+    @ClassKey(ScrimStartable::class)
+    fun scrimStartable(impl: ScrimStartable): CoreStartable
+
+    @Binds
+    @IntoMap
     @ClassKey(WindowRootViewVisibilityInteractor::class)
     fun bindWindowRootViewVisibilityInteractor(
         impl: WindowRootViewVisibilityInteractor
diff --git a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
index 9bd2694..a0cf82a 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
@@ -19,8 +19,10 @@
 import com.android.systemui.CoreStartable
 import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlagsModule
 import com.android.systemui.notifications.ui.composable.NotificationsShadeSessionModule
+import com.android.systemui.scene.domain.SceneDomainModule
 import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor
 import com.android.systemui.scene.domain.startable.SceneContainerStartable
+import com.android.systemui.scene.domain.startable.ScrimStartable
 import com.android.systemui.scene.shared.model.SceneContainerConfig
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.shared.flag.DualShade
@@ -45,6 +47,7 @@
             QuickSettingsShadeSceneModule::class,
             NotificationsShadeSceneModule::class,
             NotificationsShadeSessionModule::class,
+            SceneDomainModule::class,
         ],
 )
 interface SceneContainerFrameworkModule {
@@ -56,6 +59,11 @@
 
     @Binds
     @IntoMap
+    @ClassKey(ScrimStartable::class)
+    fun scrimStartable(impl: ScrimStartable): CoreStartable
+
+    @Binds
+    @IntoMap
     @ClassKey(WindowRootViewVisibilityInteractor::class)
     fun bindWindowRootViewVisibilityInteractor(
         impl: WindowRootViewVisibilityInteractor
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
index b918277..a326ec1 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.scene
 
+import com.android.systemui.scene.domain.SceneDomainModule
 import com.android.systemui.scene.shared.model.SceneContainerConfig
 import com.android.systemui.scene.shared.model.Scenes
 import dagger.Module
@@ -29,6 +30,7 @@
             EmptySceneModule::class,
             GoneSceneModule::class,
             LockscreenSceneModule::class,
+            SceneDomainModule::class,
         ],
 )
 object ShadelessSceneContainerFrameworkModule {
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/SceneDomainModule.kt
similarity index 62%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/src/com/android/systemui/scene/domain/SceneDomainModule.kt
index bb3b654..9b2a6dd 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/SceneDomainModule.kt
@@ -14,6 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.scene.domain
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+import com.android.systemui.scene.domain.resolver.HomeSceneFamilyResolverModule
+import com.android.systemui.scene.domain.resolver.SceneResolverModule
+import dagger.Module
+
+@Module(
+    includes =
+        [
+            HomeSceneFamilyResolverModule::class,
+            SceneResolverModule::class,
+        ]
+)
+object SceneDomainModule
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
index b1700e3..998537c 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
@@ -23,9 +23,12 @@
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
 import com.android.systemui.scene.data.repository.SceneContainerRepository
+import com.android.systemui.scene.domain.resolver.SceneResolver
 import com.android.systemui.scene.shared.logger.SceneLogger
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.util.kotlin.pairwiseBy
+import dagger.Lazy
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -52,6 +55,7 @@
     @Application private val applicationScope: CoroutineScope,
     private val repository: SceneContainerRepository,
     private val logger: SceneLogger,
+    private val sceneFamilyResolvers: Lazy<Map<SceneKey, @JvmSuppressWildcards SceneResolver>>,
     private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
 ) {
 
@@ -152,6 +156,28 @@
             )
 
     /**
+     * The amount of transition into or out of the given [scene].
+     *
+     * The value will be `0` if not in this scene or `1` when fully in the given scene.
+     */
+    fun transitionProgress(scene: SceneKey): Flow<Float> {
+        return transitionState.flatMapLatest { transition ->
+            when (transition) {
+                is ObservableTransitionState.Idle -> {
+                    flowOf(if (transition.currentScene == scene) 1f else 0f)
+                }
+                is ObservableTransitionState.Transition -> {
+                    when {
+                        transition.toScene == scene -> transition.progress
+                        transition.fromScene == scene -> transition.progress.map { 1f - it }
+                        else -> flowOf(0f)
+                    }
+                }
+            }
+        }
+    }
+
+    /**
      * Returns the keys of all scenes in the container.
      *
      * The scenes will be sorted in z-order such that the last one is the one that should be
@@ -180,10 +206,11 @@
         sceneState: Any? = null,
     ) {
         val currentSceneKey = currentScene.value
+        val resolvedScene = sceneFamilyResolvers.get()[toScene]?.resolvedScene?.value ?: toScene
         if (
             !validateSceneChange(
                 from = currentSceneKey,
-                to = toScene,
+                to = resolvedScene,
                 loggingReason = loggingReason,
             )
         ) {
@@ -192,13 +219,13 @@
 
         logger.logSceneChangeRequested(
             from = currentSceneKey,
-            to = toScene,
+            to = resolvedScene,
             reason = loggingReason,
             isInstant = false,
         )
 
-        onSceneAboutToChangeListener.forEach { it.onSceneAboutToChange(toScene, sceneState) }
-        repository.changeScene(toScene, transitionKey)
+        onSceneAboutToChangeListener.forEach { it.onSceneAboutToChange(resolvedScene, sceneState) }
+        repository.changeScene(resolvedScene, transitionKey)
     }
 
     /**
@@ -212,10 +239,11 @@
         loggingReason: String,
     ) {
         val currentSceneKey = currentScene.value
+        val resolvedScene = sceneFamilyResolvers.get()[toScene]?.resolvedScene?.value ?: toScene
         if (
             !validateSceneChange(
                 from = currentSceneKey,
-                to = toScene,
+                to = resolvedScene,
                 loggingReason = loggingReason,
             )
         ) {
@@ -224,12 +252,12 @@
 
         logger.logSceneChangeRequested(
             from = currentSceneKey,
-            to = toScene,
+            to = resolvedScene,
             reason = loggingReason,
             isInstant = true,
         )
 
-        repository.snapToScene(toScene)
+        repository.snapToScene(resolvedScene)
     }
 
     /**
@@ -288,6 +316,13 @@
         repository.setTransitionState(transitionState)
     }
 
+    /**
+     * Returns the [concrete scene][Scenes] for [sceneKey] if it is a [scene family][SceneFamilies],
+     * otherwise returns a singleton [Flow] containing [sceneKey].
+     */
+    fun resolveSceneFamily(sceneKey: SceneKey): Flow<SceneKey> =
+        sceneFamilyResolvers.get()[sceneKey]?.resolvedScene ?: flowOf(sceneKey)
+
     private fun isVisibleInternal(
         raw: Boolean = repository.isVisible.value,
         isRemoteUserInteractionOngoing: Boolean = repository.isRemoteUserInteractionOngoing.value,
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt
new file mode 100644
index 0000000..f19929c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.domain.resolver
+
+import com.android.compose.animation.scene.SceneKey
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
+import com.android.systemui.scene.shared.model.Scenes
+import dagger.Binds
+import dagger.Module
+import dagger.multibindings.IntoSet
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.stateIn
+
+/**
+ * Resolver for [SceneFamilies.Home]. The "home" scene family resolves to the scene that is
+ * currently underneath any "overlay" scene, such as shades or bouncer.
+ */
+@SysUISingleton
+class HomeSceneFamilyResolver
+@Inject
+constructor(
+    @Application private val applicationScope: CoroutineScope,
+    deviceEntryInteractor: DeviceEntryInteractor,
+) : SceneResolver {
+    override val targetFamily: SceneKey = SceneFamilies.Home
+
+    override val resolvedScene: StateFlow<SceneKey> =
+        combine(
+                deviceEntryInteractor.canSwipeToEnter,
+                deviceEntryInteractor.isUnlocked,
+                transform = ::homeScene,
+            )
+            .stateIn(
+                scope = applicationScope,
+                started = SharingStarted.WhileSubscribed(),
+                initialValue =
+                    homeScene(
+                        deviceEntryInteractor.canSwipeToEnter.value,
+                        deviceEntryInteractor.isUnlocked.value,
+                    )
+            )
+
+    private fun homeScene(canSwipeToEnter: Boolean?, isUnlocked: Boolean): SceneKey =
+        when {
+            canSwipeToEnter == true -> Scenes.Lockscreen
+            isUnlocked -> Scenes.Gone
+            else -> Scenes.Lockscreen
+        }
+}
+
+@Module
+interface HomeSceneFamilyResolverModule {
+    @Binds @IntoSet fun provideSceneResolver(interactor: HomeSceneFamilyResolver): SceneResolver
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/SceneResolver.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/SceneResolver.kt
new file mode 100644
index 0000000..8372529
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/SceneResolver.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.scene.domain.resolver
+
+import com.android.compose.animation.scene.SceneKey
+import dagger.Module
+import dagger.Provides
+import dagger.multibindings.Multibinds
+import kotlinx.coroutines.flow.StateFlow
+
+/** Resolves [concrete scenes][Scenes] from a [scene family][SceneFamilies]. */
+interface SceneResolver {
+    /** The scene family that this resolves. */
+    val targetFamily: SceneKey
+
+    /** The concrete scene that [targetFamily] is currently resolved to. */
+    val resolvedScene: StateFlow<SceneKey>
+}
+
+@Module
+interface SceneResolverModule {
+
+    @Multibinds fun resolverSet(): Set<@JvmSuppressWildcards SceneResolver>
+
+    companion object {
+        @Provides
+        fun provideResolverMap(
+            resolverSet: Set<@JvmSuppressWildcards SceneResolver>
+        ): Map<SceneKey, SceneResolver> = resolverSet.associateBy { it.targetFamily }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt
new file mode 100644
index 0000000..c6f51b3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/ScrimStartable.kt
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.domain.startable
+
+import androidx.annotation.VisibleForTesting
+import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.SceneKey
+import com.android.systemui.CoreStartable
+import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.keyguard.domain.interactor.BiometricUnlockInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
+import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
+import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
+import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.settings.brightness.domain.interactor.BrightnessMirrorShowingInteractor
+import com.android.systemui.statusbar.phone.DozeServiceHost
+import com.android.systemui.statusbar.phone.ScrimController
+import com.android.systemui.statusbar.phone.ScrimState
+import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
+import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.filterNotNull
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+
+@SysUISingleton
+class ScrimStartable
+@Inject
+constructor(
+    @Application private val applicationScope: CoroutineScope,
+    private val scrimController: ScrimController,
+    sceneInteractor: SceneInteractor,
+    deviceEntryInteractor: DeviceEntryInteractor,
+    keyguardInteractor: KeyguardInteractor,
+    occlusionInteractor: SceneContainerOcclusionInteractor,
+    biometricUnlockInteractor: BiometricUnlockInteractor,
+    private val statusBarKeyguardViewManager: StatusBarKeyguardViewManager,
+    private val alternateBouncerInteractor: AlternateBouncerInteractor,
+    brightnessMirrorShowingInteractor: BrightnessMirrorShowingInteractor,
+    private val dozeServiceHost: DozeServiceHost,
+) : CoreStartable {
+
+    @VisibleForTesting
+    val scrimState: Flow<ScrimState?> =
+        combine(
+                deviceEntryInteractor.isDeviceEntered,
+                occlusionInteractor.invisibleDueToOcclusion,
+                sceneInteractor.currentScene,
+                sceneInteractor.transitionState,
+                keyguardInteractor.isDozing,
+                keyguardInteractor.isDreaming,
+                biometricUnlockInteractor.unlockState,
+                brightnessMirrorShowingInteractor.isShowing,
+                keyguardInteractor.isPulsing,
+                conflatedCallbackFlow {
+                    val listener =
+                        DozeServiceHost.HasPendingScreenOffCallbackChangeListener {
+                            hasPendingScreenOffCallback ->
+                            trySend(hasPendingScreenOffCallback)
+                        }
+                    dozeServiceHost.setHasPendingScreenOffCallbackChangeListener(listener)
+                    awaitClose {
+                        dozeServiceHost.setHasPendingScreenOffCallbackChangeListener(null)
+                    }
+                },
+            ) { flowValues ->
+                val isDeviceEntered = flowValues[0] as Boolean
+                val isOccluded = flowValues[1] as Boolean
+                val currentScene = flowValues[2] as SceneKey
+                val transitionState = flowValues[3] as ObservableTransitionState
+                val isDozing = flowValues[4] as Boolean
+                val isDreaming = flowValues[5] as Boolean
+                val biometricUnlockState = flowValues[6] as BiometricUnlockModel
+                val isBrightnessMirrorVisible = flowValues[7] as Boolean
+                val isPulsing = flowValues[8] as Boolean
+                val hasPendingScreenOffCallback = flowValues[9] as Boolean
+
+                // This is true when the lockscreen scene is either the current scene or somewhere
+                // in the
+                // navigation back stack of scenes.
+                val isOnKeyguard = !isDeviceEntered
+                val isCurrentSceneBouncer = currentScene == Scenes.Bouncer
+                // This is true when moving away from one of the keyguard scenes to the gone scene.
+                // It
+                // happens only when unlocking or when dismissing a dismissible lockscreen.
+                val isTransitioningAwayFromKeyguard =
+                    transitionState is ObservableTransitionState.Transition &&
+                        transitionState.fromScene.isKeyguard() &&
+                        transitionState.toScene == Scenes.Gone
+
+                // This is true when any of the shade scenes is the current scene.
+                val isCurrentSceneShade = currentScene.isShade()
+                // This is true when moving into one of the shade scenes when a non-shade scene.
+                val isTransitioningToShade =
+                    transitionState is ObservableTransitionState.Transition &&
+                        !transitionState.fromScene.isShade() &&
+                        transitionState.toScene.isShade()
+
+                // This is true after completing a transition to communal.
+                val isIdleOnCommunal = transitionState.isIdle(Scenes.Communal)
+
+                // This is true during the process of an unlock of the device.
+                // TODO(b/330587738): add support for remote unlock animations. If such an
+                //   animation is underway, unlocking should be true.
+                val unlocking =
+                    isOnKeyguard &&
+                        (biometricUnlockState.mode == BiometricUnlockMode.WAKE_AND_UNLOCK ||
+                            isTransitioningAwayFromKeyguard)
+
+                if (alternateBouncerInteractor.isVisibleState()) {
+                    // This will cancel the keyguardFadingAway animation if it is running. We need
+                    // to do
+                    // this as otherwise it can remain pending and leave keyguard in a weird state.
+                    onKeyguardFadedAway(isTransitioningAwayFromKeyguard)
+                    if (!isTransitioningToShade) {
+                        // Safeguard which prevents the scrim from being stuck in the wrong
+                        // state
+                        Model(scrimState = ScrimState.KEYGUARD, unlocking = unlocking)
+                    } else {
+                        // Assume scrim state for shade is already correct and do nothing
+                        null
+                    }
+                } else if (isCurrentSceneBouncer && !unlocking) {
+                    // Bouncer needs the front scrim when it's on top of an activity, tapping on a
+                    // notification, editing QS or being dismissed by
+                    // FLAG_DISMISS_KEYGUARD_ACTIVITY.
+                    Model(
+                        scrimState =
+                            if (statusBarKeyguardViewManager.primaryBouncerNeedsScrimming()) {
+                                ScrimState.BOUNCER_SCRIMMED
+                            } else {
+                                ScrimState.BOUNCER
+                            },
+                        unlocking = false,
+                    )
+                } else if (isBrightnessMirrorVisible) {
+                    Model(scrimState = ScrimState.BRIGHTNESS_MIRROR, unlocking = unlocking)
+                } else if (isCurrentSceneShade && !isDeviceEntered) {
+                    Model(scrimState = ScrimState.SHADE_LOCKED, unlocking = unlocking)
+                } else if (isPulsing) {
+                    Model(scrimState = ScrimState.PULSING, unlocking = unlocking)
+                } else if (hasPendingScreenOffCallback) {
+                    Model(scrimState = ScrimState.OFF, unlocking = unlocking)
+                } else if (isDozing && !unlocking) {
+                    // This will cancel the keyguardFadingAway animation if it is running. We need
+                    // to do
+                    // this as otherwise it can remain pending and leave keyguard in a weird state.
+                    onKeyguardFadedAway(isTransitioningAwayFromKeyguard)
+                    Model(scrimState = ScrimState.AOD, unlocking = false)
+                } else if (isIdleOnCommunal) {
+                    if (isOnKeyguard && isDreaming && !unlocking) {
+                        Model(scrimState = ScrimState.GLANCEABLE_HUB_OVER_DREAM, unlocking = false)
+                    } else {
+                        Model(scrimState = ScrimState.GLANCEABLE_HUB, unlocking = unlocking)
+                    }
+                } else if (isOnKeyguard && !unlocking && !isOccluded) {
+                    Model(scrimState = ScrimState.KEYGUARD, unlocking = false)
+                } else if (isOnKeyguard && !unlocking && isDreaming) {
+                    Model(scrimState = ScrimState.DREAMING, unlocking = false)
+                } else {
+                    Model(scrimState = ScrimState.UNLOCKED, unlocking = unlocking)
+                }
+            }
+            .onEach { model ->
+                if (model != null) {
+                    scrimController.setExpansionAffectsAlpha(!model.unlocking)
+                }
+            }
+            .map { model -> model?.scrimState }
+
+    override fun start() {
+        if (!SceneContainerFlag.isEnabled) {
+            return
+        }
+
+        hydrateScrimState()
+    }
+
+    private fun hydrateScrimState() {
+        applicationScope.launch {
+            scrimState.filterNotNull().collect { scrimState ->
+                scrimController.transitionTo(scrimState)
+            }
+        }
+    }
+
+    private fun onKeyguardFadedAway(isKeyguardGoingAway: Boolean) {
+        if (isKeyguardGoingAway) {
+            statusBarKeyguardViewManager.onKeyguardFadedAway()
+        }
+    }
+
+    private fun SceneKey.isKeyguard(): Boolean {
+        return this == Scenes.Lockscreen || this == Scenes.Bouncer
+    }
+
+    private fun SceneKey.isShade(): Boolean {
+        return this == Scenes.Shade ||
+            this == Scenes.QuickSettings ||
+            this == Scenes.NotificationsShade ||
+            this == Scenes.QuickSettingsShade
+    }
+
+    private data class Model(
+        val scrimState: ScrimState,
+        val unlocking: Boolean,
+    )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
index 6d139da..ef5290f 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scenes.kt
@@ -64,7 +64,7 @@
      *
      * For the "split" shade configuration (on large screens or unfolded foldables, where
      * notifications and quick settings are shown side-by-side in their own columns), the [Shade]
-     * scene is used].
+     * scene is used.
      *
      * For the dual shade configuration, where there are two separate shades: one for notifications
      * and one for quick settings, [NotificationsShade] and [QuickSettingsShade] scenes are used
@@ -97,3 +97,29 @@
      */
     @JvmField val Shade = SceneKey("shade")
 }
+
+/**
+ * Keys of all known scene families. A scene family is an alias that is resolved to a specific scene
+ * from [Scenes] dynamically.
+ *
+ * PLEASE KEEP THE KEYS SORTED ALPHABETICALLY.
+ */
+object SceneFamilies {
+    /**
+     * The "base" scene, from the user's perspective. This is generally Gone or Lockscreen,
+     * depending on whether the device is unlocked and has been entered.
+     */
+    @JvmField val Home = SceneKey(debugName = "scene_family_home")
+
+    /**
+     * The scene that contains the full, interactive notification shade. The specific scene it
+     * resolves to can depend on dual / split / single shade settings.
+     */
+    @JvmField val NotifShade = SceneKey(debugName = "scene_family_notif_shade")
+
+    /**
+     * The scene that contains the full QuickSettings (not to be confused with Quick-QuickSettings).
+     * The specific scene it resolves to can depend on dual / split / single shade settings.
+     */
+    @JvmField val QuickSettings = SceneKey(debugName = "scene_family_quick_settings")
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
index 09c80b0..ab24e0b 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
@@ -34,6 +34,8 @@
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
 
 /** Models UI state for the scene container. */
@@ -61,7 +63,9 @@
     val isVisible: StateFlow<Boolean> = sceneInteractor.isVisible
 
     private val destinationScenesBySceneKey =
-        scenes.associate { scene -> scene.key to scene.destinationScenes }
+        scenes.associate { scene ->
+            scene.key to scene.destinationScenes.flatMapLatestConflated { replaceSceneFamilies(it) }
+        }
 
     fun currentDestinationScenes(
         scope: CoroutineScope,
@@ -140,7 +144,24 @@
             val fromLockscreenScene = currentScene.value == Scenes.Lockscreen
 
             !fromLockscreenScene || !isFalseTouch
-        }
-            ?: true
+        } ?: true
+    }
+
+    private fun replaceSceneFamilies(
+        destinationScenes: Map<UserAction, UserActionResult>,
+    ): Flow<Map<UserAction, UserActionResult>> {
+        return destinationScenes
+            .mapValues { (_, actionResult) ->
+                sceneInteractor.resolveSceneFamily(actionResult.toScene).map { scene ->
+                    actionResult.copy(toScene = scene)
+                }
+            }
+            .combineValueFlows()
     }
 }
+
+private fun <K, V> Map<K, Flow<V>>.combineValueFlows(): Flow<Map<K, V>> =
+    combine(
+        asIterable().map { (k, fv) -> fv.map { k to it } },
+        transform = Array<Pair<K, V>>::toMap,
+    )
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
index 1c76b00..ab6067c 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
@@ -29,7 +29,6 @@
 import android.view.View
 import android.view.View.GONE
 import android.view.View.VISIBLE
-import android.view.ViewGroup
 import android.view.accessibility.AccessibilityNodeInfo
 import android.widget.AdapterView
 import android.widget.ArrayAdapter
@@ -114,10 +113,8 @@
     }
 
     private lateinit var tapsSwitch: Switch
-    private lateinit var tapsSwitchContainer: ViewGroup
     private lateinit var tapsView: View
     private lateinit var audioSwitch: Switch
-    private lateinit var audioSwitchContainer: ViewGroup
     private lateinit var options: Spinner
 
     override fun createDialog(): SystemUIDialog {
@@ -164,17 +161,12 @@
     private fun initRecordOptionsView() {
         audioSwitch = dialog.requireViewById(R.id.screenrecord_audio_switch)
         tapsSwitch = dialog.requireViewById(R.id.screenrecord_taps_switch)
-        audioSwitchContainer = dialog.requireViewById(R.id.screenrecord_audio_switch_container)
-        tapsSwitchContainer = dialog.requireViewById(R.id.screenrecord_taps_switch_container)
 
         // Add these listeners so that the switch only responds to movement
         // within its target region, to meet accessibility requirements
         audioSwitch.setOnTouchListener { _, event -> event.action == ACTION_MOVE }
         tapsSwitch.setOnTouchListener { _, event -> event.action == ACTION_MOVE }
 
-        audioSwitchContainer.setOnClickListener { audioSwitch.toggle() }
-        tapsSwitchContainer.setOnClickListener { tapsSwitch.toggle() }
-
         tapsView = dialog.requireViewById(R.id.show_taps)
         updateTapsViewVisibility()
 
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt b/packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt
index 80aa0ef..4f27b9e 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt
@@ -79,7 +79,10 @@
     }
 
     /** Produce a new [ScreenshotData] using [CaptureParameters] */
-    suspend fun modify(original: ScreenshotData, updates: CaptureParameters): ScreenshotData {
+    private suspend fun modify(
+        original: ScreenshotData,
+        updates: CaptureParameters,
+    ): ScreenshotData {
         // Update and apply bitmap capture depending on the parameters.
         val updated =
             when (val type = updates.type) {
@@ -117,7 +120,7 @@
         return replaceWithScreenshot(
             original = original,
             componentName = topMainRootTask?.topActivity ?: defaultComponent,
-            owner = topMainRootTask?.userId?.let { UserHandle.of(it) } ?: defaultOwner,
+            owner = defaultOwner,
             displayId = original.displayId
         )
     }
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
index 92006a4..a39d25a 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
@@ -67,6 +67,7 @@
 
         mSlider = requireViewById(R.id.slider);
         mSlider.setAccessibilityLabel(getContentDescription().toString());
+        setBoundaryOffset();
 
         // Finds the progress drawable. Assumes brightness_progress_drawable.xml
         try {
@@ -80,6 +81,17 @@
         }
     }
 
+    private void setBoundaryOffset() {
+         //  BrightnessSliderView uses hardware layer; if the background of its children exceed its
+         //  boundary, it'll be cropped. We need to expand its boundary so that the background of
+         //  ToggleSeekBar (i.e. the focus state) can be correctly rendered.
+        int offset = getResources().getDimensionPixelSize(R.dimen.rounded_slider_boundary_offset);
+        MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
+        lp.setMargins(-offset, -offset, -offset, -offset);
+        setLayoutParams(lp);
+        setPadding(offset,  offset, offset,  offset);
+    }
+
     /**
      * Attaches a listener to relay touch events.
      * @param listener use {@code null} to remove listener
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
index 84156eeb..30b68927 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
@@ -16,12 +16,16 @@
 
 package com.android.systemui.settings.brightness;
 
+import static com.android.systemui.Flags.brightnessSliderFocusState;
+
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.SeekBar;
 
+import com.android.systemui.res.R;
+
 public class ToggleSeekBar extends SeekBar {
     private String mAccessibilityLabel;
 
@@ -61,6 +65,14 @@
         return true;
     }
 
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        if (brightnessSliderFocusState()) {
+            setBackground(mContext.getDrawable(R.drawable.brightness_slider_focus_bg));
+        }
+    }
+
     public void setAccessibilityLabel(String label) {
         mAccessibilityLabel = label;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/GlanceableHubContainerController.kt b/packages/SystemUI/src/com/android/systemui/shade/GlanceableHubContainerController.kt
index bf0843b..2def6c7 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/GlanceableHubContainerController.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/GlanceableHubContainerController.kt
@@ -157,9 +157,15 @@
     private var anyBouncerShowing = false
 
     /**
-     * True if the shade is fully expanded, meaning the hub should not receive any touch input.
+     * True if the shade is fully expanded and the user is not interacting with it anymore, meaning
+     * the hub should not receive any touch input.
      *
-     * Tracks [ShadeInteractor.isAnyFullyExpanded].
+     * We need to not pause the touch handling lifecycle as soon as the shade opens because if the
+     * user swipes down, then back up without lifting their finger, the lifecycle will be paused
+     * then resumed, and resuming force-stops all active touch sessions. This means the shade will
+     * not receive the end of the gesture and will be stuck open.
+     *
+     * Based on [ShadeInteractor.isAnyFullyExpanded] and [ShadeInteractor.isUserInteracting].
      */
     private var shadeShowing = false
 
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
index 6efa633..1df085b 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
@@ -138,6 +138,11 @@
     private final PanelExpansionInteractor mPanelExpansionInteractor;
     private final ShadeExpansionStateManager mShadeExpansionStateManager;
 
+    /**
+     * If {@code true}, an external touch sent in {@link #handleExternalTouch(MotionEvent)} has been
+     * intercepted and all future touch events for the gesture should be processed by this view.
+     */
+    private boolean mExternalTouchIntercepted = false;
     private boolean mIsTrackingBarGesture = false;
     private boolean mIsOcclusionTransitionRunning = false;
     private DisableSubpixelTextTransitionListener mDisableSubpixelTextTransitionListener;
@@ -222,7 +227,7 @@
         bouncerViewBinder.bind(mView.findViewById(R.id.keyguard_bouncer_container));
 
         collectFlow(mView, keyguardTransitionInteractor.transition(
-                Edge.Companion.create(LOCKSCREEN, DREAMING)),
+                Edge.create(LOCKSCREEN, DREAMING)),
                 mLockscreenToDreamingTransition);
         collectFlow(
                 mView,
@@ -255,11 +260,28 @@
     }
 
     /**
-     * Handle a touch event while dreaming by forwarding the event to the content view.
+     * Handle a touch event while dreaming or on the hub by forwarding the event to the content
+     * view.
+     * <p>
+     * Since important logic for handling touches lives in the dispatch/intercept phases, we
+     * simulate going through all of these stages before sending onTouchEvent if intercepted.
+     *
      * @param event The event to forward.
      */
-    public void handleDreamTouch(MotionEvent event) {
-        mView.dispatchTouchEvent(event);
+    public void handleExternalTouch(MotionEvent event) {
+        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+            mExternalTouchIntercepted = false;
+        }
+
+        if (!mView.dispatchTouchEvent(event)) {
+            return;
+        }
+        if (!mExternalTouchIntercepted) {
+            mExternalTouchIntercepted = mView.onInterceptTouchEvent(event);
+        }
+        if (mExternalTouchIntercepted) {
+            mView.onTouchEvent(event);
+        }
     }
 
     /** Inflates the {@link R.layout#status_bar_expanded} layout and sets it up. */
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
index 884ccef..ac1f971 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
@@ -17,16 +17,14 @@
 package com.android.systemui.shade
 
 import android.view.MotionEvent
-import com.android.compose.animation.scene.SceneKey
 import com.android.systemui.assist.AssistManager
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
-import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
 import com.android.systemui.log.LogBuffer
 import com.android.systemui.log.dagger.ShadeTouchLog
 import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse
 import com.android.systemui.shade.ShadeController.ShadeVisibilityListener
@@ -61,8 +59,6 @@
     @Background private val scope: CoroutineScope,
     private val shadeInteractor: ShadeInteractor,
     private val sceneInteractor: SceneInteractor,
-    private val deviceEntryInteractor: DeviceEntryInteractor,
-    private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
     private val notificationStackScrollLayout: NotificationStackScrollLayout,
     @ShadeTouchLog private val touchLog: LogBuffer,
     private val vibratorHelper: VibratorHelper,
@@ -100,7 +96,7 @@
 
     override fun instantCollapseShade() {
         sceneInteractor.snapToScene(
-            getCollapseDestinationScene(),
+            SceneFamilies.Home,
             "hide shade",
         )
     }
@@ -140,24 +136,12 @@
 
     private fun animateCollapseShadeInternal() {
         sceneInteractor.changeScene(
-            getCollapseDestinationScene(), // TODO(b/336581871): add sceneState?
+            SceneFamilies.Home, // TODO(b/336581871): add sceneState?
             "ShadeController.animateCollapseShade",
             SlightlyFasterShadeCollapse,
         )
     }
 
-    private fun getCollapseDestinationScene(): SceneKey {
-        // Always check whether device is unlocked before transitioning to gone scene.
-        return if (
-            deviceUnlockedInteractor.deviceUnlockStatus.value.isUnlocked &&
-                deviceEntryInteractor.isDeviceEntered.value
-        ) {
-            Scenes.Gone
-        } else {
-            Scenes.Lockscreen
-        }
-    }
-
     override fun cancelExpansionAndCollapseShade() {
         // TODO do we need to actually cancel the touch session?
         animateCollapseShade()
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
index 55bd8c6..3a483f4 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
@@ -18,6 +18,7 @@
 
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.shade.shared.model.ShadeMode
 import javax.inject.Inject
@@ -36,11 +37,7 @@
         if (shadeInteractor.isQsExpanded.value) {
             val key =
                 if (fullyCollapse || shadeInteractor.shadeMode.value is ShadeMode.Dual) {
-                    if (deviceEntryInteractor.isDeviceEntered.value) {
-                        Scenes.Gone
-                    } else {
-                        Scenes.Lockscreen
-                    }
+                    SceneFamilies.Home
                 } else {
                     Scenes.Shade
                 }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt
index b8dd628..0314091 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt
@@ -19,49 +19,41 @@
 import com.android.compose.animation.scene.SceneKey
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
 
 /**
  * Models UI state and handles user input for the overlay shade UI, which shows a shade as an
  * overlay on top of another scene UI.
  */
-@OptIn(ExperimentalCoroutinesApi::class)
 @SysUISingleton
 class OverlayShadeViewModel
 @Inject
 constructor(
-    @Application private val applicationScope: CoroutineScope,
+    @Application applicationScope: CoroutineScope,
     private val sceneInteractor: SceneInteractor,
-    deviceEntryInteractor: DeviceEntryInteractor,
 ) {
     /** The scene to show in the background when the overlay shade is open. */
     val backgroundScene: StateFlow<SceneKey> =
-        deviceEntryInteractor.isDeviceEntered
-            .map(::backgroundScene)
+        sceneInteractor
+            .resolveSceneFamily(SceneFamilies.Home)
             .stateIn(
                 scope = applicationScope,
                 started = SharingStarted.WhileSubscribed(),
-                initialValue = backgroundScene(deviceEntryInteractor.isDeviceEntered.value)
+                initialValue = Scenes.Lockscreen,
             )
 
     /** Notifies that the user has clicked the semi-transparent background scrim. */
     fun onScrimClicked() {
         sceneInteractor.changeScene(
-            toScene = backgroundScene.value,
+            toScene = SceneFamilies.Home,
             loggingReason = "Shade scrim clicked",
         )
     }
-
-    private fun backgroundScene(isDeviceEntered: Boolean): SceneKey {
-        return if (isDeviceEntered) Scenes.Gone else Scenes.Lockscreen
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModel.kt
index e4a2424..b0100b9 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModel.kt
@@ -26,12 +26,12 @@
 import com.android.compose.animation.scene.UserActionResult
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
 import com.android.systemui.qs.FooterActionsController
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.qs.ui.adapter.QSSceneAdapter
 import com.android.systemui.scene.domain.interactor.SceneInteractor
+import com.android.systemui.scene.shared.model.SceneFamilies
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
 import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
@@ -39,6 +39,7 @@
 import com.android.systemui.shade.shared.model.ShadeMode
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
 import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor
+import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
 import java.util.concurrent.atomic.AtomicBoolean
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
@@ -47,6 +48,7 @@
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
 
@@ -56,7 +58,6 @@
 @Inject
 constructor(
     @Application private val applicationScope: CoroutineScope,
-    deviceEntryInteractor: DeviceEntryInteractor,
     val qsSceneAdapter: QSSceneAdapter,
     val shadeHeaderViewModel: ShadeHeaderViewModel,
     val notifications: NotificationsPlaceholderViewModel,
@@ -70,16 +71,12 @@
 ) {
     val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
         combine(
-                deviceEntryInteractor.isUnlocked,
-                deviceEntryInteractor.canSwipeToEnter,
                 shadeInteractor.shadeMode,
-                qsSceneAdapter.isCustomizerShowing
-            ) { isUnlocked, canSwipeToDismiss, shadeMode, isCustomizerShowing ->
+                qsSceneAdapter.isCustomizerShowing,
+            ) { shadeMode, isCustomizerShowing ->
                 destinationScenes(
-                    isUnlocked = isUnlocked,
-                    canSwipeToDismiss = canSwipeToDismiss,
                     shadeMode = shadeMode,
-                    isCustomizing = isCustomizerShowing
+                    isCustomizing = isCustomizerShowing,
                 )
             }
             .stateIn(
@@ -87,8 +84,6 @@
                 started = SharingStarted.WhileSubscribed(),
                 initialValue =
                     destinationScenes(
-                        isUnlocked = deviceEntryInteractor.isUnlocked.value,
-                        canSwipeToDismiss = deviceEntryInteractor.canSwipeToEnter.value,
                         shadeMode = shadeInteractor.shadeMode.value,
                         isCustomizing = qsSceneAdapter.isCustomizerShowing.value,
                     ),
@@ -100,6 +95,9 @@
     /** Whether or not the shade container should be clickable. */
     val isClickable: StateFlow<Boolean> =
         upDestinationSceneKey
+            .flatMapLatestConflated { key ->
+                key?.let { sceneInteractor.resolveSceneFamily(key) } ?: flowOf(null)
+            }
             .map { it == Scenes.Lockscreen }
             .stateIn(
                 scope = applicationScope,
@@ -138,27 +136,22 @@
     }
 
     private fun destinationScenes(
-        isUnlocked: Boolean,
-        canSwipeToDismiss: Boolean?,
         shadeMode: ShadeMode,
         isCustomizing: Boolean,
     ): Map<UserAction, UserActionResult> {
-        val up =
-            when {
-                canSwipeToDismiss == true -> Scenes.Lockscreen
-                isUnlocked -> Scenes.Gone
-                else -> Scenes.Lockscreen
-            }
-
-        val upTransitionKey = ToSplitShade.takeIf { shadeMode is ShadeMode.Split }
-
-        val down = Scenes.QuickSettings.takeIf { shadeMode is ShadeMode.Single }
-
         return buildMap {
             if (!isCustomizing) {
-                this[Swipe(SwipeDirection.Up)] = UserActionResult(up, upTransitionKey)
+                set(
+                    Swipe(SwipeDirection.Up),
+                    UserActionResult(
+                        SceneFamilies.Home,
+                        ToSplitShade.takeIf { shadeMode is ShadeMode.Split }
+                    )
+                )
             } // TODO(b/330200163) Add an else to be able to collapse the shade while customizing
-            down?.let { this[Swipe(SwipeDirection.Down)] = UserActionResult(down) }
+            if (shadeMode is ShadeMode.Single) {
+                set(Swipe(SwipeDirection.Down), UserActionResult(Scenes.QuickSettings))
+            }
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java
index c742f641..5c4a63c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java
@@ -455,7 +455,7 @@
         if (mReceivedAppShortcutGroups == null || mReceivedImeShortcutGroups == null) {
             return;
         }
-        List<KeyboardShortcutGroup> shortcutGroups = mReceivedAppShortcutGroups;
+        List<KeyboardShortcutGroup> shortcutGroups = new ArrayList<>(mReceivedAppShortcutGroups);
         shortcutGroups.addAll(mReceivedImeShortcutGroups);
         mReceivedAppShortcutGroups = null;
         mReceivedImeShortcutGroups = null;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 47939ae..337ffa4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -20,6 +20,7 @@
 import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
 import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_MANAGEMENT_DISCLOSURE;
 import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_NAMED_MANAGEMENT_DISCLOSURE;
+import static android.hardware.biometrics.BiometricFaceConstants.FACE_ACQUIRED_START;
 import static android.hardware.biometrics.BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK;
 import static android.hardware.biometrics.BiometricFaceConstants.FACE_ERROR_TIMEOUT;
 import static android.hardware.biometrics.BiometricSourceType.FACE;
@@ -1296,6 +1297,12 @@
         @Override
         public void onBiometricAcquired(BiometricSourceType biometricSourceType, int acquireInfo) {
             if (biometricSourceType == FACE) {
+                if (acquireInfo == FACE_ACQUIRED_START) {
+                    // Let's hide any previous messages when authentication starts, otherwise
+                    // multiple auth attempts would overlap.
+                    hideBiometricMessage();
+                    mBiometricErrorMessageToShowOnScreenOn = null;
+                }
                 mFaceAcquiredMessageDeferral.processFrame(acquireInfo);
             }
         }
@@ -1485,13 +1492,6 @@
         @Override
         public void onBiometricRunningStateChanged(boolean running,
                 BiometricSourceType biometricSourceType) {
-            if (running && biometricSourceType == FACE) {
-                // Let's hide any previous messages when authentication starts, otherwise
-                // multiple auth attempts would overlap.
-                hideBiometricMessage();
-                mBiometricErrorMessageToShowOnScreenOn = null;
-            }
-
             if (!running && biometricSourceType == FACE) {
                 showTrustAgentErrorMessage(mTrustAgentErrorMessage);
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
index 6d34a0f..04a413a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
@@ -303,7 +303,12 @@
         // TODO(b/169655907): get the semi-filtered notifications for current user
         Collection<NotificationEntry> allNotifications = mNotifPipeline.getAllNotifs();
         if (notificationMediaManagerBackgroundExecution()) {
-            mBackgroundExecutor.execute(() -> findPlayingMediaNotification(allNotifications));
+            // Create new sbn list to be accessed in background thread.
+            List<StatusBarNotification> statusBarNotifications = new ArrayList<>();
+            for (NotificationEntry entry: allNotifications) {
+                statusBarNotifications.add(entry.getSbn());
+            }
+            mBackgroundExecutor.execute(() -> findPlayingMediaNotification(statusBarNotifications));
         } else {
             findPlayingMediaNotification(allNotifications);
         }
@@ -341,6 +346,51 @@
             }
         }
 
+        StatusBarNotification statusBarNotification = null;
+        if (mediaNotification != null) {
+            statusBarNotification = mediaNotification.getSbn();
+        }
+        setUpControllerAndKey(controller, statusBarNotification);
+    }
+
+    /**
+     * Find a notification and media controller associated with the playing media session, and
+     * update this manager's internal state.
+     * This method must be called in background.
+     * TODO(b/273443374) check this method
+     */
+    void findPlayingMediaNotification(@NonNull List<StatusBarNotification> allNotifications) {
+        // Promote the media notification with a controller in 'playing' state, if any.
+        StatusBarNotification statusBarNotification = null;
+        MediaController controller = null;
+        for (StatusBarNotification sbn : allNotifications) {
+            Notification notif = sbn.getNotification();
+            if (notif.isMediaNotification()) {
+                final MediaSession.Token token =
+                        sbn.getNotification().extras.getParcelable(
+                                Notification.EXTRA_MEDIA_SESSION, MediaSession.Token.class);
+                if (token != null) {
+                    MediaController aController = new MediaController(mContext, token);
+                    if (PlaybackState.STATE_PLAYING
+                            == getMediaControllerPlaybackState(aController)) {
+                        if (DEBUG_MEDIA) {
+                            Log.v(TAG, "DEBUG_MEDIA: found mediastyle controller matching "
+                                    + sbn.getKey());
+                        }
+                        statusBarNotification = sbn;
+                        controller = aController;
+                        break;
+                    }
+                }
+            }
+        }
+
+        setUpControllerAndKey(controller, statusBarNotification);
+    }
+
+    private void setUpControllerAndKey(
+            MediaController controller,
+            StatusBarNotification mediaNotification) {
         if (controller != null && !sameSessions(mMediaController, controller)) {
             // We have a new media session
             clearCurrentMediaNotificationSession();
@@ -354,8 +404,8 @@
         }
 
         if (mediaNotification != null
-                && !mediaNotification.getSbn().getKey().equals(mMediaNotificationKey)) {
-            mMediaNotificationKey = mediaNotification.getSbn().getKey();
+                && !mediaNotification.getKey().equals(mMediaNotificationKey)) {
+            mMediaNotificationKey = mediaNotification.getKey();
             if (DEBUG_MEDIA) {
                 Log.v(TAG, "DEBUG_MEDIA: Found new media notification: key="
                         + mMediaNotificationKey);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index f8193a4..d0702fc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -27,6 +27,7 @@
 import android.app.Notification;
 import android.content.Context;
 import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
 import android.content.res.ColorStateList;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -35,6 +36,7 @@
 import android.graphics.ColorMatrixColorFilter;
 import android.graphics.Paint;
 import android.graphics.Rect;
+import android.graphics.drawable.AdaptiveIconDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Trace;
@@ -94,6 +96,8 @@
     public static final int STATE_DOT = 1;
     public static final int STATE_HIDDEN = 2;
 
+    public static final float APP_ICON_SCALE = .75f;
+
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({STATE_ICON, STATE_DOT, STATE_HIDDEN})
     public @interface VisibleState { }
@@ -499,7 +503,12 @@
             userId = UserHandle.USER_SYSTEM;
         }
 
-        Drawable icon = statusBarIcon.icon.loadDrawableAsUser(context, userId);
+        // Try to load the monochrome app icon if applicable
+        Drawable icon = maybeGetMonochromeAppIcon(context, statusBarIcon);
+        // Otherwise, just use the icon normally
+        if (icon == null) {
+            icon = statusBarIcon.icon.loadDrawableAsUser(context, userId);
+        }
 
         TypedValue typedValue = new TypedValue();
         sysuiContext.getResources().getValue(R.dimen.status_bar_icon_scale_factor,
@@ -526,6 +535,26 @@
         return new ScalingDrawableWrapper(icon, scaleFactor);
     }
 
+    @Nullable
+    private Drawable maybeGetMonochromeAppIcon(Context context,
+            StatusBarIcon statusBarIcon) {
+        if (android.app.Flags.notificationsUseMonochromeAppIcon()
+                && statusBarIcon.type == StatusBarIcon.Type.MaybeMonochromeAppIcon) {
+            // Check if we have a monochrome app icon
+            PackageManager pm = context.getPackageManager();
+            Drawable appIcon = context.getApplicationInfo().loadIcon(pm);
+            if (appIcon instanceof AdaptiveIconDrawable) {
+                Drawable monochrome = ((AdaptiveIconDrawable) appIcon).getMonochrome();
+                if (monochrome != null) {
+                    setCropToPadding(true);
+                    setScaleType(ScaleType.CENTER);
+                    return new ScalingDrawableWrapper(monochrome, APP_ICON_SCALE);
+                }
+            }
+        }
+        return null;
+    }
+
     public StatusBarIcon getStatusBarIcon() {
         return mIcon;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt
index 6586259..9eb9ed5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt
@@ -26,6 +26,7 @@
 import androidx.core.animation.Animator
 import com.android.app.animation.Interpolators
 import com.android.internal.annotations.GuardedBy
+import com.android.systemui.Flags.privacyDotUnfoldWrongCornerFix
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Main
@@ -505,7 +506,9 @@
             return
         }
 
-        if (state.rotation != currentViewState.rotation) {
+        val designatedCornerChanged = state.designatedCorner != currentViewState.designatedCorner
+        val rotationChanged = state.rotation != currentViewState.rotation
+        if (rotationChanged || (designatedCornerChanged && privacyDotUnfoldWrongCornerFix())) {
             // A rotation has started, hide the views to avoid flicker
             updateRotations(state.rotation, state.paddingTop)
         }
@@ -515,7 +518,7 @@
             views.forEach { it.requestLayout() }
         }
 
-        if (state.designatedCorner != currentViewState.designatedCorner) {
+        if (designatedCornerChanged) {
             currentViewState.designatedCorner?.contentDescription = null
             state.designatedCorner?.contentDescription = state.contentDescription
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManager.kt
index 2f293e0..f62b24a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManager.kt
@@ -18,33 +18,29 @@
 
 import android.content.Context
 import android.provider.DeviceConfig
-
 import com.android.internal.annotations.VisibleForTesting
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NOTIFICATIONS_USE_PEOPLE_FILTERING
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.notification.shared.NotificationMinimalismPrototype
 import com.android.systemui.statusbar.notification.shared.PriorityPeopleSection
 import com.android.systemui.statusbar.notification.stack.BUCKET_ALERTING
 import com.android.systemui.statusbar.notification.stack.BUCKET_FOREGROUND_SERVICE
 import com.android.systemui.statusbar.notification.stack.BUCKET_HEADS_UP
 import com.android.systemui.statusbar.notification.stack.BUCKET_MEDIA_CONTROLS
 import com.android.systemui.statusbar.notification.stack.BUCKET_PEOPLE
-import com.android.systemui.statusbar.notification.stack.BUCKET_PRIORITY_PEOPLE
 import com.android.systemui.statusbar.notification.stack.BUCKET_SILENT
+import com.android.systemui.statusbar.notification.stack.PriorityBucket
 import com.android.systemui.util.DeviceConfigProxy
 import com.android.systemui.util.Utils
-
 import javax.inject.Inject
 
 private var sUsePeopleFiltering: Boolean? = null
 
-/**
- * Feature controller for the NOTIFICATIONS_USE_PEOPLE_FILTERING config.
- */
+/** Feature controller for the NOTIFICATIONS_USE_PEOPLE_FILTERING config. */
 @SysUISingleton
-class NotificationSectionsFeatureManager @Inject constructor(
-    val proxy: DeviceConfigProxy,
-    val context: Context
-) {
+class NotificationSectionsFeatureManager
+@Inject
+constructor(val proxy: DeviceConfigProxy, val context: Context) {
 
     fun isFilteringEnabled(): Boolean {
         return usePeopleFiltering(proxy)
@@ -55,30 +51,37 @@
     }
 
     fun getNotificationBuckets(): IntArray {
-        if (PriorityPeopleSection.isEnabled) {
+        if (PriorityPeopleSection.isEnabled || NotificationMinimalismPrototype.V2.isEnabled) {
             // We don't need this list to be adaptive, it can be the superset of all features.
-            return intArrayOf(
-                    BUCKET_MEDIA_CONTROLS,
-                    BUCKET_HEADS_UP,
-                    BUCKET_FOREGROUND_SERVICE,
-                    BUCKET_PRIORITY_PEOPLE,
-                    BUCKET_PEOPLE,
-                    BUCKET_ALERTING,
-                    BUCKET_SILENT,
-                )
+            return PriorityBucket.getAllInOrder()
         }
         return when {
             isFilteringEnabled() && isMediaControlsEnabled() ->
-                intArrayOf(BUCKET_HEADS_UP, BUCKET_FOREGROUND_SERVICE, BUCKET_MEDIA_CONTROLS,
-                        BUCKET_PEOPLE, BUCKET_ALERTING, BUCKET_SILENT)
+                intArrayOf(
+                    BUCKET_HEADS_UP,
+                    BUCKET_FOREGROUND_SERVICE,
+                    BUCKET_MEDIA_CONTROLS,
+                    BUCKET_PEOPLE,
+                    BUCKET_ALERTING,
+                    BUCKET_SILENT
+                )
             !isFilteringEnabled() && isMediaControlsEnabled() ->
-                intArrayOf(BUCKET_HEADS_UP, BUCKET_FOREGROUND_SERVICE, BUCKET_MEDIA_CONTROLS,
-                        BUCKET_ALERTING, BUCKET_SILENT)
+                intArrayOf(
+                    BUCKET_HEADS_UP,
+                    BUCKET_FOREGROUND_SERVICE,
+                    BUCKET_MEDIA_CONTROLS,
+                    BUCKET_ALERTING,
+                    BUCKET_SILENT
+                )
             isFilteringEnabled() && !isMediaControlsEnabled() ->
-                intArrayOf(BUCKET_HEADS_UP, BUCKET_FOREGROUND_SERVICE, BUCKET_PEOPLE,
-                        BUCKET_ALERTING, BUCKET_SILENT)
-            else ->
-                intArrayOf(BUCKET_ALERTING, BUCKET_SILENT)
+                intArrayOf(
+                    BUCKET_HEADS_UP,
+                    BUCKET_FOREGROUND_SERVICE,
+                    BUCKET_PEOPLE,
+                    BUCKET_ALERTING,
+                    BUCKET_SILENT
+                )
+            else -> intArrayOf(BUCKET_ALERTING, BUCKET_SILENT)
         }
     }
 
@@ -94,8 +97,12 @@
 
 private fun usePeopleFiltering(proxy: DeviceConfigProxy): Boolean {
     if (sUsePeopleFiltering == null) {
-        sUsePeopleFiltering = proxy.getBoolean(
-                DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_USE_PEOPLE_FILTERING, true)
+        sUsePeopleFiltering =
+            proxy.getBoolean(
+                DeviceConfig.NAMESPACE_SYSTEMUI,
+                NOTIFICATIONS_USE_PEOPLE_FILTERING,
+                true
+            )
     }
 
     return sUsePeopleFiltering!!
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index b397906..1adfef0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -68,6 +68,9 @@
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
 import com.android.systemui.statusbar.notification.row.NotificationGuts;
+import com.android.systemui.statusbar.notification.row.shared.HeadsUpStatusBarModel;
+import com.android.systemui.statusbar.notification.row.shared.NotificationContentModel;
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
 import com.android.systemui.statusbar.notification.stack.PriorityBucket;
 import com.android.systemui.util.ListenerSet;
 
@@ -951,6 +954,7 @@
      * heads up.
      */
     public void setHeadsUpStatusBarText(CharSequence headsUpStatusBarText) {
+        NotificationRowContentBinderRefactor.assertInLegacyMode();
         this.mHeadsUpStatusBarText.setValue(headsUpStatusBarText);
     }
 
@@ -964,6 +968,7 @@
      * heads up, and its content is sensitive right now.
      */
     public void setHeadsUpStatusBarTextPublic(CharSequence headsUpStatusBarTextPublic) {
+        NotificationRowContentBinderRefactor.assertInLegacyMode();
         this.mHeadsUpStatusBarTextPublic.setValue(headsUpStatusBarTextPublic);
     }
 
@@ -1036,6 +1041,14 @@
                 == Notification.VISIBILITY_PRIVATE;
     }
 
+    /** Set the content generated by the notification inflater. */
+    public void setContentModel(NotificationContentModel contentModel) {
+        if (NotificationRowContentBinderRefactor.isUnexpectedlyInLegacyMode()) return;
+        HeadsUpStatusBarModel headsUpStatusBarModel = contentModel.getHeadsUpStatusBarModel();
+        this.mHeadsUpStatusBarText.setValue(headsUpStatusBarModel.getPrivateText());
+        this.mHeadsUpStatusBarTextPublic.setValue(headsUpStatusBarModel.getPublicText());
+    }
+
     /** Information about a suggestion that is being edited. */
     public static class EditedSuggestionInfo {
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
index 63997f8..47a0429 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java
@@ -60,22 +60,27 @@
         public boolean isInSection(ListEntry entry) {
             NotificationEntry notificationEntry = entry.getRepresentativeEntry();
             if (notificationEntry != null) {
-                return isColorizedForegroundService(notificationEntry) || isCall(notificationEntry);
+                return isRichOngoing(notificationEntry);
             }
             return false;
         }
-
-        private boolean isColorizedForegroundService(NotificationEntry entry) {
-            Notification notification = entry.getSbn().getNotification();
-            return notification.isForegroundService()
-                    && notification.isColorized()
-                    && entry.getImportance() > IMPORTANCE_MIN;
-        }
-
-        private boolean isCall(NotificationEntry entry) {
-            Notification notification = entry.getSbn().getNotification();
-            return entry.getImportance() > IMPORTANCE_MIN
-                    && notification.isStyle(Notification.CallStyle.class);
-        }
     };
+
+    /** Determines if the given notification is a colorized or call notification */
+    public static boolean isRichOngoing(NotificationEntry entry) {
+        return isColorizedForegroundService(entry) || isCall(entry);
+    }
+
+    private static boolean isColorizedForegroundService(NotificationEntry entry) {
+        Notification notification = entry.getSbn().getNotification();
+        return notification.isForegroundService()
+                && notification.isColorized()
+                && entry.getImportance() > IMPORTANCE_MIN;
+    }
+
+    private static boolean isCall(NotificationEntry entry) {
+        Notification notification = entry.getSbn().getNotification();
+        return entry.getImportance() > IMPORTANCE_MIN
+                && notification.isStyle(Notification.CallStyle.class);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
index 071192b..5a1146d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
@@ -18,6 +18,7 @@
 
 package com.android.systemui.statusbar.notification.collection.coordinator
 
+import android.app.NotificationManager
 import android.os.UserHandle
 import android.provider.Settings
 import androidx.annotation.VisibleForTesting
@@ -44,7 +45,8 @@
 import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
 import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider
 import com.android.systemui.statusbar.notification.shared.NotificationMinimalismPrototype
-import com.android.systemui.statusbar.notification.stack.BUCKET_FOREGROUND_SERVICE
+import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_ONGOING
+import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_UNSEEN
 import com.android.systemui.statusbar.policy.HeadsUpManager
 import com.android.systemui.statusbar.policy.headsUpEvents
 import com.android.systemui.util.asIndenting
@@ -113,7 +115,7 @@
     private fun attachUnseenFilter(pipeline: NotifPipeline) {
         if (NotificationMinimalismPrototype.V2.isEnabled) {
             pipeline.addPromoter(unseenNotifPromoter)
-            pipeline.addOnBeforeTransformGroupsListener(::pickOutTopUnseenNotif)
+            pipeline.addOnBeforeTransformGroupsListener(::pickOutTopUnseenNotifs)
         }
         pipeline.addFinalizeFilter(unseenNotifFilter)
         pipeline.addCollectionListener(collectionListener)
@@ -347,15 +349,16 @@
             }
         }
 
-    private fun pickOutTopUnseenNotif(list: List<ListEntry>) {
+    private fun pickOutTopUnseenNotifs(list: List<ListEntry>) {
         if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return
         // Only ever elevate a top unseen notification on keyguard, not even locked shade
         if (statusBarStateController.state != StatusBarState.KEYGUARD) {
+            seenNotificationsInteractor.setTopOngoingNotification(null)
             seenNotificationsInteractor.setTopUnseenNotification(null)
             return
         }
         // On keyguard pick the top-ranked unseen or ongoing notification to elevate
-        seenNotificationsInteractor.setTopUnseenNotification(
+        val nonSummaryEntries: Sequence<NotificationEntry> =
             list
                 .asSequence()
                 .flatMap {
@@ -365,7 +368,15 @@
                         else -> error("unhandled type of $it")
                     }
                 }
-                .filter { shouldIgnoreUnseenCheck(it) || it in unseenNotifications }
+                .filter { it.importance >= NotificationManager.IMPORTANCE_DEFAULT }
+        seenNotificationsInteractor.setTopOngoingNotification(
+            nonSummaryEntries
+                .filter { ColorizedFgsCoordinator.isRichOngoing(it) }
+                .minByOrNull { it.ranking.rank }
+        )
+        seenNotificationsInteractor.setTopUnseenNotification(
+            nonSummaryEntries
+                .filter { !ColorizedFgsCoordinator.isRichOngoing(it) && it in unseenNotifications }
                 .minByOrNull { it.ranking.rank }
         )
     }
@@ -375,29 +386,39 @@
         object : NotifPromoter("$TAG-unseen") {
             override fun shouldPromoteToTopLevel(child: NotificationEntry): Boolean =
                 if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) false
+                else if (!NotificationMinimalismPrototype.V2.ungroupTopUnseen) false
                 else
-                    seenNotificationsInteractor.isTopUnseenNotification(child) &&
-                        NotificationMinimalismPrototype.V2.ungroupTopUnseen
+                    seenNotificationsInteractor.isTopOngoingNotification(child) ||
+                        seenNotificationsInteractor.isTopUnseenNotification(child)
         }
 
-    val unseenNotifSectioner =
-        object : NotifSectioner("Unseen", BUCKET_FOREGROUND_SERVICE) {
+    val topOngoingSectioner =
+        object : NotifSectioner("TopOngoing", BUCKET_TOP_ONGOING) {
             override fun isInSection(entry: ListEntry): Boolean {
                 if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
-                if (
-                    seenNotificationsInteractor.isTopUnseenNotification(entry.representativeEntry)
-                ) {
-                    return true
-                }
-                if (entry !is GroupEntry) {
-                    return false
-                }
-                return entry.children.any {
-                    seenNotificationsInteractor.isTopUnseenNotification(it)
+                return entry.anyEntry { notificationEntry ->
+                    seenNotificationsInteractor.isTopOngoingNotification(notificationEntry)
                 }
             }
         }
 
+    val topUnseenSectioner =
+        object : NotifSectioner("TopUnseen", BUCKET_TOP_UNSEEN) {
+            override fun isInSection(entry: ListEntry): Boolean {
+                if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
+                return entry.anyEntry { notificationEntry ->
+                    seenNotificationsInteractor.isTopUnseenNotification(notificationEntry)
+                }
+            }
+        }
+
+    private fun ListEntry.anyEntry(predicate: (NotificationEntry?) -> Boolean) =
+        when {
+            predicate(representativeEntry) -> true
+            this !is GroupEntry -> false
+            else -> children.any(predicate)
+        }
+
     @VisibleForTesting
     internal val unseenNotifFilter =
         object : NotifFilter("$TAG-unseen") {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
index 4506385..e413522 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
@@ -116,11 +116,14 @@
         }
 
         // Manually add Ordered Sections
-        mOrderedSections.add(headsUpCoordinator.sectioner) // HeadsUp
-        mOrderedSections.add(colorizedFgsCoordinator.sectioner) // ForegroundService
         if (NotificationMinimalismPrototype.V2.isEnabled) {
-            mOrderedSections.add(keyguardCoordinator.unseenNotifSectioner) // Unseen (FGS)
+            mOrderedSections.add(keyguardCoordinator.topOngoingSectioner) // Top Ongoing
         }
+        mOrderedSections.add(headsUpCoordinator.sectioner) // HeadsUp
+        if (NotificationMinimalismPrototype.V2.isEnabled) {
+            mOrderedSections.add(keyguardCoordinator.topUnseenSectioner) // Top Unseen
+        }
+        mOrderedSections.add(colorizedFgsCoordinator.sectioner) // ForegroundService
         if (PriorityPeopleSection.isEnabled) {
             mOrderedSections.add(conversationCoordinator.priorityPeopleSectioner) // Priority People
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
index e2c9e02..45d1034 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
@@ -42,6 +42,9 @@
     /** Stats about the list of notifications attached to the shade */
     val notifStats = MutableStateFlow(NotifStats.empty)
 
+    /** The key of the top ongoing notification */
+    val topOngoingNotificationKey = MutableStateFlow<String?>(null)
+
     /** The key of the top unseen notification */
     val topUnseenNotificationKey = MutableStateFlow<String?>(null)
 }
@@ -75,6 +78,7 @@
     /** Unique key identifying an [ActiveNotificationEntryModel] in the store. */
     sealed class Key {
         data class Individual(val key: String) : Key()
+
         data class Group(val key: String) : Key()
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
index 42828d9..85c66bd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
@@ -39,6 +39,18 @@
         notificationListRepository.hasFilteredOutSeenNotifications.value = value
     }
 
+    /** Set the entry that is identified as the top ongoing notification. */
+    fun setTopOngoingNotification(entry: NotificationEntry?) {
+        if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return
+        notificationListRepository.topOngoingNotificationKey.value = entry?.key
+    }
+
+    /** Determine if the given notification is the top ongoing notification. */
+    fun isTopOngoingNotification(entry: NotificationEntry?): Boolean =
+        if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) false
+        else
+            entry != null && notificationListRepository.topOngoingNotificationKey.value == entry.key
+
     /** Set the entry that is identified as the top unseen notification. */
     fun setTopUnseenNotification(entry: NotificationEntry?) {
         if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/IconManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/IconManager.kt
index 3df9374..331d3cc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/IconManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/IconManager.kt
@@ -20,8 +20,6 @@
 import android.app.Notification.MessagingStyle
 import android.app.Person
 import android.content.pm.LauncherApps
-import android.graphics.drawable.AdaptiveIconDrawable
-import android.graphics.drawable.Drawable
 import android.graphics.drawable.Icon
 import android.os.Build
 import android.os.Bundle
@@ -226,28 +224,22 @@
         }
 
         val n = entry.sbn.notification
-        var usingMonochromeAppIcon = false
-        val icon: Icon?
-        if (showPeopleAvatar) {
-            icon = createPeopleAvatar(entry)
-        } else if (android.app.Flags.notificationsUseMonochromeAppIcon()) {
-            if (n.shouldUseAppIcon()) {
-                icon =
-                    getMonochromeAppIcon(entry)?.also { usingMonochromeAppIcon = true }
-                        ?: n.smallIcon
+        val (icon: Icon?, type: StatusBarIcon.Type) =
+            if (showPeopleAvatar) {
+                createPeopleAvatar(entry) to StatusBarIcon.Type.PeopleAvatar
+            } else if (
+                android.app.Flags.notificationsUseMonochromeAppIcon() && n.shouldUseAppIcon()
+            ) {
+                n.smallIcon to StatusBarIcon.Type.MaybeMonochromeAppIcon
             } else {
-                icon = n.smallIcon
+                n.smallIcon to StatusBarIcon.Type.NotifSmallIcon
             }
-        } else {
-            icon = n.smallIcon
-        }
-
         if (icon == null) {
             throw InflationException("No icon in notification from ${entry.sbn.packageName}")
         }
 
-        val sbi = icon.toStatusBarIcon(entry)
-        cacheIconDescriptor(entry, sbi, showPeopleAvatar, usingMonochromeAppIcon)
+        val sbi = icon.toStatusBarIcon(entry, type)
+        cacheIconDescriptor(entry, sbi)
         return sbi
     }
 
@@ -269,29 +261,24 @@
         }
     }
 
-    private fun cacheIconDescriptor(
-        entry: NotificationEntry,
-        descriptor: StatusBarIcon,
-        showPeopleAvatar: Boolean,
-        usingMonochromeAppIcon: Boolean
-    ) {
-        if (android.app.Flags.notificationsUseAppIcon() ||
-            android.app.Flags.notificationsUseMonochromeAppIcon()
+    private fun cacheIconDescriptor(entry: NotificationEntry, descriptor: StatusBarIcon) {
+        if (
+            android.app.Flags.notificationsUseAppIcon() ||
+                android.app.Flags.notificationsUseMonochromeAppIcon()
         ) {
             // If either of the new icon flags is enabled, we cache the icon all the time.
-            if (showPeopleAvatar) {
-                entry.icons.peopleAvatarDescriptor = descriptor
-            } else if (usingMonochromeAppIcon) {
+            when (descriptor.type) {
+                StatusBarIcon.Type.PeopleAvatar -> entry.icons.peopleAvatarDescriptor = descriptor
                 // When notificationsUseMonochromeAppIcon is enabled, we use the appIconDescriptor.
-                entry.icons.appIconDescriptor = descriptor
-            } else {
+                StatusBarIcon.Type.MaybeMonochromeAppIcon ->
+                    entry.icons.appIconDescriptor = descriptor
                 // When notificationsUseAppIcon is enabled, the app icon overrides the small icon.
                 // But either way, it's a good idea to cache the descriptor.
-                entry.icons.smallIconDescriptor = descriptor
+                else -> entry.icons.smallIconDescriptor = descriptor
             }
         } else if (isImportantConversation(entry)) {
             // Old approach: cache only if important conversation.
-            if (showPeopleAvatar) {
+            if (descriptor.type == StatusBarIcon.Type.PeopleAvatar) {
                 entry.icons.peopleAvatarDescriptor = descriptor
             } else {
                 entry.icons.smallIconDescriptor = descriptor
@@ -312,7 +299,10 @@
         }
     }
 
-    private fun Icon.toStatusBarIcon(entry: NotificationEntry): StatusBarIcon {
+    private fun Icon.toStatusBarIcon(
+        entry: NotificationEntry,
+        type: StatusBarIcon.Type
+    ): StatusBarIcon {
         val n = entry.sbn.notification
         return StatusBarIcon(
             entry.sbn.user,
@@ -320,33 +310,11 @@
             /* icon = */ this,
             n.iconLevel,
             n.number,
-            iconBuilder.getIconContentDescription(n)
+            iconBuilder.getIconContentDescription(n),
+            type
         )
     }
 
-    // TODO(b/335211019): Should we merge this with the method in GroupHelper?
-    private fun getMonochromeAppIcon(entry: NotificationEntry): Icon? {
-        // TODO(b/335211019): This should be done in the background.
-        var monochromeIcon: Icon? = null
-        try {
-            val appIcon: Drawable = iconBuilder.getAppIcon(entry.sbn.notification)
-            if (appIcon is AdaptiveIconDrawable) {
-                if (appIcon.monochrome != null) {
-                    monochromeIcon =
-                        Icon.createWithResourceAdaptiveDrawable(
-                            /* resPackage = */ entry.sbn.packageName,
-                            /* resId = */ appIcon.sourceDrawableResId,
-                            /* useMonochrome = */ true,
-                            /* inset = */ -3.0f * AdaptiveIconDrawable.getExtraInsetFraction()
-                        )
-                }
-            }
-        } catch (e: Exception) {
-            Log.e(TAG, "Failed to getAppIcon() in getMonochromeAppIcon()", e)
-        }
-        return monochromeIcon
-    }
-
     private suspend fun getLauncherShortcutIconForPeopleAvatar(entry: NotificationEntry) =
         withContext(bgCoroutineContext) {
             var icon: Icon? = null
@@ -365,7 +333,8 @@
             // Once we have the icon, updating it should happen on the main thread.
             if (icon != null) {
                 withContext(mainCoroutineContext) {
-                    val iconDescriptor = icon.toStatusBarIcon(entry)
+                    val iconDescriptor =
+                        icon.toStatusBarIcon(entry, StatusBarIcon.Type.PeopleAvatar)
 
                     // Cache the value
                     entry.icons.peopleAvatarDescriptor = iconDescriptor
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index 6ba26d9..af5117e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -56,6 +56,7 @@
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation;
 import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation;
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
 import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineConversationViewBinder;
 import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder;
 import com.android.systemui.statusbar.notification.row.ui.viewmodel.SingleLineViewModel;
@@ -105,6 +106,7 @@
             NotifLayoutInflaterFactory.Provider notifLayoutInflaterFactoryProvider,
             HeadsUpStyleProvider headsUpStyleProvider,
             NotificationRowContentBinderLogger logger) {
+        NotificationRowContentBinderRefactor.assertInLegacyMode();
         mRemoteViewCache = remoteViewCache;
         mRemoteInputManager = remoteInputManager;
         mConversationProcessor = conversationProcessor;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
index c1302a0..fe0ee52 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
@@ -147,11 +147,6 @@
          * Use increased height when binding heads up views.
          */
         public boolean usesIncreasedHeadsUpHeight;
-
-        /**
-         * Is group summary notification
-         */
-        public boolean mIsGroupSummary;
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
new file mode 100644
index 0000000..e704140
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
@@ -0,0 +1,1569 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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
+ */
+package com.android.systemui.statusbar.notification.row
+
+import android.annotation.SuppressLint
+import android.app.Notification
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
+import android.content.res.Resources
+import android.os.AsyncTask
+import android.os.Build
+import android.os.CancellationSignal
+import android.os.Trace
+import android.os.UserHandle
+import android.service.notification.StatusBarNotification
+import android.util.Log
+import android.view.NotificationHeaderView
+import android.view.View
+import android.view.ViewGroup
+import android.widget.RemoteViews
+import android.widget.RemoteViews.InteractionHandler
+import android.widget.RemoteViews.OnViewAppliedListener
+import com.android.app.tracing.TraceUtils
+import com.android.internal.annotations.VisibleForTesting
+import com.android.internal.widget.ImageMessageConsumer
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.NotifInflation
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.InflationTask
+import com.android.systemui.statusbar.NotificationRemoteInputManager
+import com.android.systemui.statusbar.notification.ConversationNotificationProcessor
+import com.android.systemui.statusbar.notification.InflationException
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_EXPANDED
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_PUBLIC
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_SINGLE_LINE
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_GROUP_SUMMARY_HEADER
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag
+import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation
+import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation
+import com.android.systemui.statusbar.notification.row.shared.HeadsUpStatusBarModel
+import com.android.systemui.statusbar.notification.row.shared.NewRemoteViews
+import com.android.systemui.statusbar.notification.row.shared.NotificationContentModel
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor
+import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineConversationViewBinder
+import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder
+import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper
+import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainer
+import com.android.systemui.statusbar.policy.InflatedSmartReplyState
+import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder
+import com.android.systemui.statusbar.policy.SmartReplyStateInflater
+import com.android.systemui.util.Assert
+import java.util.concurrent.Executor
+import java.util.function.Consumer
+import javax.inject.Inject
+
+/**
+ * [NotificationRowContentBinderImpl] binds content to a [ExpandableNotificationRow] by
+ * asynchronously building the content's [RemoteViews] and applying it to the row.
+ */
+@SysUISingleton
+@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+class NotificationRowContentBinderImpl
+@Inject
+constructor(
+    private val remoteViewCache: NotifRemoteViewCache,
+    private val remoteInputManager: NotificationRemoteInputManager,
+    private val conversationProcessor: ConversationNotificationProcessor,
+    @NotifInflation private val inflationExecutor: Executor,
+    private val smartReplyStateInflater: SmartReplyStateInflater,
+    private val notifLayoutInflaterFactoryProvider: NotifLayoutInflaterFactory.Provider,
+    private val headsUpStyleProvider: HeadsUpStyleProvider,
+    private val logger: NotificationRowContentBinderLogger
+) : NotificationRowContentBinder {
+
+    init {
+        /* check if */ NotificationRowContentBinderRefactor.isUnexpectedlyInLegacyMode()
+    }
+
+    private var inflateSynchronously = false
+
+    override fun bindContent(
+        entry: NotificationEntry,
+        row: ExpandableNotificationRow,
+        @InflationFlag contentToBind: Int,
+        bindParams: BindParams,
+        forceInflate: Boolean,
+        callback: InflationCallback?
+    ) {
+        if (row.isRemoved) {
+            // We don't want to reinflate anything for removed notifications. Otherwise views might
+            // be readded to the stack, leading to leaks. This may happen with low-priority groups
+            // where the removal of already removed children can lead to a reinflation.
+            logger.logNotBindingRowWasRemoved(entry)
+            return
+        }
+        logger.logBinding(entry, contentToBind)
+        val sbn: StatusBarNotification = entry.sbn
+
+        // To check if the notification has inline image and preload inline image if necessary.
+        row.imageResolver.preloadImages(sbn.notification)
+        if (forceInflate) {
+            remoteViewCache.clearCache(entry)
+        }
+
+        // Cancel any pending frees on any view we're trying to bind since we should be bound after.
+        cancelContentViewFrees(row, contentToBind)
+        val task =
+            AsyncInflationTask(
+                inflationExecutor,
+                inflateSynchronously,
+                /* reInflateFlags = */ contentToBind,
+                remoteViewCache,
+                entry,
+                conversationProcessor,
+                row,
+                bindParams.isMinimized,
+                bindParams.usesIncreasedHeight,
+                bindParams.usesIncreasedHeadsUpHeight,
+                callback,
+                remoteInputManager.remoteViewsOnClickHandler,
+                /* isMediaFlagEnabled = */ smartReplyStateInflater,
+                notifLayoutInflaterFactoryProvider,
+                headsUpStyleProvider,
+                logger
+            )
+        if (inflateSynchronously) {
+            task.onPostExecute(task.doInBackground())
+        } else {
+            task.executeOnExecutor(inflationExecutor)
+        }
+    }
+
+    @VisibleForTesting
+    fun inflateNotificationViews(
+        entry: NotificationEntry,
+        row: ExpandableNotificationRow,
+        bindParams: BindParams,
+        inflateSynchronously: Boolean,
+        @InflationFlag reInflateFlags: Int,
+        builder: Notification.Builder,
+        packageContext: Context,
+        smartRepliesInflater: SmartReplyStateInflater
+    ): InflationProgress {
+        val systemUIContext = row.context
+        val result =
+            beginInflationAsync(
+                reInflateFlags = reInflateFlags,
+                entry = entry,
+                builder = builder,
+                isMinimized = bindParams.isMinimized,
+                usesIncreasedHeight = bindParams.usesIncreasedHeight,
+                usesIncreasedHeadsUpHeight = bindParams.usesIncreasedHeadsUpHeight,
+                systemUIContext = systemUIContext,
+                packageContext = packageContext,
+                row = row,
+                notifLayoutInflaterFactoryProvider = notifLayoutInflaterFactoryProvider,
+                headsUpStyleProvider = headsUpStyleProvider,
+                conversationProcessor = conversationProcessor,
+                logger = logger,
+            )
+        inflateSmartReplyViews(
+            result,
+            reInflateFlags,
+            entry,
+            systemUIContext,
+            packageContext,
+            row.existingSmartReplyState,
+            smartRepliesInflater,
+            logger,
+        )
+        if (AsyncHybridViewInflation.isEnabled) {
+            result.inflatedSingleLineView =
+                result.contentModel.singleLineViewModel?.let { viewModel ->
+                    SingleLineViewInflater.inflateSingleLineViewHolder(
+                        viewModel.isConversation(),
+                        reInflateFlags,
+                        entry,
+                        systemUIContext,
+                        logger,
+                    )
+                }
+        }
+        apply(
+            inflationExecutor,
+            inflateSynchronously,
+            bindParams.isMinimized,
+            result,
+            reInflateFlags,
+            remoteViewCache,
+            entry,
+            row,
+            remoteInputManager.remoteViewsOnClickHandler,
+            /* callback= */ null,
+            logger
+        )
+        return result
+    }
+
+    override fun cancelBind(entry: NotificationEntry, row: ExpandableNotificationRow): Boolean {
+        val abortedTask: Boolean = entry.abortTask()
+        if (abortedTask) {
+            logger.logCancelBindAbortedTask(entry)
+        }
+        return abortedTask
+    }
+
+    @SuppressLint("WrongConstant")
+    override fun unbindContent(
+        entry: NotificationEntry,
+        row: ExpandableNotificationRow,
+        @InflationFlag contentToUnbind: Int
+    ) {
+        logger.logUnbinding(entry, contentToUnbind)
+        var curFlag = 1
+        var contentLeftToUnbind = contentToUnbind
+        while (contentLeftToUnbind != 0) {
+            if (contentLeftToUnbind and curFlag != 0) {
+                freeNotificationView(entry, row, curFlag)
+            }
+            contentLeftToUnbind = contentLeftToUnbind and curFlag.inv()
+            curFlag = curFlag shl 1
+        }
+    }
+
+    /**
+     * Frees the content view associated with the inflation flag as soon as the view is not showing.
+     *
+     * @param inflateFlag the flag corresponding to the content view which should be freed
+     */
+    private fun freeNotificationView(
+        entry: NotificationEntry,
+        row: ExpandableNotificationRow,
+        @InflationFlag inflateFlag: Int
+    ) {
+        when (inflateFlag) {
+            FLAG_CONTENT_VIEW_CONTRACTED ->
+                row.privateLayout.performWhenContentInactive(
+                    NotificationContentView.VISIBLE_TYPE_CONTRACTED
+                ) {
+                    row.privateLayout.setContractedChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_CONTRACTED)
+                }
+            FLAG_CONTENT_VIEW_EXPANDED ->
+                row.privateLayout.performWhenContentInactive(
+                    NotificationContentView.VISIBLE_TYPE_EXPANDED
+                ) {
+                    row.privateLayout.setExpandedChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_EXPANDED)
+                }
+            FLAG_CONTENT_VIEW_HEADS_UP ->
+                row.privateLayout.performWhenContentInactive(
+                    NotificationContentView.VISIBLE_TYPE_HEADSUP
+                ) {
+                    row.privateLayout.setHeadsUpChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_HEADS_UP)
+                    row.privateLayout.setHeadsUpInflatedSmartReplies(null)
+                }
+            FLAG_CONTENT_VIEW_PUBLIC ->
+                row.publicLayout.performWhenContentInactive(
+                    NotificationContentView.VISIBLE_TYPE_CONTRACTED
+                ) {
+                    row.publicLayout.setContractedChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_PUBLIC)
+                }
+            FLAG_CONTENT_VIEW_SINGLE_LINE -> {
+                if (AsyncHybridViewInflation.isEnabled) {
+                    row.privateLayout.performWhenContentInactive(
+                        NotificationContentView.VISIBLE_TYPE_SINGLELINE
+                    ) {
+                        row.privateLayout.setSingleLineView(null)
+                    }
+                }
+            }
+            else -> {}
+        }
+    }
+
+    /**
+     * Cancel any pending content view frees from [.freeNotificationView] for the provided content
+     * views.
+     *
+     * @param row top level notification row containing the content views
+     * @param contentViews content views to cancel pending frees on
+     */
+    private fun cancelContentViewFrees(
+        row: ExpandableNotificationRow,
+        @InflationFlag contentViews: Int
+    ) {
+        if (contentViews and FLAG_CONTENT_VIEW_CONTRACTED != 0) {
+            row.privateLayout.removeContentInactiveRunnable(
+                NotificationContentView.VISIBLE_TYPE_CONTRACTED
+            )
+        }
+        if (contentViews and FLAG_CONTENT_VIEW_EXPANDED != 0) {
+            row.privateLayout.removeContentInactiveRunnable(
+                NotificationContentView.VISIBLE_TYPE_EXPANDED
+            )
+        }
+        if (contentViews and FLAG_CONTENT_VIEW_HEADS_UP != 0) {
+            row.privateLayout.removeContentInactiveRunnable(
+                NotificationContentView.VISIBLE_TYPE_HEADSUP
+            )
+        }
+        if (contentViews and FLAG_CONTENT_VIEW_PUBLIC != 0) {
+            row.publicLayout.removeContentInactiveRunnable(
+                NotificationContentView.VISIBLE_TYPE_CONTRACTED
+            )
+        }
+        if (
+            AsyncHybridViewInflation.isEnabled &&
+                contentViews and FLAG_CONTENT_VIEW_SINGLE_LINE != 0
+        ) {
+            row.privateLayout.removeContentInactiveRunnable(
+                NotificationContentView.VISIBLE_TYPE_SINGLELINE
+            )
+        }
+    }
+
+    /**
+     * Sets whether to perform inflation on the same thread as the caller. This method should only
+     * be used in tests, not in production.
+     */
+    @VisibleForTesting
+    override fun setInflateSynchronously(inflateSynchronously: Boolean) {
+        this.inflateSynchronously = inflateSynchronously
+    }
+
+    class AsyncInflationTask(
+        private val inflationExecutor: Executor,
+        private val inflateSynchronously: Boolean,
+        @get:InflationFlag @get:VisibleForTesting @InflationFlag val reInflateFlags: Int,
+        private val remoteViewCache: NotifRemoteViewCache,
+        private val entry: NotificationEntry,
+        private val conversationProcessor: ConversationNotificationProcessor,
+        private val row: ExpandableNotificationRow,
+        private val isMinimized: Boolean,
+        private val usesIncreasedHeight: Boolean,
+        private val usesIncreasedHeadsUpHeight: Boolean,
+        private val callback: InflationCallback?,
+        private val remoteViewClickHandler: InteractionHandler?,
+        private val smartRepliesInflater: SmartReplyStateInflater,
+        private val notifLayoutInflaterFactoryProvider: NotifLayoutInflaterFactory.Provider,
+        private val headsUpStyleProvider: HeadsUpStyleProvider,
+        private val logger: NotificationRowContentBinderLogger
+    ) : AsyncTask<Void, Void, Result<InflationProgress>>(), InflationCallback, InflationTask {
+        private val context: Context
+            get() = row.context
+
+        private var cancellationSignal: CancellationSignal? = null
+
+        init {
+            entry.setInflationTask(this)
+        }
+
+        private fun updateApplicationInfo(sbn: StatusBarNotification) {
+            val packageName: String = sbn.packageName
+            val userId: Int = UserHandle.getUserId(sbn.uid)
+            val appInfo: ApplicationInfo
+            try {
+                // This method has an internal cache, so we don't need to add our own caching here.
+                appInfo =
+                    context.packageManager.getApplicationInfoAsUser(
+                        packageName,
+                        PackageManager.MATCH_UNINSTALLED_PACKAGES,
+                        userId
+                    )
+            } catch (e: PackageManager.NameNotFoundException) {
+                return
+            }
+            Notification.addFieldsFromContext(appInfo, sbn.notification)
+        }
+
+        override fun onPreExecute() {
+            Trace.beginAsyncSection(ASYNC_TASK_TRACE_METHOD, System.identityHashCode(this))
+        }
+
+        public override fun doInBackground(vararg params: Void): Result<InflationProgress> {
+            return TraceUtils.trace(
+                "NotificationContentInflater.AsyncInflationTask#doInBackground"
+            ) {
+                try {
+                    return@trace Result.success(doInBackgroundInternal())
+                } catch (e: Exception) {
+                    logger.logAsyncTaskException(entry, "inflating", e)
+                    return@trace Result.failure(e)
+                }
+            }
+        }
+
+        private fun doInBackgroundInternal(): InflationProgress {
+            val sbn: StatusBarNotification = entry.sbn
+            // Ensure the ApplicationInfo is updated before a builder is recovered.
+            updateApplicationInfo(sbn)
+            val recoveredBuilder = Notification.Builder.recoverBuilder(context, sbn.notification)
+            var packageContext: Context = sbn.getPackageContext(context)
+            if (recoveredBuilder.usesTemplate()) {
+                // For all of our templates, we want it to be RTL
+                packageContext = RtlEnabledContext(packageContext)
+            }
+            val inflationProgress =
+                beginInflationAsync(
+                    reInflateFlags = reInflateFlags,
+                    entry = entry,
+                    builder = recoveredBuilder,
+                    isMinimized = isMinimized,
+                    usesIncreasedHeight = usesIncreasedHeight,
+                    usesIncreasedHeadsUpHeight = usesIncreasedHeadsUpHeight,
+                    systemUIContext = context,
+                    packageContext = packageContext,
+                    row = row,
+                    notifLayoutInflaterFactoryProvider = notifLayoutInflaterFactoryProvider,
+                    headsUpStyleProvider = headsUpStyleProvider,
+                    conversationProcessor = conversationProcessor,
+                    logger = logger
+                )
+            logger.logAsyncTaskProgress(
+                entry,
+                "getting existing smart reply state (on wrong thread!)"
+            )
+            val previousSmartReplyState: InflatedSmartReplyState? = row.existingSmartReplyState
+            logger.logAsyncTaskProgress(entry, "inflating smart reply views")
+            inflateSmartReplyViews(
+                /* result = */ inflationProgress,
+                reInflateFlags,
+                entry,
+                context,
+                packageContext,
+                previousSmartReplyState,
+                smartRepliesInflater,
+                logger,
+            )
+            if (AsyncHybridViewInflation.isEnabled) {
+                logger.logAsyncTaskProgress(entry, "inflating single line view")
+                inflationProgress.inflatedSingleLineView =
+                    inflationProgress.contentModel.singleLineViewModel?.let {
+                        SingleLineViewInflater.inflateSingleLineViewHolder(
+                            it.isConversation(),
+                            reInflateFlags,
+                            entry,
+                            context,
+                            logger
+                        )
+                    }
+            }
+            logger.logAsyncTaskProgress(entry, "getting row image resolver (on wrong thread!)")
+            val imageResolver = row.imageResolver
+            // wait for image resolver to finish preloading
+            logger.logAsyncTaskProgress(entry, "waiting for preloaded images")
+            imageResolver.waitForPreloadedImages(IMG_PRELOAD_TIMEOUT_MS)
+            return inflationProgress
+        }
+
+        public override fun onPostExecute(result: Result<InflationProgress>) {
+            Trace.endAsyncSection(ASYNC_TASK_TRACE_METHOD, System.identityHashCode(this))
+            result
+                .onSuccess { progress ->
+                    // Logged in detail in apply.
+                    cancellationSignal =
+                        apply(
+                            inflationExecutor,
+                            inflateSynchronously,
+                            isMinimized,
+                            progress,
+                            reInflateFlags,
+                            remoteViewCache,
+                            entry,
+                            row,
+                            remoteViewClickHandler,
+                            this /* callback */,
+                            logger
+                        )
+                }
+                .onFailure { error -> handleError(error as Exception) }
+        }
+
+        override fun onCancelled(result: Result<InflationProgress>) {
+            Trace.endAsyncSection(ASYNC_TASK_TRACE_METHOD, System.identityHashCode(this))
+        }
+
+        private fun handleError(e: Exception) {
+            entry.onInflationTaskFinished()
+            val sbn: StatusBarNotification = entry.sbn
+            val ident: String = (sbn.packageName + "/0x" + Integer.toHexString(sbn.id))
+            Log.e(TAG, "couldn't inflate view for notification $ident", e)
+            callback?.handleInflationException(
+                row.entry,
+                InflationException("Couldn't inflate contentViews$e")
+            )
+
+            // Cancel any image loading tasks, not useful any more
+            row.imageResolver.cancelRunningTasks()
+        }
+
+        override fun abort() {
+            logger.logAsyncTaskProgress(entry, "cancelling inflate")
+            cancel(/* mayInterruptIfRunning= */ true)
+            if (cancellationSignal != null) {
+                logger.logAsyncTaskProgress(entry, "cancelling apply")
+                cancellationSignal!!.cancel()
+            }
+            logger.logAsyncTaskProgress(entry, "aborted")
+        }
+
+        override fun handleInflationException(entry: NotificationEntry, e: Exception) {
+            handleError(e)
+        }
+
+        override fun onAsyncInflationFinished(entry: NotificationEntry) {
+            this.entry.onInflationTaskFinished()
+            row.onNotificationUpdated()
+            callback?.onAsyncInflationFinished(this.entry)
+
+            // Notify the resolver that the inflation task has finished,
+            // try to purge unnecessary cached entries.
+            row.imageResolver.purgeCache()
+
+            // Cancel any image loading tasks that have not completed at this point
+            row.imageResolver.cancelRunningTasks()
+        }
+
+        class RtlEnabledContext(packageContext: Context) : ContextWrapper(packageContext) {
+            override fun getApplicationInfo(): ApplicationInfo {
+                val applicationInfo = ApplicationInfo(super.getApplicationInfo())
+                applicationInfo.flags = applicationInfo.flags or ApplicationInfo.FLAG_SUPPORTS_RTL
+                return applicationInfo
+            }
+        }
+
+        companion object {
+            private const val IMG_PRELOAD_TIMEOUT_MS = 1000L
+        }
+    }
+
+    @VisibleForTesting
+    class InflationProgress(
+        @VisibleForTesting val packageContext: Context,
+        val remoteViews: NewRemoteViews,
+        val contentModel: NotificationContentModel,
+    ) {
+
+        var inflatedContentView: View? = null
+        var inflatedHeadsUpView: View? = null
+        var inflatedExpandedView: View? = null
+        var inflatedPublicView: View? = null
+        var inflatedGroupHeaderView: NotificationHeaderView? = null
+        var inflatedMinimizedGroupHeaderView: NotificationHeaderView? = null
+        var inflatedSmartReplyState: InflatedSmartReplyState? = null
+        var expandedInflatedSmartReplies: InflatedSmartReplyViewHolder? = null
+        var headsUpInflatedSmartReplies: InflatedSmartReplyViewHolder? = null
+
+        // Inflated SingleLineView that lacks the UI State
+        var inflatedSingleLineView: HybridNotificationView? = null
+    }
+
+    @VisibleForTesting
+    abstract class ApplyCallback {
+        abstract fun setResultView(v: View)
+
+        abstract val remoteView: RemoteViews
+    }
+
+    companion object {
+        const val TAG = "NotifContentInflater"
+
+        private fun inflateSmartReplyViews(
+            result: InflationProgress,
+            @InflationFlag reInflateFlags: Int,
+            entry: NotificationEntry,
+            context: Context,
+            packageContext: Context,
+            previousSmartReplyState: InflatedSmartReplyState?,
+            inflater: SmartReplyStateInflater,
+            logger: NotificationRowContentBinderLogger
+        ) {
+            val inflateContracted =
+                (reInflateFlags and FLAG_CONTENT_VIEW_CONTRACTED != 0 &&
+                    result.remoteViews.contracted != null)
+            val inflateExpanded =
+                (reInflateFlags and FLAG_CONTENT_VIEW_EXPANDED != 0 &&
+                    result.remoteViews.expanded != null)
+            val inflateHeadsUp =
+                (reInflateFlags and FLAG_CONTENT_VIEW_HEADS_UP != 0 &&
+                    result.remoteViews.headsUp != null)
+            if (inflateContracted || inflateExpanded || inflateHeadsUp) {
+                logger.logAsyncTaskProgress(entry, "inflating contracted smart reply state")
+                result.inflatedSmartReplyState = inflater.inflateSmartReplyState(entry)
+            }
+            if (inflateExpanded) {
+                logger.logAsyncTaskProgress(entry, "inflating expanded smart reply state")
+                result.expandedInflatedSmartReplies =
+                    inflater.inflateSmartReplyViewHolder(
+                        context,
+                        packageContext,
+                        entry,
+                        previousSmartReplyState,
+                        result.inflatedSmartReplyState!!
+                    )
+            }
+            if (inflateHeadsUp) {
+                logger.logAsyncTaskProgress(entry, "inflating heads up smart reply state")
+                result.headsUpInflatedSmartReplies =
+                    inflater.inflateSmartReplyViewHolder(
+                        context,
+                        packageContext,
+                        entry,
+                        previousSmartReplyState,
+                        result.inflatedSmartReplyState!!
+                    )
+            }
+        }
+
+        private fun beginInflationAsync(
+            @InflationFlag reInflateFlags: Int,
+            entry: NotificationEntry,
+            builder: Notification.Builder,
+            isMinimized: Boolean,
+            usesIncreasedHeight: Boolean,
+            usesIncreasedHeadsUpHeight: Boolean,
+            systemUIContext: Context,
+            packageContext: Context,
+            row: ExpandableNotificationRow,
+            notifLayoutInflaterFactoryProvider: NotifLayoutInflaterFactory.Provider,
+            headsUpStyleProvider: HeadsUpStyleProvider,
+            conversationProcessor: ConversationNotificationProcessor,
+            logger: NotificationRowContentBinderLogger
+        ): InflationProgress {
+            // process conversations and extract the messaging style
+            val messagingStyle =
+                if (entry.ranking.isConversation) {
+                    conversationProcessor.processNotification(entry, builder, logger)
+                } else null
+
+            val remoteViews =
+                createRemoteViews(
+                    reInflateFlags = reInflateFlags,
+                    builder = builder,
+                    isMinimized = isMinimized,
+                    usesIncreasedHeight = usesIncreasedHeight,
+                    usesIncreasedHeadsUpHeight = usesIncreasedHeadsUpHeight,
+                    row = row,
+                    notifLayoutInflaterFactoryProvider = notifLayoutInflaterFactoryProvider,
+                    headsUpStyleProvider = headsUpStyleProvider,
+                    logger = logger,
+                )
+
+            val singleLineViewModel =
+                if (
+                    AsyncHybridViewInflation.isEnabled &&
+                        reInflateFlags and FLAG_CONTENT_VIEW_SINGLE_LINE != 0
+                ) {
+                    logger.logAsyncTaskProgress(entry, "inflating single line view model")
+                    SingleLineViewInflater.inflateSingleLineViewModel(
+                        notification = entry.sbn.notification,
+                        messagingStyle = messagingStyle,
+                        builder = builder,
+                        systemUiContext = systemUIContext,
+                    )
+                } else null
+
+            val headsUpStatusBarModel =
+                HeadsUpStatusBarModel(
+                    privateText = builder.getHeadsUpStatusBarText(/* publicMode= */ false),
+                    publicText = builder.getHeadsUpStatusBarText(/* publicMode= */ true),
+                )
+
+            val contentModel =
+                NotificationContentModel(
+                    headsUpStatusBarModel = headsUpStatusBarModel,
+                    singleLineViewModel = singleLineViewModel,
+                )
+
+            return InflationProgress(
+                packageContext = packageContext,
+                remoteViews = remoteViews,
+                contentModel = contentModel,
+            )
+        }
+
+        private fun createRemoteViews(
+            @InflationFlag reInflateFlags: Int,
+            builder: Notification.Builder,
+            isMinimized: Boolean,
+            usesIncreasedHeight: Boolean,
+            usesIncreasedHeadsUpHeight: Boolean,
+            row: ExpandableNotificationRow,
+            notifLayoutInflaterFactoryProvider: NotifLayoutInflaterFactory.Provider,
+            headsUpStyleProvider: HeadsUpStyleProvider,
+            logger: NotificationRowContentBinderLogger
+        ): NewRemoteViews {
+            return TraceUtils.trace("NotificationContentInflater.createRemoteViews") {
+                val entryForLogging: NotificationEntry = row.entry
+                val contracted =
+                    if (reInflateFlags and FLAG_CONTENT_VIEW_CONTRACTED != 0) {
+                        logger.logAsyncTaskProgress(
+                            entryForLogging,
+                            "creating contracted remote view"
+                        )
+                        createContentView(builder, isMinimized, usesIncreasedHeight)
+                    } else null
+                val expanded =
+                    if (reInflateFlags and FLAG_CONTENT_VIEW_EXPANDED != 0) {
+                        logger.logAsyncTaskProgress(
+                            entryForLogging,
+                            "creating expanded remote view"
+                        )
+                        createExpandedView(builder, isMinimized)
+                    } else null
+                val headsUp =
+                    if (reInflateFlags and FLAG_CONTENT_VIEW_HEADS_UP != 0) {
+                        logger.logAsyncTaskProgress(
+                            entryForLogging,
+                            "creating heads up remote view"
+                        )
+                        val isHeadsUpCompact = headsUpStyleProvider.shouldApplyCompactStyle()
+                        if (isHeadsUpCompact) {
+                            builder.createCompactHeadsUpContentView()
+                        } else {
+                            builder.createHeadsUpContentView(usesIncreasedHeadsUpHeight)
+                        }
+                    } else null
+                val public =
+                    if (reInflateFlags and FLAG_CONTENT_VIEW_PUBLIC != 0) {
+                        logger.logAsyncTaskProgress(entryForLogging, "creating public remote view")
+                        builder.makePublicContentView(isMinimized)
+                    } else null
+                val normalGroupHeader =
+                    if (
+                        AsyncGroupHeaderViewInflation.isEnabled &&
+                            reInflateFlags and FLAG_GROUP_SUMMARY_HEADER != 0
+                    ) {
+                        logger.logAsyncTaskProgress(
+                            entryForLogging,
+                            "creating group summary remote view"
+                        )
+                        builder.makeNotificationGroupHeader()
+                    } else null
+                val minimizedGroupHeader =
+                    if (
+                        AsyncGroupHeaderViewInflation.isEnabled &&
+                            reInflateFlags and FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER != 0
+                    ) {
+                        logger.logAsyncTaskProgress(
+                            entryForLogging,
+                            "creating low-priority group summary remote view"
+                        )
+                        builder.makeLowPriorityContentView(true /* useRegularSubtext */)
+                    } else null
+                NewRemoteViews(
+                        contracted = contracted,
+                        headsUp = headsUp,
+                        expanded = expanded,
+                        public = public,
+                        normalGroupHeader = normalGroupHeader,
+                        minimizedGroupHeader = minimizedGroupHeader
+                    )
+                    .withLayoutInflaterFactory(row, notifLayoutInflaterFactoryProvider)
+            }
+        }
+
+        private fun NewRemoteViews.withLayoutInflaterFactory(
+            row: ExpandableNotificationRow,
+            provider: NotifLayoutInflaterFactory.Provider
+        ): NewRemoteViews {
+            contracted?.let {
+                it.layoutInflaterFactory = provider.provide(row, FLAG_CONTENT_VIEW_CONTRACTED)
+            }
+            expanded?.let {
+                it.layoutInflaterFactory = provider.provide(row, FLAG_CONTENT_VIEW_EXPANDED)
+            }
+            headsUp?.let {
+                it.layoutInflaterFactory = provider.provide(row, FLAG_CONTENT_VIEW_HEADS_UP)
+            }
+            public?.let {
+                it.layoutInflaterFactory = provider.provide(row, FLAG_CONTENT_VIEW_PUBLIC)
+            }
+            return this
+        }
+
+        private fun apply(
+            inflationExecutor: Executor,
+            inflateSynchronously: Boolean,
+            isMinimized: Boolean,
+            result: InflationProgress,
+            @InflationFlag reInflateFlags: Int,
+            remoteViewCache: NotifRemoteViewCache,
+            entry: NotificationEntry,
+            row: ExpandableNotificationRow,
+            remoteViewClickHandler: InteractionHandler?,
+            callback: InflationCallback?,
+            logger: NotificationRowContentBinderLogger
+        ): CancellationSignal {
+            Trace.beginAsyncSection(APPLY_TRACE_METHOD, System.identityHashCode(row))
+            val privateLayout = row.privateLayout
+            val publicLayout = row.publicLayout
+            val runningInflations = HashMap<Int, CancellationSignal>()
+            var flag = FLAG_CONTENT_VIEW_CONTRACTED
+            if (reInflateFlags and flag != 0) {
+                val isNewView =
+                    !canReapplyRemoteView(
+                        newView = result.remoteViews.contracted,
+                        oldView = remoteViewCache.getCachedView(entry, FLAG_CONTENT_VIEW_CONTRACTED)
+                    )
+                val applyCallback: ApplyCallback =
+                    object : ApplyCallback() {
+                        override fun setResultView(v: View) {
+                            logger.logAsyncTaskProgress(entry, "contracted view applied")
+                            result.inflatedContentView = v
+                        }
+
+                        override val remoteView: RemoteViews
+                            get() = result.remoteViews.contracted!!
+                    }
+                logger.logAsyncTaskProgress(entry, "applying contracted view")
+                applyRemoteView(
+                    inflationExecutor = inflationExecutor,
+                    inflateSynchronously = inflateSynchronously,
+                    isMinimized = isMinimized,
+                    result = result,
+                    reInflateFlags = reInflateFlags,
+                    inflationId = flag,
+                    remoteViewCache = remoteViewCache,
+                    entry = entry,
+                    row = row,
+                    isNewView = isNewView,
+                    remoteViewClickHandler = remoteViewClickHandler,
+                    callback = callback,
+                    parentLayout = privateLayout,
+                    existingView = privateLayout.contractedChild,
+                    existingWrapper =
+                        privateLayout.getVisibleWrapper(
+                            NotificationContentView.VISIBLE_TYPE_CONTRACTED
+                        ),
+                    runningInflations = runningInflations,
+                    applyCallback = applyCallback,
+                    logger = logger
+                )
+            }
+            flag = FLAG_CONTENT_VIEW_EXPANDED
+            if (reInflateFlags and flag != 0) {
+                if (result.remoteViews.expanded != null) {
+                    val isNewView =
+                        !canReapplyRemoteView(
+                            newView = result.remoteViews.expanded,
+                            oldView =
+                                remoteViewCache.getCachedView(entry, FLAG_CONTENT_VIEW_EXPANDED)
+                        )
+                    val applyCallback: ApplyCallback =
+                        object : ApplyCallback() {
+                            override fun setResultView(v: View) {
+                                logger.logAsyncTaskProgress(entry, "expanded view applied")
+                                result.inflatedExpandedView = v
+                            }
+
+                            override val remoteView: RemoteViews
+                                get() = result.remoteViews.expanded
+                        }
+                    logger.logAsyncTaskProgress(entry, "applying expanded view")
+                    applyRemoteView(
+                        inflationExecutor = inflationExecutor,
+                        inflateSynchronously = inflateSynchronously,
+                        isMinimized = isMinimized,
+                        result = result,
+                        reInflateFlags = reInflateFlags,
+                        inflationId = flag,
+                        remoteViewCache = remoteViewCache,
+                        entry = entry,
+                        row = row,
+                        isNewView = isNewView,
+                        remoteViewClickHandler = remoteViewClickHandler,
+                        callback = callback,
+                        parentLayout = privateLayout,
+                        existingView = privateLayout.expandedChild,
+                        existingWrapper =
+                            privateLayout.getVisibleWrapper(
+                                NotificationContentView.VISIBLE_TYPE_EXPANDED
+                            ),
+                        runningInflations = runningInflations,
+                        applyCallback = applyCallback,
+                        logger = logger
+                    )
+                }
+            }
+            flag = FLAG_CONTENT_VIEW_HEADS_UP
+            if (reInflateFlags and flag != 0) {
+                if (result.remoteViews.headsUp != null) {
+                    val isNewView =
+                        !canReapplyRemoteView(
+                            newView = result.remoteViews.headsUp,
+                            oldView =
+                                remoteViewCache.getCachedView(entry, FLAG_CONTENT_VIEW_HEADS_UP)
+                        )
+                    val applyCallback: ApplyCallback =
+                        object : ApplyCallback() {
+                            override fun setResultView(v: View) {
+                                logger.logAsyncTaskProgress(entry, "heads up view applied")
+                                result.inflatedHeadsUpView = v
+                            }
+
+                            override val remoteView: RemoteViews
+                                get() = result.remoteViews.headsUp
+                        }
+                    logger.logAsyncTaskProgress(entry, "applying heads up view")
+                    applyRemoteView(
+                        inflationExecutor = inflationExecutor,
+                        inflateSynchronously = inflateSynchronously,
+                        isMinimized = isMinimized,
+                        result = result,
+                        reInflateFlags = reInflateFlags,
+                        inflationId = flag,
+                        remoteViewCache = remoteViewCache,
+                        entry = entry,
+                        row = row,
+                        isNewView = isNewView,
+                        remoteViewClickHandler = remoteViewClickHandler,
+                        callback = callback,
+                        parentLayout = privateLayout,
+                        existingView = privateLayout.headsUpChild,
+                        existingWrapper =
+                            privateLayout.getVisibleWrapper(
+                                NotificationContentView.VISIBLE_TYPE_HEADSUP
+                            ),
+                        runningInflations = runningInflations,
+                        applyCallback = applyCallback,
+                        logger = logger
+                    )
+                }
+            }
+            flag = FLAG_CONTENT_VIEW_PUBLIC
+            if (reInflateFlags and flag != 0) {
+                val isNewView =
+                    !canReapplyRemoteView(
+                        newView = result.remoteViews.public,
+                        oldView = remoteViewCache.getCachedView(entry, FLAG_CONTENT_VIEW_PUBLIC)
+                    )
+                val applyCallback: ApplyCallback =
+                    object : ApplyCallback() {
+                        override fun setResultView(v: View) {
+                            logger.logAsyncTaskProgress(entry, "public view applied")
+                            result.inflatedPublicView = v
+                        }
+
+                        override val remoteView: RemoteViews
+                            get() = result.remoteViews.public!!
+                    }
+                logger.logAsyncTaskProgress(entry, "applying public view")
+                applyRemoteView(
+                    inflationExecutor = inflationExecutor,
+                    inflateSynchronously = inflateSynchronously,
+                    isMinimized = isMinimized,
+                    result = result,
+                    reInflateFlags = reInflateFlags,
+                    inflationId = flag,
+                    remoteViewCache = remoteViewCache,
+                    entry = entry,
+                    row = row,
+                    isNewView = isNewView,
+                    remoteViewClickHandler = remoteViewClickHandler,
+                    callback = callback,
+                    parentLayout = publicLayout,
+                    existingView = publicLayout.contractedChild,
+                    existingWrapper =
+                        publicLayout.getVisibleWrapper(
+                            NotificationContentView.VISIBLE_TYPE_CONTRACTED
+                        ),
+                    runningInflations = runningInflations,
+                    applyCallback = applyCallback,
+                    logger = logger
+                )
+            }
+            if (AsyncGroupHeaderViewInflation.isEnabled) {
+                val childrenContainer: NotificationChildrenContainer =
+                    row.getChildrenContainerNonNull()
+                if (reInflateFlags and FLAG_GROUP_SUMMARY_HEADER != 0) {
+                    val isNewView =
+                        !canReapplyRemoteView(
+                            newView = result.remoteViews.normalGroupHeader,
+                            oldView =
+                                remoteViewCache.getCachedView(entry, FLAG_GROUP_SUMMARY_HEADER)
+                        )
+                    val applyCallback: ApplyCallback =
+                        object : ApplyCallback() {
+                            override fun setResultView(v: View) {
+                                logger.logAsyncTaskProgress(entry, "group header view applied")
+                                result.inflatedGroupHeaderView = v as NotificationHeaderView?
+                            }
+
+                            override val remoteView: RemoteViews
+                                get() = result.remoteViews.normalGroupHeader!!
+                        }
+                    logger.logAsyncTaskProgress(entry, "applying group header view")
+                    applyRemoteView(
+                        inflationExecutor = inflationExecutor,
+                        inflateSynchronously = inflateSynchronously,
+                        isMinimized = isMinimized,
+                        result = result,
+                        reInflateFlags = reInflateFlags,
+                        inflationId = FLAG_GROUP_SUMMARY_HEADER,
+                        remoteViewCache = remoteViewCache,
+                        entry = entry,
+                        row = row,
+                        isNewView = isNewView,
+                        remoteViewClickHandler = remoteViewClickHandler,
+                        callback = callback,
+                        parentLayout = childrenContainer,
+                        existingView = childrenContainer.groupHeader,
+                        existingWrapper = childrenContainer.notificationHeaderWrapper,
+                        runningInflations = runningInflations,
+                        applyCallback = applyCallback,
+                        logger = logger
+                    )
+                }
+                if (reInflateFlags and FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER != 0) {
+                    val isNewView =
+                        !canReapplyRemoteView(
+                            newView = result.remoteViews.minimizedGroupHeader,
+                            oldView =
+                                remoteViewCache.getCachedView(
+                                    entry,
+                                    FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER
+                                )
+                        )
+                    val applyCallback: ApplyCallback =
+                        object : ApplyCallback() {
+                            override fun setResultView(v: View) {
+                                logger.logAsyncTaskProgress(
+                                    entry,
+                                    "low-priority group header view applied"
+                                )
+                                result.inflatedMinimizedGroupHeaderView =
+                                    v as NotificationHeaderView?
+                            }
+
+                            override val remoteView: RemoteViews
+                                get() = result.remoteViews.minimizedGroupHeader!!
+                        }
+                    logger.logAsyncTaskProgress(entry, "applying low priority group header view")
+                    applyRemoteView(
+                        inflationExecutor = inflationExecutor,
+                        inflateSynchronously = inflateSynchronously,
+                        isMinimized = isMinimized,
+                        result = result,
+                        reInflateFlags = reInflateFlags,
+                        inflationId = FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER,
+                        remoteViewCache = remoteViewCache,
+                        entry = entry,
+                        row = row,
+                        isNewView = isNewView,
+                        remoteViewClickHandler = remoteViewClickHandler,
+                        callback = callback,
+                        parentLayout = childrenContainer,
+                        existingView = childrenContainer.minimizedNotificationHeader,
+                        existingWrapper = childrenContainer.minimizedGroupHeaderWrapper,
+                        runningInflations = runningInflations,
+                        applyCallback = applyCallback,
+                        logger = logger
+                    )
+                }
+            }
+
+            // Let's try to finish, maybe nobody is even inflating anything
+            finishIfDone(
+                result,
+                isMinimized,
+                reInflateFlags,
+                remoteViewCache,
+                runningInflations,
+                callback,
+                entry,
+                row,
+                logger
+            )
+            val cancellationSignal = CancellationSignal()
+            cancellationSignal.setOnCancelListener {
+                logger.logAsyncTaskProgress(entry, "apply cancelled")
+                Trace.endAsyncSection(APPLY_TRACE_METHOD, System.identityHashCode(row))
+                runningInflations.values.forEach(
+                    Consumer { obj: CancellationSignal -> obj.cancel() }
+                )
+            }
+            return cancellationSignal
+        }
+
+        @VisibleForTesting
+        fun applyRemoteView(
+            inflationExecutor: Executor?,
+            inflateSynchronously: Boolean,
+            isMinimized: Boolean,
+            result: InflationProgress,
+            @InflationFlag reInflateFlags: Int,
+            @InflationFlag inflationId: Int,
+            remoteViewCache: NotifRemoteViewCache,
+            entry: NotificationEntry,
+            row: ExpandableNotificationRow,
+            isNewView: Boolean,
+            remoteViewClickHandler: InteractionHandler?,
+            callback: InflationCallback?,
+            parentLayout: ViewGroup?,
+            existingView: View?,
+            existingWrapper: NotificationViewWrapper?,
+            runningInflations: HashMap<Int, CancellationSignal>,
+            applyCallback: ApplyCallback,
+            logger: NotificationRowContentBinderLogger
+        ) {
+            val newContentView: RemoteViews = applyCallback.remoteView
+            if (inflateSynchronously) {
+                try {
+                    if (isNewView) {
+                        val v: View =
+                            newContentView.apply(
+                                result.packageContext,
+                                parentLayout,
+                                remoteViewClickHandler
+                            )
+                        validateView(v, entry, row.resources)
+                        applyCallback.setResultView(v)
+                    } else {
+                        requireNotNull(existingView)
+                        requireNotNull(existingWrapper)
+                        newContentView.reapply(
+                            result.packageContext,
+                            existingView,
+                            remoteViewClickHandler
+                        )
+                        validateView(existingView, entry, row.resources)
+                        existingWrapper.onReinflated()
+                    }
+                } catch (e: Exception) {
+                    handleInflationError(
+                        runningInflations,
+                        e,
+                        row.entry,
+                        callback,
+                        logger,
+                        "applying view synchronously"
+                    )
+                    // Add a running inflation to make sure we don't trigger callbacks.
+                    // Safe to do because only happens in tests.
+                    runningInflations[inflationId] = CancellationSignal()
+                }
+                return
+            }
+            val listener: OnViewAppliedListener =
+                object : OnViewAppliedListener {
+                    override fun onViewInflated(v: View) {
+                        if (v is ImageMessageConsumer) {
+                            (v as ImageMessageConsumer).setImageResolver(row.imageResolver)
+                        }
+                    }
+
+                    override fun onViewApplied(v: View) {
+                        val invalidReason = isValidView(v, entry, row.resources)
+                        if (invalidReason != null) {
+                            handleInflationError(
+                                runningInflations,
+                                InflationException(invalidReason),
+                                row.entry,
+                                callback,
+                                logger,
+                                "applied invalid view"
+                            )
+                            runningInflations.remove(inflationId)
+                            return
+                        }
+                        if (isNewView) {
+                            applyCallback.setResultView(v)
+                        } else {
+                            existingWrapper?.onReinflated()
+                        }
+                        runningInflations.remove(inflationId)
+                        finishIfDone(
+                            result,
+                            isMinimized,
+                            reInflateFlags,
+                            remoteViewCache,
+                            runningInflations,
+                            callback,
+                            entry,
+                            row,
+                            logger
+                        )
+                    }
+
+                    override fun onError(e: Exception) {
+                        // Uh oh the async inflation failed. Due to some bugs (see b/38190555), this
+                        // could
+                        // actually also be a system issue, so let's try on the UI thread again to
+                        // be safe.
+                        try {
+                            val newView =
+                                if (isNewView) {
+                                    newContentView.apply(
+                                        result.packageContext,
+                                        parentLayout,
+                                        remoteViewClickHandler
+                                    )
+                                } else {
+                                    newContentView.reapply(
+                                        result.packageContext,
+                                        existingView,
+                                        remoteViewClickHandler
+                                    )
+                                    existingView!!
+                                }
+                            Log.wtf(
+                                TAG,
+                                "Async Inflation failed but normal inflation finished normally.",
+                                e
+                            )
+                            onViewApplied(newView)
+                        } catch (anotherException: Exception) {
+                            runningInflations.remove(inflationId)
+                            handleInflationError(
+                                runningInflations,
+                                e,
+                                row.entry,
+                                callback,
+                                logger,
+                                "applying view"
+                            )
+                        }
+                    }
+                }
+            val cancellationSignal: CancellationSignal =
+                if (isNewView) {
+                    newContentView.applyAsync(
+                        result.packageContext,
+                        parentLayout,
+                        inflationExecutor,
+                        listener,
+                        remoteViewClickHandler
+                    )
+                } else {
+                    newContentView.reapplyAsync(
+                        result.packageContext,
+                        existingView,
+                        inflationExecutor,
+                        listener,
+                        remoteViewClickHandler
+                    )
+                }
+            runningInflations[inflationId] = cancellationSignal
+        }
+
+        /**
+         * Checks if the given View is a valid notification View.
+         *
+         * @return null == valid, non-null == invalid, String represents reason for rejection.
+         */
+        @VisibleForTesting
+        fun isValidView(view: View, entry: NotificationEntry, resources: Resources): String? {
+            return if (!satisfiesMinHeightRequirement(view, entry, resources)) {
+                "inflated notification does not meet minimum height requirement"
+            } else null
+        }
+
+        private fun satisfiesMinHeightRequirement(
+            view: View,
+            entry: NotificationEntry,
+            resources: Resources
+        ): Boolean {
+            return if (!requiresHeightCheck(entry)) {
+                true
+            } else
+                TraceUtils.trace("NotificationContentInflater#satisfiesMinHeightRequirement") {
+                    val heightSpec =
+                        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
+                    val referenceWidth =
+                        resources.getDimensionPixelSize(
+                            R.dimen.notification_validation_reference_width
+                        )
+                    val widthSpec =
+                        View.MeasureSpec.makeMeasureSpec(referenceWidth, View.MeasureSpec.EXACTLY)
+                    view.measure(widthSpec, heightSpec)
+                    val minHeight =
+                        resources.getDimensionPixelSize(
+                            R.dimen.notification_validation_minimum_allowed_height
+                        )
+                    view.measuredHeight >= minHeight
+                }
+        }
+
+        /**
+         * Notifications with undecorated custom views need to satisfy a minimum height to avoid
+         * visual issues.
+         */
+        private fun requiresHeightCheck(entry: NotificationEntry): Boolean {
+            // Undecorated custom views are disallowed from S onwards
+            if (entry.targetSdk >= Build.VERSION_CODES.S) {
+                return false
+            }
+            // No need to check if the app isn't using any custom views
+            val notification: Notification = entry.sbn.notification
+            @Suppress("DEPRECATION")
+            return !(notification.contentView == null &&
+                notification.bigContentView == null &&
+                notification.headsUpContentView == null)
+        }
+
+        @Throws(InflationException::class)
+        private fun validateView(view: View, entry: NotificationEntry, resources: Resources) {
+            val invalidReason = isValidView(view, entry, resources)
+            if (invalidReason != null) {
+                throw InflationException(invalidReason)
+            }
+        }
+
+        private fun handleInflationError(
+            runningInflations: HashMap<Int, CancellationSignal>,
+            e: Exception,
+            notification: NotificationEntry,
+            callback: InflationCallback?,
+            logger: NotificationRowContentBinderLogger,
+            logContext: String
+        ) {
+            Assert.isMainThread()
+            logger.logAsyncTaskException(notification, logContext, e)
+            runningInflations.values.forEach(Consumer { obj: CancellationSignal -> obj.cancel() })
+            callback?.handleInflationException(notification, e)
+        }
+
+        /**
+         * Finish the inflation of the views
+         *
+         * @return true if the inflation was finished
+         */
+        private fun finishIfDone(
+            result: InflationProgress,
+            isMinimized: Boolean,
+            @InflationFlag reInflateFlags: Int,
+            remoteViewCache: NotifRemoteViewCache,
+            runningInflations: HashMap<Int, CancellationSignal>,
+            endListener: InflationCallback?,
+            entry: NotificationEntry,
+            row: ExpandableNotificationRow,
+            logger: NotificationRowContentBinderLogger
+        ): Boolean {
+            Assert.isMainThread()
+            if (runningInflations.isNotEmpty()) {
+                return false
+            }
+            val privateLayout = row.privateLayout
+            val publicLayout = row.publicLayout
+            logger.logAsyncTaskProgress(entry, "finishing")
+            if (reInflateFlags and FLAG_CONTENT_VIEW_CONTRACTED != 0) {
+                if (result.inflatedContentView != null) {
+                    // New view case
+                    privateLayout.setContractedChild(result.inflatedContentView)
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_CONTRACTED,
+                        result.remoteViews.contracted
+                    )
+                } else if (remoteViewCache.hasCachedView(entry, FLAG_CONTENT_VIEW_CONTRACTED)) {
+                    // Reinflation case. Only update if it's still cached (i.e. view has not been
+                    // freed while inflating).
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_CONTRACTED,
+                        result.remoteViews.contracted
+                    )
+                }
+            }
+            if (reInflateFlags and FLAG_CONTENT_VIEW_EXPANDED != 0) {
+                if (result.inflatedExpandedView != null) {
+                    privateLayout.setExpandedChild(result.inflatedExpandedView)
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_EXPANDED,
+                        result.remoteViews.expanded
+                    )
+                } else if (result.remoteViews.expanded == null) {
+                    privateLayout.setExpandedChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_EXPANDED)
+                } else if (remoteViewCache.hasCachedView(entry, FLAG_CONTENT_VIEW_EXPANDED)) {
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_EXPANDED,
+                        result.remoteViews.expanded
+                    )
+                }
+                if (result.remoteViews.expanded != null) {
+                    privateLayout.setExpandedInflatedSmartReplies(
+                        result.expandedInflatedSmartReplies
+                    )
+                } else {
+                    privateLayout.setExpandedInflatedSmartReplies(null)
+                }
+                row.setExpandable(result.remoteViews.expanded != null)
+            }
+            if (reInflateFlags and FLAG_CONTENT_VIEW_HEADS_UP != 0) {
+                if (result.inflatedHeadsUpView != null) {
+                    privateLayout.setHeadsUpChild(result.inflatedHeadsUpView)
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_HEADS_UP,
+                        result.remoteViews.headsUp
+                    )
+                } else if (result.remoteViews.headsUp == null) {
+                    privateLayout.setHeadsUpChild(null)
+                    remoteViewCache.removeCachedView(entry, FLAG_CONTENT_VIEW_HEADS_UP)
+                } else if (remoteViewCache.hasCachedView(entry, FLAG_CONTENT_VIEW_HEADS_UP)) {
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_HEADS_UP,
+                        result.remoteViews.headsUp
+                    )
+                }
+                if (result.remoteViews.headsUp != null) {
+                    privateLayout.setHeadsUpInflatedSmartReplies(result.headsUpInflatedSmartReplies)
+                } else {
+                    privateLayout.setHeadsUpInflatedSmartReplies(null)
+                }
+            }
+            if (
+                AsyncHybridViewInflation.isEnabled &&
+                    reInflateFlags and FLAG_CONTENT_VIEW_SINGLE_LINE != 0
+            ) {
+                val singleLineView = result.inflatedSingleLineView
+                val viewModel = result.contentModel.singleLineViewModel
+                if (singleLineView != null && viewModel != null) {
+                    if (viewModel.isConversation()) {
+                        SingleLineConversationViewBinder.bind(viewModel, singleLineView)
+                    } else {
+                        SingleLineViewBinder.bind(viewModel, singleLineView)
+                    }
+                    privateLayout.setSingleLineView(result.inflatedSingleLineView)
+                }
+            }
+            result.inflatedSmartReplyState?.let { privateLayout.setInflatedSmartReplyState(it) }
+            if (reInflateFlags and FLAG_CONTENT_VIEW_PUBLIC != 0) {
+                if (result.inflatedPublicView != null) {
+                    publicLayout.setContractedChild(result.inflatedPublicView)
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_PUBLIC,
+                        result.remoteViews.public
+                    )
+                } else if (remoteViewCache.hasCachedView(entry, FLAG_CONTENT_VIEW_PUBLIC)) {
+                    remoteViewCache.putCachedView(
+                        entry,
+                        FLAG_CONTENT_VIEW_PUBLIC,
+                        result.remoteViews.public
+                    )
+                }
+            }
+            if (AsyncGroupHeaderViewInflation.isEnabled) {
+                if (reInflateFlags and FLAG_GROUP_SUMMARY_HEADER != 0) {
+                    if (result.inflatedGroupHeaderView != null) {
+                        // We need to set if the row is minimized before setting the group header to
+                        // make sure the setting of header view works correctly
+                        row.setIsMinimized(isMinimized)
+                        row.setGroupHeader(/* headerView= */ result.inflatedGroupHeaderView)
+                        remoteViewCache.putCachedView(
+                            entry,
+                            FLAG_GROUP_SUMMARY_HEADER,
+                            result.remoteViews.normalGroupHeader
+                        )
+                    } else if (remoteViewCache.hasCachedView(entry, FLAG_GROUP_SUMMARY_HEADER)) {
+                        // Re-inflation case. Only update if it's still cached (i.e. view has not
+                        // been freed while inflating).
+                        remoteViewCache.putCachedView(
+                            entry,
+                            FLAG_GROUP_SUMMARY_HEADER,
+                            result.remoteViews.normalGroupHeader
+                        )
+                    }
+                }
+                if (reInflateFlags and FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER != 0) {
+                    if (result.inflatedMinimizedGroupHeaderView != null) {
+                        // We need to set if the row is minimized before setting the group header to
+                        // make sure the setting of header view works correctly
+                        row.setIsMinimized(isMinimized)
+                        row.setMinimizedGroupHeader(
+                            /* headerView= */ result.inflatedMinimizedGroupHeaderView
+                        )
+                        remoteViewCache.putCachedView(
+                            entry,
+                            FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER,
+                            result.remoteViews.minimizedGroupHeader
+                        )
+                    } else if (
+                        remoteViewCache.hasCachedView(entry, FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER)
+                    ) {
+                        // Re-inflation case. Only update if it's still cached (i.e. view has not
+                        // been freed while inflating).
+                        remoteViewCache.putCachedView(
+                            entry,
+                            FLAG_LOW_PRIORITY_GROUP_SUMMARY_HEADER,
+                            result.remoteViews.normalGroupHeader
+                        )
+                    }
+                }
+            }
+            entry.setContentModel(result.contentModel)
+            Trace.endAsyncSection(APPLY_TRACE_METHOD, System.identityHashCode(row))
+            endListener?.onAsyncInflationFinished(entry)
+            return true
+        }
+
+        private fun createExpandedView(
+            builder: Notification.Builder,
+            isMinimized: Boolean
+        ): RemoteViews? {
+            @Suppress("DEPRECATION")
+            val bigContentView: RemoteViews? = builder.createBigContentView()
+            if (bigContentView != null) {
+                return bigContentView
+            }
+            if (isMinimized) {
+                @Suppress("DEPRECATION") val contentView: RemoteViews = builder.createContentView()
+                Notification.Builder.makeHeaderExpanded(contentView)
+                return contentView
+            }
+            return null
+        }
+
+        private fun createContentView(
+            builder: Notification.Builder,
+            isMinimized: Boolean,
+            useLarge: Boolean
+        ): RemoteViews {
+            return if (isMinimized) {
+                builder.makeLowPriorityContentView(false /* useRegularSubtext */)
+            } else builder.createContentView(useLarge)
+        }
+
+        /**
+         * @param newView The new view that will be applied
+         * @param oldView The old view that was applied to the existing view before
+         * @return `true` if the RemoteViews are the same and the view can be reused to reapply.
+         */
+        @VisibleForTesting
+        fun canReapplyRemoteView(newView: RemoteViews?, oldView: RemoteViews?): Boolean {
+            return newView == null && oldView == null ||
+                newView != null &&
+                    oldView != null &&
+                    oldView.getPackage() != null &&
+                    newView.getPackage() != null &&
+                    newView.getPackage() == oldView.getPackage() &&
+                    newView.layoutId == oldView.layoutId &&
+                    !oldView.hasFlags(RemoteViews.FLAG_REAPPLY_DISALLOWED)
+        }
+
+        private const val ASYNC_TASK_TRACE_METHOD =
+            "NotificationRowContentBinderImpl.AsyncInflationTask"
+        private const val APPLY_TRACE_METHOD = "NotificationRowContentBinderImpl#apply"
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
index 17c2026..84f2f66 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
@@ -17,9 +17,13 @@
 package com.android.systemui.statusbar.notification.row;
 
 import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
 
 import dagger.Binds;
 import dagger.Module;
+import dagger.Provides;
+
+import javax.inject.Provider;
 
 /**
  * Dagger Module containing notification row and view inflation implementations.
@@ -30,10 +34,18 @@
     /**
      * Provides notification row content binder instance.
      */
-    @Binds
+    @Provides
     @SysUISingleton
-    public abstract NotificationRowContentBinder provideNotificationRowContentBinder(
-            NotificationContentInflater contentBinderImpl);
+    public static NotificationRowContentBinder provideNotificationRowContentBinder(
+            Provider<NotificationContentInflater> legacyImpl,
+            Provider<NotificationRowContentBinderImpl> refactoredImpl
+    ) {
+        if (NotificationRowContentBinderRefactor.isEnabled()) {
+            return refactoredImpl.get();
+        } else {
+            return legacyImpl.get();
+        }
+    }
 
     /**
      * Provides notification remote view cache instance.
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/HeadsUpStatusBarModel.kt
similarity index 78%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/HeadsUpStatusBarModel.kt
index bb3b654..e43ce76 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/HeadsUpStatusBarModel.kt
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.statusbar.notification.row.shared
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+class HeadsUpStatusBarModel(
+    val privateText: CharSequence,
+    val publicText: CharSequence,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NewRemoteViews.kt
similarity index 61%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NewRemoteViews.kt
index bb3b654..63bba86 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NewRemoteViews.kt
@@ -14,6 +14,15 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.statusbar.notification.row.shared
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+import android.widget.RemoteViews
+
+class NewRemoteViews(
+    val contracted: RemoteViews? = null,
+    val headsUp: RemoteViews? = null,
+    val expanded: RemoteViews? = null,
+    val public: RemoteViews? = null,
+    val normalGroupHeader: RemoteViews? = null,
+    val minimizedGroupHeader: RemoteViews? = null,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NotificationContentModel.kt
similarity index 66%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NotificationContentModel.kt
index bb3b654..b2421bc 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/NotificationContentModel.kt
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.statusbar.notification.row.shared
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+import com.android.systemui.statusbar.notification.row.ui.viewmodel.SingleLineViewModel
+
+data class NotificationContentModel(
+    val headsUpStatusBarModel: HeadsUpStatusBarModel,
+    val singleLineViewModel: SingleLineViewModel? = null,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationPriorityBucket.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationPriorityBucket.kt
index fc28a99..fabb696 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationPriorityBucket.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationPriorityBucket.kt
@@ -13,7 +13,9 @@
         [
             BUCKET_UNKNOWN,
             BUCKET_MEDIA_CONTROLS,
+            BUCKET_TOP_ONGOING,
             BUCKET_HEADS_UP,
+            BUCKET_TOP_UNSEEN,
             BUCKET_FOREGROUND_SERVICE,
             BUCKET_PRIORITY_PEOPLE,
             BUCKET_PEOPLE,
@@ -21,11 +23,28 @@
             BUCKET_SILENT
         ]
 )
-annotation class PriorityBucket
+annotation class PriorityBucket {
+    companion object {
+        fun getAllInOrder(): IntArray =
+            intArrayOf(
+                BUCKET_MEDIA_CONTROLS,
+                BUCKET_TOP_ONGOING,
+                BUCKET_HEADS_UP,
+                BUCKET_TOP_UNSEEN,
+                BUCKET_FOREGROUND_SERVICE,
+                BUCKET_PRIORITY_PEOPLE,
+                BUCKET_PEOPLE,
+                BUCKET_ALERTING,
+                BUCKET_SILENT,
+            )
+    }
+}
 
 const val BUCKET_UNKNOWN = 0
 const val BUCKET_MEDIA_CONTROLS = 1
+const val BUCKET_TOP_ONGOING = 8
 const val BUCKET_HEADS_UP = 2
+const val BUCKET_TOP_UNSEEN = 9
 const val BUCKET_FOREGROUND_SERVICE = 3
 const val BUCKET_PRIORITY_PEOPLE = 7
 const val BUCKET_PEOPLE = 4
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt
index 4b0b1e0..391bc43 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt
@@ -73,7 +73,8 @@
     private var maxNotificationsExcludesMedia = false
 
     /** Whether we allow keyguard to show less important notifications above the shelf. */
-    private var limitLockScreenToImportant = false
+    private val limitLockScreenToOneImportant
+        get() = NotificationMinimalismPrototype.V2.isEnabled
 
     /** Minimum space between two notifications, see [calculateGapAndDividerHeight]. */
     private var dividerHeight by notNull<Float>()
@@ -89,7 +90,7 @@
     }
 
     private fun allowedByPolicy(stackHeight: StackHeight): Boolean =
-        if (limitLockScreenToImportant && stackHeight.includesLessImportantNotification) {
+        if (stackHeight.shouldForceIntoShelf) {
             log { "\tallowedByPolicy = false" }
             false
         } else {
@@ -333,8 +334,8 @@
         // changes during the lockscreen <=> full shade transition.
         val shelfHeightWithSpaceBefore: Float,
 
-        /** Whether this stack height includes less at least one important notification. */
-        val includesLessImportantNotification: Boolean
+        /** Whether the stack should actually be forced into the shelf before this height. */
+        val shouldForceIntoShelf: Boolean
     )
 
     private fun computeHeightPerNotificationLimit(
@@ -347,7 +348,7 @@
         var previous: ExpandableView? = null
         val onLockscreen = onLockscreen()
 
-        var includesLessImportantNotification = false
+        val counter = if (limitLockScreenToOneImportant) BucketTypeCounter() else null
 
         // Only shelf. This should never happen, since we allow 1 view minimum (EmptyViewState).
         yield(
@@ -355,7 +356,7 @@
                 notifsHeight = 0f,
                 notifsHeightSavingSpace = 0f,
                 shelfHeightWithSpaceBefore = shelfHeight,
-                includesLessImportantNotification = includesLessImportantNotification,
+                shouldForceIntoShelf = false,
             )
         )
 
@@ -381,17 +382,9 @@
                     spaceBeforeShelf + shelfHeight
                 }
 
-            if (limitLockScreenToImportant && !includesLessImportantNotification) {
-                val bucket = (currentNotification as? ExpandableNotificationRow)?.entry?.bucket
-                includesLessImportantNotification =
-                    when (bucket) {
-                        null,
-                        BUCKET_MEDIA_CONTROLS,
-                        BUCKET_HEADS_UP,
-                        BUCKET_FOREGROUND_SERVICE,
-                        BUCKET_PRIORITY_PEOPLE -> false
-                        else -> true
-                    }
+            if (counter != null) {
+                val entry = (currentNotification as? ExpandableNotificationRow)?.entry
+                counter.incrementForBucket(entry?.bucket)
             }
 
             log {
@@ -404,7 +397,7 @@
                     notifsHeight = notifications,
                     notifsHeightSavingSpace = notifsWithCollapsedHun,
                     shelfHeightWithSpaceBefore = shelfWithSpaceBefore,
-                    includesLessImportantNotification = includesLessImportantNotification,
+                    shouldForceIntoShelf = counter?.shouldForceIntoShelf() ?: false
                 )
             )
         }
@@ -415,8 +408,6 @@
             infiniteIfNegative(
                 if (NotificationMinimalismPrototype.V1.isEnabled) {
                     NotificationMinimalismPrototype.V1.maxNotifs
-                } else if (NotificationMinimalismPrototype.V2.isEnabled) {
-                    1
                 } else {
                     resources.getInteger(R.integer.keyguard_max_notification_count)
                 }
@@ -424,7 +415,6 @@
         maxNotificationsExcludesMedia =
             NotificationMinimalismPrototype.V1.isEnabled ||
                 NotificationMinimalismPrototype.V2.isEnabled
-        limitLockScreenToImportant = NotificationMinimalismPrototype.V2.isEnabled
 
         dividerHeight =
             max(1f, resources.getDimensionPixelSize(R.dimen.notification_divider_height).toFloat())
@@ -552,4 +542,24 @@
     /** Returns the last index where [predicate] returns true, or -1 if it was always false. */
     private fun <T> Sequence<T>.lastIndexWhile(predicate: (T) -> Boolean): Int =
         takeWhile(predicate).count() - 1
+
+    /** Counts the number of notifications for each type of bucket */
+    data class BucketTypeCounter(
+        var ongoing: Int = 0,
+        var important: Int = 0,
+        var other: Int = 0,
+    ) {
+        fun incrementForBucket(@PriorityBucket bucket: Int?) {
+            when (bucket) {
+                BUCKET_MEDIA_CONTROLS,
+                null -> Unit // not counted as notifications at all
+                BUCKET_TOP_ONGOING -> ongoing++
+                BUCKET_HEADS_UP -> important++
+                BUCKET_TOP_UNSEEN -> important++
+                else -> other++
+            }
+        }
+
+        fun shouldForceIntoShelf(): Boolean = ongoing > 1 || important > 1 || other > 0
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
index 5dc5449..058233f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
@@ -37,6 +37,7 @@
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
 import com.android.systemui.statusbar.notification.row.StackScrollerDecorView;
+import com.android.systemui.statusbar.notification.shared.NotificationHeadsUpCycling;
 import com.android.systemui.statusbar.notification.shared.NotificationsImprovedHunAnimation;
 
 import java.util.ArrayList;
@@ -178,6 +179,10 @@
         mHeadsUpDisappearChildren.clear();
         mNewEvents.clear();
         mNewAddChildren.clear();
+        if (NotificationsImprovedHunAnimation.isEnabled()
+                || NotificationHeadsUpCycling.isEnabled()) {
+            mAnimationProperties.resetCustomInterpolators();
+        }
     }
 
     private void initAnimationProperties(ExpandableView child,
@@ -592,6 +597,7 @@
                             Interpolators.LINEAR);
                     mAnimationProperties.getAnimationFilter().animateY = true;
                     mTmpState.animateTo(changingView, mAnimationProperties);
+                    mAnimationProperties.resetCustomInterpolators();
                 } else if (endRunnable != null) {
                     endRunnable.run();
                 }
@@ -697,6 +703,7 @@
                                 Interpolators.FAST_OUT_SLOW_IN_REVERSE);
                         mAnimationProperties.getAnimationFilter().animateY = true;
                         mTmpState.animateTo(changingView, mAnimationProperties);
+                        mAnimationProperties.resetCustomInterpolators();
                     }
                 } else if (endRunnable != null) {
                     endRunnable.run();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 6dfaec9..6a8c43a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -441,7 +441,7 @@
                     anyOf(
                             *toFlowArray(statesForHiddenKeyguard) { state ->
                                 keyguardTransitionInteractor
-                                    .transitionStepsToState(state)
+                                    .transition(Edge.create(to = state))
                                     .map { it.value > 0f && it.transitionState == RUNNING }
                                     .onStart { emit(false) }
                             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
index 05a4391..7434891 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
@@ -288,11 +288,12 @@
     void awakenDreams();
 
     /**
-     * Handle a touch event while dreaming when the touch was initiated within a prescribed
-     * swipeable area. This method is provided for cases where swiping in certain areas of a dream
-     * should be handled by CentralSurfaces instead (e.g. swiping communal hub open).
+     * Handle a touch event while dreaming or on the glanceable hub when the touch was initiated
+     * within a prescribed swipeable area. This method is provided for cases where swiping in
+     * certain areas should be handled by CentralSurfaces instead (e.g. swiping hub open, opening
+     * the notification shade over dream or hub).
      */
-    void handleDreamTouch(MotionEvent event);
+    void handleExternalShadeWindowTouch(MotionEvent event);
 
     boolean isBouncerShowing();
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesEmptyImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesEmptyImpl.kt
index a7b5484..906baa2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesEmptyImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesEmptyImpl.kt
@@ -80,7 +80,7 @@
     override fun updateScrimController() {}
     override fun shouldIgnoreTouch() = false
     override fun isDeviceInteractive() = false
-    override fun handleDreamTouch(event: MotionEvent?) {}
+    override fun handleExternalShadeWindowTouch(event: MotionEvent?) {}
     override fun handleCommunalHubTouch(event: MotionEvent?) {}
     override fun awakenDreams() {}
     override fun isBouncerShowing() = false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index 78a8036..42680ab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -2800,6 +2800,10 @@
     @Override
     @VisibleForTesting
     public void updateScrimController() {
+        if (SceneContainerFlag.isEnabled()) {
+            return;
+        }
+
         Trace.beginSection("CentralSurfaces#updateScrimController");
 
         boolean unlocking = mKeyguardStateController.isShowing() && (
@@ -2822,15 +2826,15 @@
                     // Assume scrim state for shade is already correct and do nothing
                 } else {
                     // Safeguard which prevents the scrim from being stuck in the wrong state
-                    mScrimController.transitionTo(ScrimState.KEYGUARD);
+                    mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
                 }
             } else {
                 if ((!mKeyguardStateController.isOccluded() || mShadeSurface.isPanelExpanded())
                         && (mState == StatusBarState.SHADE || mState == StatusBarState.SHADE_LOCKED
                         || mTransitionToFullShadeProgress > 0f)) {
-                    mScrimController.transitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
+                    mScrimController.legacyTransitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
                 } else {
-                    mScrimController.transitionTo(ScrimState.AUTH_SCRIMMED);
+                    mScrimController.legacyTransitionTo(ScrimState.AUTH_SCRIMMED);
                 }
             }
             // This will cancel the keyguardFadingAway animation if it is running. We need to do
@@ -2842,40 +2846,40 @@
             // FLAG_DISMISS_KEYGUARD_ACTIVITY.
             ScrimState state = mStatusBarKeyguardViewManager.primaryBouncerNeedsScrimming()
                     ? ScrimState.BOUNCER_SCRIMMED : ScrimState.BOUNCER;
-            mScrimController.transitionTo(state);
+            mScrimController.legacyTransitionTo(state);
         } else if (mBrightnessMirrorVisible) {
-            mScrimController.transitionTo(ScrimState.BRIGHTNESS_MIRROR);
+            mScrimController.legacyTransitionTo(ScrimState.BRIGHTNESS_MIRROR);
         } else if (mState == StatusBarState.SHADE_LOCKED) {
-            mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
+            mScrimController.legacyTransitionTo(ScrimState.SHADE_LOCKED);
         } else if (mDozeServiceHost.isPulsing()) {
-            mScrimController.transitionTo(ScrimState.PULSING,
+            mScrimController.legacyTransitionTo(ScrimState.PULSING,
                     mDozeScrimController.getScrimCallback());
         } else if (mDozeServiceHost.hasPendingScreenOffCallback()) {
-            mScrimController.transitionTo(ScrimState.OFF, new ScrimController.Callback() {
+            mScrimController.legacyTransitionTo(ScrimState.OFF, new ScrimController.Callback() {
                 @Override
                 public void onFinished() {
                     mDozeServiceHost.executePendingScreenOffCallback();
                 }
             });
         } else if (mDozing && !unlocking) {
-            mScrimController.transitionTo(ScrimState.AOD);
+            mScrimController.legacyTransitionTo(ScrimState.AOD);
             // This will cancel the keyguardFadingAway animation if it is running. We need to do
             // this as otherwise it can remain pending and leave keyguard in a weird state.
             mUnlockScrimCallback.onCancelled();
         } else if (mIsIdleOnCommunal) {
             if (dreaming) {
-                mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+                mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
             } else {
-                mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+                mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
             }
         } else if (mKeyguardStateController.isShowing()
                 && !mKeyguardStateController.isOccluded()
                 && !unlocking) {
-            mScrimController.transitionTo(ScrimState.KEYGUARD);
+            mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         } else if (dreaming) {
-            mScrimController.transitionTo(ScrimState.DREAMING);
+            mScrimController.legacyTransitionTo(ScrimState.DREAMING);
         } else {
-            mScrimController.transitionTo(ScrimState.UNLOCKED, mUnlockScrimCallback);
+            mScrimController.legacyTransitionTo(ScrimState.UNLOCKED, mUnlockScrimCallback);
         }
         updateLightRevealScrimVisibility();
 
@@ -2950,8 +2954,8 @@
     };
 
     @Override
-    public void handleDreamTouch(MotionEvent event) {
-        getNotificationShadeWindowViewController().handleDreamTouch(event);
+    public void handleExternalShadeWindowTouch(MotionEvent event) {
+        getNotificationShadeWindowViewController().handleExternalTouch(event);
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java
index cff46ab..0ba4aab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java
@@ -223,7 +223,8 @@
             }
             return;
         }
-        StatusBarIcon icon = new StatusBarIcon(iconPkg, UserHandle.SYSTEM, iconId, 0, 0, "Demo");
+        StatusBarIcon icon = new StatusBarIcon(iconPkg, UserHandle.SYSTEM, iconId, 0, 0, "Demo",
+                StatusBarIcon.Type.SystemIcon);
         icon.visible = true;
         StatusBarIconView v = new StatusBarIconView(getContext(), slot, null, false);
         v.setTag(slot);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 77f3706..330383f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -29,6 +29,8 @@
 import android.view.MotionEvent;
 import android.view.View;
 
+import androidx.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.assist.AssistManager;
@@ -74,6 +76,11 @@
     private final PowerManager mPowerManager;
     private boolean mAnimateWakeup;
     private boolean mIgnoreTouchWhilePulsing;
+    private final HasPendingScreenOffCallbackChangeListener
+            mDefaultHasPendingScreenOffCallbackChangeListener =
+                    hasPendingScreenOffCallback -> { /* no op */ };
+    private HasPendingScreenOffCallbackChangeListener mHasPendingScreenOffCallbackChangeListener =
+            mDefaultHasPendingScreenOffCallbackChangeListener;
     private Runnable mPendingScreenOffCallback;
     @VisibleForTesting
     boolean mWakeLockScreenPerformsAuth = SystemProperties.getBoolean(
@@ -434,12 +441,14 @@
             Log.w(TAG, "Overlapping onDisplayOffCallback. Ignoring previous one.");
         }
         mPendingScreenOffCallback = onDisplayOffCallback;
+        mHasPendingScreenOffCallbackChangeListener.onHasPendingScreenOffCallbackChanged(true);
         mCentralSurfaces.updateScrimController();
     }
 
     @Override
     public void cancelGentleSleep() {
         mPendingScreenOffCallback = null;
+        mHasPendingScreenOffCallbackChangeListener.onHasPendingScreenOffCallbackChanged(false);
         if (mScrimController.getState() == ScrimState.OFF) {
             mCentralSurfaces.updateScrimController();
         }
@@ -448,11 +457,27 @@
     /**
      * When the dozing host is waiting for scrims to fade out to change the display state.
      */
-    boolean hasPendingScreenOffCallback() {
+    public boolean hasPendingScreenOffCallback() {
         return mPendingScreenOffCallback != null;
     }
 
     /**
+     * Sets a listener to be notified whenever the result of {@link #hasPendingScreenOffCallback()}
+     * changes.
+     *
+     * <p>Setting the listener automatically notifies the listener inline.
+     */
+    public void setHasPendingScreenOffCallbackChangeListener(
+            @Nullable HasPendingScreenOffCallbackChangeListener listener) {
+        mHasPendingScreenOffCallbackChangeListener = listener != null
+                ? listener
+                : mDefaultHasPendingScreenOffCallbackChangeListener;
+
+        mHasPendingScreenOffCallbackChangeListener.onHasPendingScreenOffCallbackChanged(
+                mPendingScreenOffCallback != null);
+    }
+
+    /**
      * Executes an nullifies the pending display state callback.
      *
      * @see #hasPendingScreenOffCallback()
@@ -464,6 +489,7 @@
         }
         mPendingScreenOffCallback.run();
         mPendingScreenOffCallback = null;
+        mHasPendingScreenOffCallbackChangeListener.onHasPendingScreenOffCallbackChanged(false);
     }
 
     boolean shouldAnimateWakeup() {
@@ -524,4 +550,14 @@
             }
         }
     };
+
+    /**
+     * Defines interface for classes that can be notified about changes to having or not having a
+     * pending screen-off callback.
+     */
+    public interface HasPendingScreenOffCallbackChangeListener {
+
+        /** Notifies that there now is or isn't a pending screen-off callback. */
+        void onHasPendingScreenOffCallbackChanged(boolean hasPendingScreenOffCallback);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
index fc29eab..e5fc4e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
@@ -555,7 +555,12 @@
 
                 override fun onTransitionAnimationStart(isExpandingFullyAbove: Boolean) {
                     super.onTransitionAnimationStart(isExpandingFullyAbove)
-
+                    if (communalHub()) {
+                        communalSceneInteractor.snapToScene(
+                            CommunalScenes.Blank,
+                            ActivityTransitionAnimator.TIMINGS.totalDuration
+                        )
+                    }
                     // Double check that the keyguard is still showing and not going
                     // away, but if so set the keyguard occluded. Typically, WM will let
                     // KeyguardViewMediator know directly, but we're overriding that to
@@ -581,9 +586,6 @@
                     // collapse the shade (or at least run the post collapse runnables)
                     // later on.
                     centralSurfaces?.setIsLaunchingActivityOverLockscreen(false, false)
-                    if (communalHub()) {
-                        communalSceneInteractor.snapToScene(CommunalScenes.Blank)
-                    }
                     delegate.onTransitionAnimationEnd(isExpandingFullyAbove)
                 }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index fe001b3..9cece76 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -72,6 +72,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToGoneTransitionViewModel;
 import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel;
 import com.android.systemui.res.R;
+import com.android.systemui.scene.shared.flag.SceneContainerFlag;
 import com.android.systemui.scene.shared.model.Scenes;
 import com.android.systemui.scrim.ScrimView;
 import com.android.systemui.shade.ShadeViewController;
@@ -319,8 +320,11 @@
         mScrimBehind.setViewAlpha(mBehindAlpha);
     };
 
+    @VisibleForTesting
     Consumer<TransitionStep> mBouncerToGoneTransition;
 
+    private boolean mViewsAttached;
+
     @Inject
     public ScrimController(
             LightBarController lightBarController,
@@ -432,6 +436,16 @@
             state.prepare(state);
         }
 
+        hydrateStateInternally(behindScrim);
+
+        mViewsAttached = true;
+    }
+
+    private void hydrateStateInternally(ScrimView behindScrim) {
+        if (SceneContainerFlag.isEnabled()) {
+            return;
+        }
+
         // Directly control transition to UNLOCKED scrim state from PRIMARY_BOUNCER, and make sure
         // to report back that keyguard has faded away. This fixes cases where the scrim state was
         // rapidly switching on unlock, due to shifts in state in CentralSurfacesImpl
@@ -443,7 +457,7 @@
 
                     if (state == TransitionState.STARTED) {
                         setExpansionAffectsAlpha(false);
-                        transitionTo(ScrimState.UNLOCKED);
+                        legacyTransitionTo(ScrimState.UNLOCKED);
                     }
 
                     if (state == TransitionState.FINISHED || state == TransitionState.CANCELED) {
@@ -508,10 +522,36 @@
     }
 
     public void transitionTo(ScrimState state) {
-        transitionTo(state, null);
+        if (SceneContainerFlag.isUnexpectedlyInLegacyMode() || !mViewsAttached) {
+            return;
+        }
+
+        internalTransitionTo(state, null);
     }
 
-    public void transitionTo(ScrimState state, Callback callback) {
+    /**
+     * Transitions to the given {@link ScrimState}.
+     *
+     * @deprecated Legacy codepath only. Do not call directly.
+     */
+    @Deprecated
+    public void legacyTransitionTo(ScrimState state) {
+        SceneContainerFlag.assertInLegacyMode();
+        internalTransitionTo(state, null);
+    }
+
+    /**
+     * Transitions to the given {@link ScrimState}.
+     *
+     * @deprecated Legacy codepath only. Do not call directly.
+     */
+    @Deprecated
+    public void legacyTransitionTo(ScrimState state, Callback callback) {
+        SceneContainerFlag.assertInLegacyMode();
+        internalTransitionTo(state, callback);
+    }
+
+    private void internalTransitionTo(ScrimState state, Callback callback) {
         if (mIsBouncerToGoneTransitionRunning) {
             Log.i(TAG, "Skipping transition to: " + state
                     + " while mIsBouncerToGoneTransitionRunning");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt
index 08a890d..d699b38 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt
@@ -155,6 +155,7 @@
                     0,
                     0,
                     contentDescription,
+                    StatusBarIcon.Type.SystemIcon,
                 )
             holder.tag = state.subId
             return holder
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index db4f0af..b40bf56 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -73,6 +73,7 @@
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
 import com.android.systemui.keyguard.domain.interactor.WindowManagerLockscreenVisibilityInteractor;
 import com.android.systemui.keyguard.shared.model.DismissAction;
+import com.android.systemui.keyguard.shared.model.Edge;
 import com.android.systemui.keyguard.shared.model.KeyguardDone;
 import com.android.systemui.keyguard.shared.model.KeyguardState;
 import com.android.systemui.keyguard.shared.model.TransitionStep;
@@ -508,8 +509,8 @@
         mListenForCanShowAlternateBouncer = null;
         if (!DeviceEntryUdfpsRefactor.isEnabled()) {
             mListenForAlternateBouncerTransitionSteps = mJavaAdapter.alwaysCollectFlow(
-                    mKeyguardTransitionInteractor.transitionStepsFromState(
-                            KeyguardState.ALTERNATE_BOUNCER),
+                    mKeyguardTransitionInteractor
+                            .transition(Edge.create(KeyguardState.ALTERNATE_BOUNCER)),
                     this::consumeFromAlternateBouncerTransitionSteps
             );
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java
index fabf858d..85213cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java
@@ -227,8 +227,8 @@
         StatusBarIconHolder holder = mStatusBarIconList.getIconHolder(slot, 0);
         if (holder == null) {
             StatusBarIcon icon = new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(),
-                    Icon.createWithResource(
-                            mContext, resourceId), 0, 0, contentDescription);
+                    Icon.createWithResource(mContext, resourceId), 0, 0,
+                    contentDescription, StatusBarIcon.Type.SystemIcon);
             holder = StatusBarIconHolder.fromIcon(icon);
             setIcon(slot, holder);
         } else {
@@ -295,7 +295,7 @@
                 } else {
                     holder.setIcon(new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(),
                             Icon.createWithResource(mContext, state.callStrengthResId), 0, 0,
-                            state.callStrengthDescription));
+                            state.callStrengthDescription, StatusBarIcon.Type.SystemIcon));
                 }
                 setIcon(slot, holder);
             }
@@ -320,7 +320,7 @@
                 } else {
                     holder.setIcon(new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(),
                             Icon.createWithResource(mContext, state.noCallingResId), 0, 0,
-                            state.noCallingDescription));
+                            state.noCallingDescription, StatusBarIcon.Type.SystemIcon));
                 }
                 setIcon(slot, holder);
             }
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/GestureViewModelFactory.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/GestureViewModelFactory.kt
new file mode 100644
index 0000000..504bd5f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/GestureViewModelFactory.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.touchpad.tutorial.ui
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+sealed class GestureTutorialViewModel : ViewModel()
+
+class BackGestureTutorialViewModel : GestureTutorialViewModel()
+
+class HomeGestureTutorialViewModel : GestureTutorialViewModel()
+
+class GestureViewModelFactory : ViewModelProvider.Factory {
+
+    @Suppress("UNCHECKED_CAST")
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        return when (modelClass) {
+            BackGestureTutorialViewModel::class.java -> BackGestureTutorialViewModel()
+            HomeGestureTutorialViewModel::class.java -> HomeGestureTutorialViewModel()
+            else -> error("Unknown ViewModel class: ${modelClass.name}")
+        }
+            as T
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt
new file mode 100644
index 0000000..7669524
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.touchpad.tutorial.ui
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import javax.inject.Inject
+
+class TouchpadTutorialViewModel : ViewModel() {
+
+    private val _screen = MutableStateFlow(Screen.TUTORIAL_SELECTION)
+    val screen: StateFlow<Screen> = _screen
+
+    class Factory @Inject constructor() : ViewModelProvider.Factory {
+
+        @Suppress("UNCHECKED_CAST")
+        override fun <T : ViewModel> create(modelClass: Class<T>): T {
+            return TouchpadTutorialViewModel() as T
+        }
+    }
+}
+
+enum class Screen {
+    TUTORIAL_SELECTION,
+    BACK_GESTURE,
+    HOME_GESTURE,
+}
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TutorialSelectionViewModel.kt
similarity index 60%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TutorialSelectionViewModel.kt
index bb3b654..1a8272d8 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TutorialSelectionViewModel.kt
@@ -14,6 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.touchpad.tutorial.ui
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+class TutorialSelectionViewModel : ViewModel()
+
+class TutorialSelectionViewModelFactory : ViewModelProvider.Factory {
+
+    @Suppress("UNCHECKED_CAST")
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        return TutorialSelectionViewModel() as T
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt
new file mode 100644
index 0000000..09dd909
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.touchpad.tutorial.ui.view
+
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.lifecycle.Lifecycle.State.STARTED
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import androidx.lifecycle.viewmodel.compose.viewModel
+import com.android.compose.theme.PlatformTheme
+import com.android.systemui.touchpad.tutorial.ui.BackGestureTutorialViewModel
+import com.android.systemui.touchpad.tutorial.ui.GestureViewModelFactory
+import com.android.systemui.touchpad.tutorial.ui.HomeGestureTutorialViewModel
+import com.android.systemui.touchpad.tutorial.ui.Screen.BACK_GESTURE
+import com.android.systemui.touchpad.tutorial.ui.Screen.HOME_GESTURE
+import com.android.systemui.touchpad.tutorial.ui.Screen.TUTORIAL_SELECTION
+import com.android.systemui.touchpad.tutorial.ui.TouchpadTutorialViewModel
+import com.android.systemui.touchpad.tutorial.ui.TutorialSelectionViewModel
+import com.android.systemui.touchpad.tutorial.ui.TutorialSelectionViewModelFactory
+import javax.inject.Inject
+
+class TouchpadTutorialActivity
+@Inject
+constructor(
+    private val viewModelFactory: TouchpadTutorialViewModel.Factory,
+) : ComponentActivity() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContent { PlatformTheme { TouchpadTutorialScreen(viewModelFactory) } }
+    }
+}
+
+@Composable
+fun TouchpadTutorialScreen(viewModelFactory: ViewModelProvider.Factory) {
+    val vm = viewModel<TouchpadTutorialViewModel>(factory = viewModelFactory)
+    val activeScreen by vm.screen.collectAsStateWithLifecycle(STARTED)
+    when (activeScreen) {
+        TUTORIAL_SELECTION -> TutorialSelectionScreen()
+        BACK_GESTURE -> BackGestureTutorialScreen()
+        HOME_GESTURE -> HomeGestureTutorialScreen()
+    }
+}
+
+@Composable
+fun TutorialSelectionScreen() {
+    val vm = viewModel<TutorialSelectionViewModel>(factory = TutorialSelectionViewModelFactory())
+}
+
+@Composable
+fun BackGestureTutorialScreen() {
+    val vm = viewModel<BackGestureTutorialViewModel>(factory = GestureViewModelFactory())
+}
+
+@Composable
+fun HomeGestureTutorialScreen() {
+    val vm = viewModel<HomeGestureTutorialViewModel>(factory = GestureViewModelFactory())
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/kotlin/Utils.kt b/packages/SystemUI/src/com/android/systemui/util/kotlin/Utils.kt
index 405b57a..d9a2e95 100644
--- a/packages/SystemUI/src/com/android/systemui/util/kotlin/Utils.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/kotlin/Utils.kt
@@ -19,19 +19,24 @@
 import android.content.Context
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.map
 
 class Utils {
     companion object {
         fun <A, B, C> toTriple(a: A, bc: Pair<B, C>) = Triple(a, bc.first, bc.second)
+
         fun <A, B, C> toTriple(ab: Pair<A, B>, c: C) = Triple(ab.first, ab.second, c)
 
         fun <A, B, C, D> toQuad(a: A, b: B, c: C, d: D) = Quad(a, b, c, d)
+
         fun <A, B, C, D> toQuad(a: A, bcd: Triple<B, C, D>) =
             Quad(a, bcd.first, bcd.second, bcd.third)
         fun <A, B, C, D> toQuad(abc: Triple<A, B, C>, d: D) =
             Quad(abc.first, abc.second, abc.third, d)
 
         fun <A, B, C, D, E> toQuint(a: A, b: B, c: C, d: D, e: E) = Quint(a, b, c, d, e)
+
         fun <A, B, C, D, E> toQuint(a: A, bcde: Quad<B, C, D, E>) =
             Quint(a, bcde.first, bcde.second, bcde.third, bcde.fourth)
 
@@ -50,6 +55,14 @@
             )
 
         /**
+         * Samples the provided flow, performs a filter on the sampled value, then returns the
+         * original value.
+         */
+        fun <A, B> Flow<A>.sampleFilter(b: Flow<B>, predicate: (B) -> Boolean): Flow<A> {
+            return this.sample(b, ::Pair).filter { (_, b) -> predicate(b) }.map { (a, _) -> a }
+        }
+
+        /**
          * Samples the provided flows, emitting a tuple of the original flow's value as well as each
          * of the combined flows' values.
          *
diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt b/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt
index ed52233..d92127c 100644
--- a/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt
@@ -19,6 +19,7 @@
 import android.database.ContentObserver
 import android.net.Uri
 import android.provider.Settings.SettingNotFoundException
+import com.android.app.tracing.TraceUtils.trace
 
 /**
  * Used to interact with mainly with Settings.Global, but can also be used for Settings.System and
@@ -37,6 +38,7 @@
 interface SettingsProxy {
     /** Returns the [ContentResolver] this instance was constructed with. */
     fun getContentResolver(): ContentResolver
+
     /**
      * Construct the content URI for a particular name/value pair, useful for monitoring changes
      * with a ContentObserver.
@@ -45,6 +47,7 @@
      * @return the corresponding content URI, or null if not present
      */
     fun getUriFor(name: String): Uri
+
     /**
      * Convenience wrapper around [ContentResolver.registerContentObserver].'
      *
@@ -53,9 +56,11 @@
     fun registerContentObserverSync(name: String, settingsObserver: ContentObserver) {
         registerContentObserverSync(getUriFor(name), settingsObserver)
     }
+
     /** Convenience wrapper around [ContentResolver.registerContentObserver].' */
     fun registerContentObserverSync(uri: Uri, settingsObserver: ContentObserver) =
         registerContentObserverSync(uri, false, settingsObserver)
+
     /**
      * Convenience wrapper around [ContentResolver.registerContentObserver].'
      *
@@ -66,15 +71,26 @@
         notifyForDescendants: Boolean,
         settingsObserver: ContentObserver
     ) = registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver)
+
     /** Convenience wrapper around [ContentResolver.registerContentObserver].' */
     fun registerContentObserverSync(
         uri: Uri,
         notifyForDescendants: Boolean,
         settingsObserver: ContentObserver
-    ) = getContentResolver().registerContentObserver(uri, notifyForDescendants, settingsObserver)
+    ) {
+        trace({ "SP#registerObserver#[$uri]" }) {
+            getContentResolver()
+                .registerContentObserver(uri, notifyForDescendants, settingsObserver)
+        }
+    }
+
     /** See [ContentResolver.unregisterContentObserver]. */
-    fun unregisterContentObserverSync(settingsObserver: ContentObserver) =
-        getContentResolver().unregisterContentObserver(settingsObserver)
+    fun unregisterContentObserverSync(settingsObserver: ContentObserver) {
+        trace({ "SP#unregisterObserver" }) {
+            getContentResolver().unregisterContentObserver(settingsObserver)
+        }
+    }
+
     /**
      * Look up a name in the database.
      *
@@ -82,6 +98,7 @@
      * @return the corresponding value, or null if not present
      */
     fun getString(name: String): String
+
     /**
      * Store a name/value pair into the database.
      *
@@ -90,6 +107,7 @@
      * @return true if the value was set, false on database errors
      */
     fun putString(name: String, value: String): Boolean
+
     /**
      * Store a name/value pair into the database.
      *
@@ -120,6 +138,7 @@
      * @see .resetToDefaults
      */
     fun putString(name: String, value: String, tag: String, makeDefault: Boolean): Boolean
+
     /**
      * Convenience function for retrieving a single secure settings value as an integer. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -138,6 +157,7 @@
             def
         }
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as an integer. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -160,6 +180,7 @@
             throw SettingNotFoundException(name)
         }
     }
+
     /**
      * Convenience function for updating a single settings value as an integer. This will either
      * create a new entry in the table if the given name does not exist, or modify the value of the
@@ -173,6 +194,7 @@
     fun putInt(name: String, value: Int): Boolean {
         return putString(name, value.toString())
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a boolean. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -186,6 +208,7 @@
     fun getBool(name: String, def: Boolean): Boolean {
         return getInt(name, if (def) 1 else 0) != 0
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a boolean. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -203,6 +226,7 @@
     fun getBool(name: String): Boolean {
         return getInt(name) != 0
     }
+
     /**
      * Convenience function for updating a single settings value as a boolean. This will either
      * create a new entry in the table if the given name does not exist, or modify the value of the
@@ -216,6 +240,7 @@
     fun putBool(name: String, value: Boolean): Boolean {
         return putInt(name, if (value) 1 else 0)
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a `long`. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -230,6 +255,7 @@
         val valString = getString(name)
         return parseLongOrUseDefault(valString, def)
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a `long`. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -248,6 +274,7 @@
         val valString = getString(name)
         return parseLongOrThrow(name, valString)
     }
+
     /**
      * Convenience function for updating a secure settings value as a long integer. This will either
      * create a new entry in the table if the given name does not exist, or modify the value of the
@@ -261,6 +288,7 @@
     fun putLong(name: String, value: Long): Boolean {
         return putString(name, value.toString())
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a floating point
      * number. Note that internally setting values are always stored as strings; this function
@@ -275,6 +303,7 @@
         val v = getString(name)
         return parseFloat(v, def)
     }
+
     /**
      * Convenience function for retrieving a single secure settings value as a float. Note that
      * internally setting values are always stored as strings; this function converts the string to
@@ -293,6 +322,7 @@
         val v = getString(name)
         return parseFloatOrThrow(name, v)
     }
+
     /**
      * Convenience function for updating a single settings value as a floating point number. This
      * will either create a new entry in the table if the given name does not exist, or modify the
@@ -306,6 +336,7 @@
     fun putFloat(name: String, value: Float): Boolean {
         return putString(name, value.toString())
     }
+
     companion object {
         /** Convert a string to a long, or uses a default if the string is malformed or null */
         @JvmStatic
@@ -319,6 +350,7 @@
                 }
             return value
         }
+
         /** Convert a string to a long, or throws an exception if the string is malformed or null */
         @JvmStatic
         @Throws(SettingNotFoundException::class)
@@ -332,6 +364,7 @@
                 throw SettingNotFoundException(name)
             }
         }
+
         /** Convert a string to a float, or uses a default if the string is malformed or null */
         @JvmStatic
         fun parseFloat(v: String?, def: Float): Float {
@@ -341,6 +374,7 @@
                 def
             }
         }
+
         /**
          * Convert a string to a float, or throws an exception if the string is malformed or null
          */
diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt b/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt
index ed13943..ed65f1a 100644
--- a/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt
@@ -51,6 +51,7 @@
                 "userId cannot be set in interface, use setter from an implementation instead."
             )
         }
+
     /**
      * Returns the actual current user handle when querying with the current user. Otherwise,
      * returns the passed in user id.
@@ -60,9 +61,11 @@
             userHandle
         } else userTracker.userId
     }
+
     override fun registerContentObserverSync(uri: Uri, settingsObserver: ContentObserver) {
         registerContentObserverForUserSync(uri, settingsObserver, userId)
     }
+
     /** Convenience wrapper around [ContentResolver.registerContentObserver].' */
     override fun registerContentObserverSync(
         uri: Uri,
@@ -71,6 +74,7 @@
     ) {
         registerContentObserverForUserSync(uri, notifyForDescendants, settingsObserver, userId)
     }
+
     /**
      * Convenience wrapper around [ContentResolver.registerContentObserver]
      *
@@ -83,6 +87,7 @@
     ) {
         registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle)
     }
+
     /** Convenience wrapper around [ContentResolver.registerContentObserver] */
     fun registerContentObserverForUserSync(
         uri: Uri,
@@ -91,6 +96,7 @@
     ) {
         registerContentObserverForUserSync(uri, false, settingsObserver, userHandle)
     }
+
     /**
      * Convenience wrapper around [ContentResolver.registerContentObserver]
      *
@@ -109,6 +115,7 @@
             userHandle
         )
     }
+
     /** Convenience wrapper around [ContentResolver.registerContentObserver] */
     fun registerContentObserverForUserSync(
         uri: Uri,
@@ -127,6 +134,7 @@
             Unit
         }
     }
+
     /**
      * Look up a name in the database.
      *
@@ -136,8 +144,10 @@
     override fun getString(name: String): String {
         return getStringForUser(name, userId)
     }
+
     /** See [getString]. */
     fun getStringForUser(name: String, userHandle: Int): String
+
     /**
      * Store a name/value pair into the database. Values written by this method will be overridden
      * if a restore happens in the future.
@@ -147,11 +157,14 @@
      * @return true if the value was set, false on database errors
      */
     fun putString(name: String, value: String, overrideableByRestore: Boolean): Boolean
+
     override fun putString(name: String, value: String): Boolean {
         return putStringForUser(name, value, userId)
     }
+
     /** Similar implementation to [putString] for the specified [userHandle]. */
     fun putStringForUser(name: String, value: String, userHandle: Int): Boolean
+
     /** Similar implementation to [putString] for the specified [userHandle]. */
     fun putStringForUser(
         name: String,
@@ -161,9 +174,11 @@
         @UserIdInt userHandle: Int,
         overrideableByRestore: Boolean
     ): Boolean
+
     override fun getInt(name: String, def: Int): Int {
         return getIntForUser(name, def, userId)
     }
+
     /** Similar implementation to [getInt] for the specified [userHandle]. */
     fun getIntForUser(name: String, def: Int, userHandle: Int): Int {
         val v = getStringForUser(name, userHandle)
@@ -173,8 +188,10 @@
             def
         }
     }
+
     @Throws(SettingNotFoundException::class)
     override fun getInt(name: String) = getIntForUser(name, userId)
+
     /** Similar implementation to [getInt] for the specified [userHandle]. */
     @Throws(SettingNotFoundException::class)
     fun getIntForUser(name: String, userHandle: Int): Int {
@@ -185,52 +202,66 @@
             throw SettingNotFoundException(name)
         }
     }
+
     override fun putInt(name: String, value: Int) = putIntForUser(name, value, userId)
+
     /** Similar implementation to [getInt] for the specified [userHandle]. */
     fun putIntForUser(name: String, value: Int, userHandle: Int) =
         putStringForUser(name, value.toString(), userHandle)
+
     override fun getBool(name: String, def: Boolean) = getBoolForUser(name, def, userId)
+
     /** Similar implementation to [getBool] for the specified [userHandle]. */
     fun getBoolForUser(name: String, def: Boolean, userHandle: Int) =
         getIntForUser(name, if (def) 1 else 0, userHandle) != 0
+
     @Throws(SettingNotFoundException::class)
     override fun getBool(name: String) = getBoolForUser(name, userId)
+
     /** Similar implementation to [getBool] for the specified [userHandle]. */
     @Throws(SettingNotFoundException::class)
     fun getBoolForUser(name: String, userHandle: Int): Boolean {
         return getIntForUser(name, userHandle) != 0
     }
+
     override fun putBool(name: String, value: Boolean): Boolean {
         return putBoolForUser(name, value, userId)
     }
+
     /** Similar implementation to [putBool] for the specified [userHandle]. */
     fun putBoolForUser(name: String, value: Boolean, userHandle: Int) =
         putIntForUser(name, if (value) 1 else 0, userHandle)
+
     /** Similar implementation to [getLong] for the specified [userHandle]. */
     fun getLongForUser(name: String, def: Long, userHandle: Int): Long {
         val valString = getStringForUser(name, userHandle)
         return parseLongOrUseDefault(valString, def)
     }
+
     /** Similar implementation to [getLong] for the specified [userHandle]. */
     @Throws(SettingNotFoundException::class)
     fun getLongForUser(name: String, userHandle: Int): Long {
         val valString = getStringForUser(name, userHandle)
         return parseLongOrThrow(name, valString)
     }
+
     /** Similar implementation to [putLong] for the specified [userHandle]. */
     fun putLongForUser(name: String, value: Long, userHandle: Int) =
         putStringForUser(name, value.toString(), userHandle)
+
     /** Similar implementation to [getFloat] for the specified [userHandle]. */
     fun getFloatForUser(name: String, def: Float, userHandle: Int): Float {
         val v = getStringForUser(name, userHandle)
         return parseFloat(v, def)
     }
+
     /** Similar implementation to [getFloat] for the specified [userHandle]. */
     @Throws(SettingNotFoundException::class)
     fun getFloatForUser(name: String, userHandle: Int): Float {
         val v = getStringForUser(name, userHandle)
         return parseFloatOrThrow(name, v)
     }
+
     /** Similar implementation to [putFloat] for the specified [userHandle]. */
     fun putFloatForUser(name: String, value: Float, userHandle: Int) =
         putStringForUser(name, value.toString(), userHandle)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index ce5545c..e613216 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -136,6 +136,7 @@
 import com.android.systemui.util.RoundedCornerProgressDrawable;
 import com.android.systemui.util.settings.SecureSettings;
 import com.android.systemui.volume.domain.interactor.VolumePanelNavigationInteractor;
+import com.android.systemui.volume.ui.binder.VolumeDialogMenuIconBinder;
 import com.android.systemui.volume.ui.navigation.VolumeNavigator;
 
 import dagger.Lazy;
@@ -311,6 +312,7 @@
     private int mDialogTimeoutMillis;
     private final VibratorHelper mVibratorHelper;
     private final com.android.systemui.util.time.SystemClock mSystemClock;
+    private final VolumeDialogMenuIconBinder mVolumeDialogMenuIconBinder;
 
     public VolumeDialogImpl(
             Context context,
@@ -329,6 +331,7 @@
             DumpManager dumpManager,
             Lazy<SecureSettings> secureSettings,
             VibratorHelper vibratorHelper,
+            VolumeDialogMenuIconBinder volumeDialogMenuIconBinder,
             com.android.systemui.util.time.SystemClock systemClock) {
         mContext =
                 new ContextThemeWrapper(context, R.style.volume_dialog_theme);
@@ -361,6 +364,7 @@
         mVolumePanelNavigationInteractor = volumePanelNavigationInteractor;
         mVolumeNavigator = volumeNavigator;
         mSecureSettings = secureSettings;
+        mVolumeDialogMenuIconBinder = volumeDialogMenuIconBinder;
         mDialogTimeoutMillis = DIALOG_TIMEOUT_MILLIS;
 
         dumpManager.registerDumpable("VolumeDialogImpl", this);
@@ -436,6 +440,7 @@
         if (mDevicePostureController != null) {
             mDevicePostureController.removeCallback(mDevicePostureControllerCallback);
         }
+        mVolumeDialogMenuIconBinder.destroy();
     }
 
     @Override
@@ -671,6 +676,7 @@
 
         mSettingsView = mDialog.findViewById(R.id.settings_container);
         mSettingsIcon = mDialog.findViewById(R.id.settings);
+        mVolumeDialogMenuIconBinder.bind(mSettingsIcon);
 
         if (mRows.isEmpty()) {
             if (!AudioSystem.isSingleVolume(mContext)) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogModule.kt b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogModule.kt
new file mode 100644
index 0000000..54dc3db
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogModule.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.volume
+
+import com.android.systemui.volume.panel.shared.flag.VolumePanelFlag
+import com.android.systemui.volume.ui.viewmodel.AnimatedVolumeMenuIconViewModel
+import com.android.systemui.volume.ui.viewmodel.StaticVolumeMenuIconViewModel
+import com.android.systemui.volume.ui.viewmodel.VolumeMenuIconViewModel
+import dagger.Lazy
+import dagger.Module
+import dagger.Provides
+
+@Module
+interface VolumeDialogModule {
+
+    companion object {
+
+        @Provides
+        fun provideVolumeMenuIconViewModel(
+            volumePanelFlag: VolumePanelFlag,
+            static: Lazy<StaticVolumeMenuIconViewModel>,
+            animated: Lazy<AnimatedVolumeMenuIconViewModel>,
+        ): VolumeMenuIconViewModel {
+            return if (volumePanelFlag.canUseNewVolumePanel()) {
+                    animated
+                } else {
+                    static
+                }
+                .get()
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
index dc1e8cf..fd68bfb 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
@@ -38,11 +38,13 @@
 import com.android.systemui.volume.VolumeComponent;
 import com.android.systemui.volume.VolumeDialogComponent;
 import com.android.systemui.volume.VolumeDialogImpl;
+import com.android.systemui.volume.VolumeDialogModule;
 import com.android.systemui.volume.VolumePanelDialogReceiver;
 import com.android.systemui.volume.VolumeUI;
 import com.android.systemui.volume.domain.interactor.VolumePanelNavigationInteractor;
 import com.android.systemui.volume.panel.dagger.VolumePanelComponent;
 import com.android.systemui.volume.panel.dagger.factory.VolumePanelComponentFactory;
+import com.android.systemui.volume.ui.binder.VolumeDialogMenuIconBinder;
 import com.android.systemui.volume.ui.navigation.VolumeNavigator;
 
 import dagger.Binds;
@@ -61,6 +63,7 @@
                 CaptioningModule.class,
                 MediaDevicesModule.class,
                 SpatializerModule.class,
+                VolumeDialogModule.class,
         },
         subcomponents = {
                 VolumePanelComponent.class
@@ -112,6 +115,7 @@
             DumpManager dumpManager,
             Lazy<SecureSettings> secureSettings,
             VibratorHelper vibratorHelper,
+            VolumeDialogMenuIconBinder volumeDialogMenuIconBinder,
             SystemClock systemClock) {
         VolumeDialogImpl impl = new VolumeDialogImpl(
                 context,
@@ -130,6 +134,7 @@
                 dumpManager,
                 secureSettings,
                 vibratorHelper,
+                volumeDialogMenuIconBinder,
                 systemClock);
         impl.setStreamImportant(AudioManager.STREAM_SYSTEM, false);
         impl.setAutomute(true);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractor.kt
index 6e1ebc8..12e624ca 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractor.kt
@@ -19,10 +19,10 @@
 import android.media.session.MediaController
 import android.media.session.PlaybackState
 import com.android.settingslib.volume.data.repository.MediaControllerRepository
+import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaControllerChangeModel
 import com.android.systemui.volume.panel.component.mediaoutput.shared.model.MediaDeviceSession
-import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
 import javax.inject.Inject
 import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -38,7 +38,7 @@
 
 /** Allows to observe and change [MediaDeviceSession] state. */
 @OptIn(ExperimentalCoroutinesApi::class)
-@VolumePanelScope
+@SysUISingleton
 class MediaDeviceSessionInteractor
 @Inject
 constructor(
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
index 31a8977..8282210 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
@@ -23,11 +23,12 @@
 import com.android.settingslib.media.MediaDevice
 import com.android.settingslib.volume.data.repository.LocalMediaRepository
 import com.android.settingslib.volume.data.repository.MediaControllerRepository
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.volume.panel.component.mediaoutput.data.repository.LocalMediaRepositoryFactory
 import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaDeviceSessions
 import com.android.systemui.volume.panel.component.mediaoutput.shared.model.MediaDeviceSession
-import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
 import com.android.systemui.volume.panel.shared.model.Result
 import com.android.systemui.volume.panel.shared.model.filterData
 import com.android.systemui.volume.panel.shared.model.wrapInResult
@@ -52,13 +53,13 @@
 
 /** Provides observable models about the current media session state. */
 @OptIn(ExperimentalCoroutinesApi::class)
-@VolumePanelScope
+@SysUISingleton
 class MediaOutputInteractor
 @Inject
 constructor(
     private val localMediaRepositoryFactory: LocalMediaRepositoryFactory,
     private val packageManager: PackageManager,
-    @VolumePanelScope private val coroutineScope: CoroutineScope,
+    @Application private val coroutineScope: CoroutineScope,
     @Background private val backgroundCoroutineContext: CoroutineContext,
     mediaControllerRepository: MediaControllerRepository,
     private val mediaControllerInteractor: MediaControllerInteractor,
@@ -74,7 +75,7 @@
                     .onStart { emit(activeSessions) }
             }
             .map { getMediaControllers(it) }
-            .stateIn(coroutineScope, SharingStarted.Eagerly, MediaControllers(null, null))
+            .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), MediaControllers(null, null))
 
     /** [MediaDeviceSessions] that contains currently active sessions. */
     val activeMediaDeviceSessions: Flow<MediaDeviceSessions> =
@@ -85,7 +86,11 @@
                     remote = it.remote?.mediaDeviceSession()
                 )
             }
-            .stateIn(coroutineScope, SharingStarted.Eagerly, MediaDeviceSessions(null, null))
+            .stateIn(
+                coroutineScope,
+                SharingStarted.WhileSubscribed(),
+                MediaDeviceSessions(null, null)
+            )
 
     /** Returns the default [MediaDeviceSession] from [activeMediaDeviceSessions] */
     val defaultActiveMediaSession: StateFlow<Result<MediaDeviceSession?>> =
@@ -100,7 +105,7 @@
             }
             .wrapInResult()
             .flowOn(backgroundCoroutineContext)
-            .stateIn(coroutineScope, SharingStarted.Eagerly, Result.Loading())
+            .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), Result.Loading())
 
     private val localMediaRepository: Flow<LocalMediaRepository> =
         defaultActiveMediaSession
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
index 850162e..c18573e 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
@@ -32,9 +32,13 @@
 import dagger.assisted.AssistedInject
 import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.filterNotNull
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.launch
 
@@ -49,6 +53,7 @@
     private val uiEventLogger: UiEventLogger,
 ) : SliderViewModel {
 
+    private val volumeChanges = MutableStateFlow<Int?>(null)
     private val streamsAffectedByRing =
         setOf(
             AudioManager.STREAM_RING,
@@ -104,12 +109,17 @@
             }
             .stateIn(coroutineScope, SharingStarted.Eagerly, SliderState.Empty)
 
+    init {
+        volumeChanges
+            .filterNotNull()
+            .onEach { audioVolumeInteractor.setVolume(audioStream, it) }
+            .launchIn(coroutineScope)
+    }
+
     override fun onValueChanged(state: SliderState, newValue: Float) {
         val audioViewModel = state as? State
         audioViewModel ?: return
-        coroutineScope.launch {
-            audioVolumeInteractor.setVolume(audioStream, newValue.roundToInt())
-        }
+        volumeChanges.tryEmit(newValue.roundToInt())
     }
 
     override fun onValueChangeFinished() {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ui/binder/VolumeDialogMenuIconBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/ui/binder/VolumeDialogMenuIconBinder.kt
new file mode 100644
index 0000000..a352e28
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/ui/binder/VolumeDialogMenuIconBinder.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.volume.ui.binder
+
+import android.animation.ValueAnimator
+import android.graphics.drawable.Animatable2
+import android.widget.ImageView
+import androidx.core.animation.doOnEnd
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.common.ui.binder.IconViewBinder
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.statusbar.CrossFadeHelper
+import com.android.systemui.volume.ui.viewmodel.VolumeMenuIconViewModel
+import javax.inject.Inject
+import kotlin.coroutines.resume
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.suspendCancellableCoroutine
+
+/** Binds volume dialog menu button icon. */
+class VolumeDialogMenuIconBinder
+@Inject
+constructor(
+    @Application private val coroutineScope: CoroutineScope,
+    private val viewModel: VolumeMenuIconViewModel,
+) {
+
+    private var job: Job? = null
+
+    fun bind(iconImageView: ImageView?) {
+        job?.cancel()
+        job =
+            iconImageView?.let { imageView ->
+                coroutineScope.launch {
+                    viewModel.icon.collectLatest { icon ->
+                        animate { CrossFadeHelper.fadeOut(imageView, it) }
+                        IconViewBinder.bind(icon, imageView)
+                        if (icon is Icon.Loaded && icon.drawable is Animatable2) {
+                            icon.drawable.start()
+                        }
+                        animate { CrossFadeHelper.fadeIn(imageView, it) }
+                    }
+                }
+            }
+    }
+
+    private suspend fun animate(update: (value: Float) -> Unit) =
+        suspendCancellableCoroutine { continuation ->
+            val anim = ValueAnimator.ofFloat(0f, 1f)
+            anim.start()
+            anim.addUpdateListener { update(it.animatedValue as Float) }
+            anim.doOnEnd { continuation.resume(Unit) }
+            continuation.invokeOnCancellation {
+                anim.removeAllListeners()
+                anim.cancel()
+            }
+        }
+
+    fun destroy() {
+        job?.cancel()
+        job = null
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ui/viewmodel/VolumeMenuIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/ui/viewmodel/VolumeMenuIconViewModel.kt
new file mode 100644
index 0000000..0bd3adb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/ui/viewmodel/VolumeMenuIconViewModel.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.volume.ui.viewmodel
+
+import android.annotation.SuppressLint
+import android.content.Context
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.res.R
+import com.android.systemui.util.drawable.LoopedAnimatable2DrawableWrapper
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaDeviceSessionInteractor
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor
+import com.android.systemui.volume.panel.shared.model.filterData
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.distinctUntilChangedBy
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.mapLatest
+
+/** View Model that provides an icon for the menu button of the volume dialog. */
+interface VolumeMenuIconViewModel {
+
+    val icon: Flow<Icon>
+}
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SuppressLint("UseCompatLoadingForDrawables")
+class AnimatedVolumeMenuIconViewModel
+@Inject
+constructor(
+    @Application private val context: Context,
+    private val mediaOutputInteractor: MediaOutputInteractor,
+    private val mediaDeviceSessionInteractor: MediaDeviceSessionInteractor,
+) : VolumeMenuIconViewModel {
+
+    override val icon: Flow<Icon>
+        get() =
+            mediaOutputInteractor.defaultActiveMediaSession
+                .filterData()
+                .flatMapLatest { session ->
+                    if (session == null) {
+                        flowOf(null)
+                    } else {
+                        mediaDeviceSessionInteractor.playbackState(session)
+                    }
+                }
+                .distinctUntilChangedBy { it?.isActive }
+                .mapLatest { playbackState ->
+                    if (playbackState?.isActive == true) {
+                        Icon.Loaded(
+                            LoopedAnimatable2DrawableWrapper.fromDrawable(
+                                context.getDrawable(R.drawable.audio_bars_playing)!!
+                            ),
+                            null,
+                        )
+                    } else {
+                        Icon.Resource(R.drawable.horizontal_ellipsis, null)
+                    }
+                }
+}
+
+class StaticVolumeMenuIconViewModel @Inject constructor() : VolumeMenuIconViewModel {
+
+    override val icon: Flow<Icon> = flowOf(Icon.Resource(R.drawable.horizontal_ellipsis, null))
+}
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
index e073f7c..ec9b5cf 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
@@ -58,6 +58,7 @@
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.util.kotlin.JavaAdapter;
+import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
 import com.android.wm.shell.desktopmode.DesktopMode;
 import com.android.wm.shell.desktopmode.DesktopModeTaskRepository;
 import com.android.wm.shell.onehanded.OneHanded;
@@ -380,11 +381,13 @@
         mCommandQueue.addCallback(new CommandQueue.Callbacks() {
             @Override
             public void moveFocusedTaskToDesktop(int displayId) {
-                desktopMode.moveFocusedTaskToDesktop(displayId);
+                desktopMode.moveFocusedTaskToDesktop(displayId,
+                        DesktopModeTransitionSource.KEYBOARD_SHORTCUT);
             }
             @Override
             public void moveFocusedTaskToFullscreen(int displayId) {
-                desktopMode.moveFocusedTaskToFullscreen(displayId);
+                desktopMode.moveFocusedTaskToFullscreen(displayId,
+                        DesktopModeTransitionSource.KEYBOARD_SHORTCUT);
             }
             @Override
             public void moveFocusedTaskToStageSplit(int displayId, boolean leftOrTop) {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
index 5702a8c..69a6f2a 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
@@ -348,7 +348,8 @@
     fun listenForTransitionToAodFromGone_updatesClockDozeAmountToOne() =
         runBlocking(IMMEDIATE) {
             val transitionStep = MutableStateFlow(TransitionStep())
-            whenever(keyguardTransitionInteractor.transitionStepsToState(AOD))
+            whenever(keyguardTransitionInteractor
+                .transition(Edge.create(to = AOD)))
                 .thenReturn(transitionStep)
 
             val job = underTest.listenForAnyStateToAodTransition(this)
@@ -369,7 +370,8 @@
     fun listenForTransitionToLSFromOccluded_updatesClockDozeAmountToZero() =
         runBlocking(IMMEDIATE) {
             val transitionStep = MutableStateFlow(TransitionStep())
-            whenever(keyguardTransitionInteractor.transitionStepsToState(LOCKSCREEN))
+            whenever(keyguardTransitionInteractor
+                .transition(Edge.create(to = LOCKSCREEN)))
                 .thenReturn(transitionStep)
 
             val job = underTest.listenForAnyStateToLockscreenTransition(this)
@@ -390,7 +392,8 @@
     fun listenForTransitionToAodFromLockscreen_neverUpdatesClockDozeAmount() =
         runBlocking(IMMEDIATE) {
             val transitionStep = MutableStateFlow(TransitionStep())
-            whenever(keyguardTransitionInteractor.transitionStepsToState(AOD))
+            whenever(keyguardTransitionInteractor
+                .transition(Edge.create(to = AOD)))
                 .thenReturn(transitionStep)
 
             val job = underTest.listenForAnyStateToAodTransition(this)
@@ -411,7 +414,8 @@
     fun listenForAnyStateToLockscreenTransition_neverUpdatesClockDozeAmount() =
         runBlocking(IMMEDIATE) {
             val transitionStep = MutableStateFlow(TransitionStep())
-            whenever(keyguardTransitionInteractor.transitionStepsToState(LOCKSCREEN))
+            whenever(keyguardTransitionInteractor
+                .transition(Edge.create(to = LOCKSCREEN)))
                 .thenReturn(transitionStep)
 
             val job = underTest.listenForAnyStateToLockscreenTransition(this)
@@ -432,7 +436,8 @@
     fun listenForAnyStateToDozingTransition_UpdatesClockDozeAmountToOne() =
         runBlocking(IMMEDIATE) {
             val transitionStep = MutableStateFlow(TransitionStep())
-            whenever(keyguardTransitionInteractor.transitionStepsToState(DOZING))
+            whenever(keyguardTransitionInteractor
+                .transition(Edge.create(to = DOZING)))
                 .thenReturn(transitionStep)
 
             val job = underTest.listenForAnyStateToDozingTransition(this)
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerWithCoroutinesTest.kt
index 25a87b8..9580139 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerWithCoroutinesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerWithCoroutinesTest.kt
@@ -22,10 +22,6 @@
 import com.android.keyguard.LockIconView.ICON_LOCK
 import com.android.systemui.doze.util.getBurnInOffset
 import com.android.systemui.flags.Flags.LOCKSCREEN_WALLPAPER_DREAM_ENABLED
-import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
-import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
-import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED
-import com.android.systemui.keyguard.shared.model.TransitionStep
 import com.android.systemui.statusbar.StatusBarState
 import com.android.systemui.util.mockito.whenever
 import kotlinx.coroutines.Dispatchers
@@ -104,7 +100,7 @@
 
             // WHEN dozing updates
             mUnderTest.mIsDozingCallback.accept(true)
-            mUnderTest.mDozeTransitionCallback.accept(TransitionStep(LOCKSCREEN, AOD, 1f, FINISHED))
+            mUnderTest.mDozeTransitionCallback.accept(1f)
 
             // THEN the view's translation is updated to use the AoD burn-in offsets
             verify(mLockIconView).setTranslationY(burnInOffset.toFloat())
@@ -113,7 +109,7 @@
 
             // WHEN the device is no longer dozing
             mUnderTest.mIsDozingCallback.accept(false)
-            mUnderTest.mDozeTransitionCallback.accept(TransitionStep(AOD, LOCKSCREEN, 0f, FINISHED))
+            mUnderTest.mDozeTransitionCallback.accept(0f)
 
             // THEN the view is updated to NO translation (no burn-in offsets anymore)
             verify(mLockIconView).setTranslationY(0f)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/AccessibilityLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/accessibility/AccessibilityLoggerTest.kt
index deacac3..1ce21e77 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/AccessibilityLoggerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/AccessibilityLoggerTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.accessibility
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
@@ -34,7 +34,7 @@
 import org.mockito.junit.MockitoJUnit
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class AccessibilityLoggerTest : SysuiTestCase() {
     @JvmField @Rule val mockito = MockitoJUnit.rule()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/DisplayIdIndexSupplierTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/DisplayIdIndexSupplierTest.java
index 9cb4fb3..cb8cfc2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/DisplayIdIndexSupplierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/DisplayIdIndexSupplierTest.java
@@ -20,10 +20,10 @@
 import static org.junit.Assert.assertNotNull;
 
 import android.hardware.display.DisplayManager;
-import android.testing.AndroidTestingRunner;
 import android.view.Display;
 
 import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -33,7 +33,7 @@
 import org.junit.runner.RunWith;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DisplayIdIndexSupplierTest extends SysuiTestCase {
 
     private DisplayIdIndexSupplier<Object> mDisplayIdIndexSupplier;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/IMagnificationConnectionTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/IMagnificationConnectionTest.java
index 3164f8e..5bfb3cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/IMagnificationConnectionTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/IMagnificationConnectionTest.java
@@ -37,7 +37,6 @@
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Display;
 import android.view.accessibility.AccessibilityManager;
@@ -45,6 +44,7 @@
 import android.view.accessibility.IMagnificationConnectionCallback;
 import android.view.accessibility.IRemoteMagnificationAnimationCallback;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -67,7 +67,7 @@
  * {@link Magnification}
  */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class IMagnificationConnectionTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationGestureDetectorTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationGestureDetectorTest.java
index ad02179..7b06dd6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationGestureDetectorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationGestureDetectorTest.java
@@ -26,11 +26,11 @@
 
 import android.os.Handler;
 import android.os.SystemClock;
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewConfiguration;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MagnificationGestureDetectorTest extends SysuiTestCase {
 
     private static final float ACTION_DOWN_X = 100;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
index 1a88545..5be1180 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
@@ -58,7 +58,6 @@
 import android.graphics.Rect;
 import android.os.Handler;
 import android.os.SystemClock;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Choreographer;
 import android.view.MotionEvent;
@@ -71,6 +70,7 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.ImageView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -90,7 +90,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class MagnificationModeSwitchTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
index 9eead6a..d0f8e78 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
@@ -22,9 +22,9 @@
 import static org.mockito.Mockito.verify;
 
 import android.content.pm.ActivityInfo;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -40,7 +40,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 /** Tests the MagnificationSettingsController. */
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class MagnificationSettingsControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationTest.java
index bbdd805..ffba25c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationTest.java
@@ -40,13 +40,13 @@
 import android.graphics.Rect;
 import android.hardware.display.DisplayManager;
 import android.os.RemoteException;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Display;
 import android.view.accessibility.AccessibilityManager;
 import android.view.accessibility.IMagnificationConnection;
 import android.view.accessibility.IMagnificationConnectionCallback;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -64,7 +64,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class MagnificationTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java
index e81613e..8f9b7c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java
@@ -27,12 +27,12 @@
 
 import android.content.Context;
 import android.graphics.Point;
-import android.testing.AndroidTestingRunner;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MirrorWindowControlTest extends SysuiTestCase {
 
     @Mock WindowManager mWindowManager;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/ModeSwitchesControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/ModeSwitchesControllerTest.java
index 3c97423..6e94297 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/ModeSwitchesControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/ModeSwitchesControllerTest.java
@@ -21,11 +21,11 @@
 import android.content.pm.ActivityInfo;
 import android.hardware.display.DisplayManager;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Display;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -39,7 +39,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 /** Tests the ModeSwitchesController. */
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class ModeSwitchesControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/SecureSettingsContentObserverTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/SecureSettingsContentObserverTest.java
index 9c601a8..9222fc2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/SecureSettingsContentObserverTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/SecureSettingsContentObserverTest.java
@@ -21,8 +21,8 @@
 import android.app.ActivityManager;
 import android.content.Context;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -34,7 +34,7 @@
 import org.mockito.Mockito;
 
 /** Test for {@link SecureSettingsContentObserver}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class SecureSettingsContentObserverTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/SystemActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/SystemActionsTest.java
index c674294..f46b2f9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/SystemActionsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/SystemActionsTest.java
@@ -28,10 +28,10 @@
 import android.os.RemoteException;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.KeyEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -55,7 +55,7 @@
 
 @TestableLooper.RunWithLooper
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SystemActionsTest extends SysuiTestCase {
     @Mock
     private UserTracker mUserTracker;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
index cb42078..f57003e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -72,7 +72,6 @@
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableResources;
 import android.text.TextUtils;
@@ -90,6 +89,7 @@
 import android.view.accessibility.IRemoteMagnificationAnimationCallback;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
 
 import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -125,7 +125,7 @@
 
 @LargeTest
 @TestableLooper.RunWithLooper
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RequiresFlagsDisabled(Flags.FLAG_CREATE_WINDOWLESS_WINDOW_MAGNIFIER)
 public class WindowMagnificationControllerTest extends SysuiTestCase {
 
@@ -1511,4 +1511,4 @@
             });
         }
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerWindowlessMagnifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerWindowlessMagnifierTest.java
index 01e4d58..e272682 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerWindowlessMagnifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerWindowlessMagnifierTest.java
@@ -71,7 +71,6 @@
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableResources;
 import android.text.TextUtils;
@@ -94,6 +93,7 @@
 import android.window.InputTransferToken;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
 
 import com.android.systemui.Flags;
@@ -129,7 +129,7 @@
 
 @LargeTest
 @TestableLooper.RunWithLooper
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RequiresFlagsEnabled(Flags.FLAG_CREATE_WINDOWLESS_WINDOW_MAGNIFIER)
 public class WindowMagnificationControllerWindowlessMagnifierTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationFrameSizePrefsTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationFrameSizePrefsTest.java
index 93c0eea..ad9053a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationFrameSizePrefsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationFrameSizePrefsTest.java
@@ -23,10 +23,10 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.util.Size;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -37,7 +37,7 @@
 import org.junit.runner.RunWith;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class WindowMagnificationFrameSizePrefsTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
index 138fed2..003f7e4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
@@ -47,7 +47,6 @@
 import android.graphics.Rect;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.view.ViewGroup;
@@ -59,6 +58,7 @@
 import android.widget.LinearLayout;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -77,7 +77,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class WindowMagnificationSettingsTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
index aff52f5..c4a92bf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
@@ -18,8 +18,8 @@
 
 package com.android.systemui.accessibility.data.repository
 
-import android.testing.AndroidTestingRunner
 import android.view.accessibility.AccessibilityManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -37,7 +37,7 @@
 import org.mockito.junit.MockitoJUnit
 import org.mockito.junit.MockitoRule
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class AccessibilityRepositoryTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
index 095c945..b71739a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
@@ -30,11 +30,11 @@
 import android.hardware.display.DisplayManager;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.keyguard.KeyguardUpdateMonitor;
@@ -59,7 +59,7 @@
 import org.mockito.junit.MockitoRule;
 
 /** Test for {@link AccessibilityFloatingMenuController}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapterTest.java
index 630db62..b08f97a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapterTest.java
@@ -21,10 +21,10 @@
 import static org.mockito.Mockito.when;
 
 import android.graphics.drawable.Drawable;
-import android.testing.AndroidTestingRunner;
 import android.view.LayoutInflater;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.accessibility.dialog.AccessibilityTarget;
@@ -43,7 +43,7 @@
 
 /** Tests for {@link AccessibilityTargetAdapter}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AccessibilityTargetAdapterTest extends SysuiTestCase {
     @Mock
     private AccessibilityTarget mAccessibilityTarget;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AnnotationLinkSpanTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AnnotationLinkSpanTest.java
index 4b87588..5b2afe7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AnnotationLinkSpanTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AnnotationLinkSpanTest.java
@@ -20,10 +20,10 @@
 
 import static org.mockito.Mockito.mock;
 
-import android.testing.AndroidTestingRunner;
 import android.text.SpannableStringBuilder;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -37,7 +37,7 @@
 
 /** Tests for {@link AnnotationLinkSpan}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AnnotationLinkSpanTest extends SysuiTestCase {
 
     private AnnotationLinkSpan.LinkInfo mLinkInfo;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
index abc95bc..19b2700 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
@@ -22,11 +22,11 @@
 import android.annotation.NonNull;
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -46,7 +46,7 @@
 
 /** Tests for {@link DragToInteractAnimationController}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class DragToInteractAnimationControllerTest extends SysuiTestCase {
     private DragToInteractAnimationController mDragToInteractAnimationController;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipViewTest.java
index 34a2e87..b597737 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipViewTest.java
@@ -19,11 +19,11 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.res.Resources;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.WindowManager;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -35,7 +35,7 @@
 
 /** Tests for {@link MenuEduTooltipView}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class MenuEduTooltipViewTest extends SysuiTestCase {
     private MenuViewAppearance mMenuViewAppearance;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
index 1faa8ac..24f3a29 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
@@ -25,9 +25,9 @@
 
 import android.content.Context;
 import android.content.res.Configuration;
-import android.testing.AndroidTestingRunner;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -47,7 +47,7 @@
 import java.util.Locale;
 
 /** Tests for {@link MenuInfoRepository}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class MenuInfoRepositoryTest extends SysuiTestCase {
     @Rule
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
index 1f7d033..c5509ac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
@@ -30,7 +30,6 @@
 import android.graphics.Rect;
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
@@ -39,6 +38,7 @@
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -60,7 +60,7 @@
 /** Tests for {@link MenuItemAccessibilityDelegate}. */
 @SmallTest
 @TestableLooper.RunWithLooper
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MenuItemAccessibilityDelegateTest extends SysuiTestCase {
     @Rule
     public MockitoRule mockito = MockitoJUnit.rule();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
index 9e8c6b3..4373c88 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
@@ -30,7 +30,6 @@
 
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.MotionEvent;
 import android.view.WindowManager;
@@ -38,6 +37,7 @@
 
 import androidx.dynamicanimation.animation.DynamicAnimation;
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.accessibility.dialog.AccessibilityTarget;
@@ -62,7 +62,7 @@
 import java.util.List;
 
 /** Tests for {@link MenuListViewTouchHandler}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class MenuListViewTouchHandlerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuNotificationFactoryTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuNotificationFactoryTest.java
index 9dd337e..2746fef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuNotificationFactoryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuNotificationFactoryTest.java
@@ -19,8 +19,8 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.app.Notification;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -29,7 +29,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class MenuNotificationFactoryTest extends SysuiTestCase {
     private MenuNotificationFactory mMenuNotificationFactory;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
index 31824ec..bd1a7f0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
@@ -27,7 +27,6 @@
 import android.content.Context;
 import android.graphics.Insets;
 import android.graphics.Rect;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.view.ViewGroup;
@@ -36,6 +35,7 @@
 import android.view.WindowMetrics;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -50,7 +50,7 @@
 import org.mockito.junit.MockitoRule;
 
 /** Tests for {@link MenuViewLayerController}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class MenuViewLayerControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
index 05d7560..38095c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
@@ -61,7 +61,6 @@
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.util.ArraySet;
 import android.view.View;
@@ -72,6 +71,7 @@
 
 import androidx.dynamicanimation.animation.DynamicAnimation;
 import androidx.dynamicanimation.animation.SpringAnimation;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.accessibility.common.ShortcutConstants;
@@ -101,7 +101,7 @@
 import java.util.List;
 
 /** Tests for {@link MenuViewLayer}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class MenuViewLayerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
index f6288b6..103449b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
@@ -29,11 +29,11 @@
 import android.graphics.Rect;
 import android.graphics.drawable.GradientDrawable;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -53,7 +53,7 @@
 import org.mockito.junit.MockitoRule;
 
 /** Tests for {@link MenuView}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class MenuViewTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/PositionTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/PositionTest.java
index 05f306b..8fb71fa 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/PositionTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/PositionTest.java
@@ -18,8 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -29,7 +29,7 @@
 
 /** Tests for {@link Position}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PositionTest extends SysuiTestCase {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimatorTest.java
index d77a80a..f67e8d0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimatorTest.java
@@ -20,8 +20,8 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -35,7 +35,7 @@
 
 /** Tests for {@link RadiiAnimator}. */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RadiiAnimatorTest extends SysuiTestCase {
     float[] mResultRadii = new float[RadiiAnimator.RADII_COUNT];
     final AtomicBoolean mAnimationStarted = new AtomicBoolean(false);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt
index e371b39..0bd00fb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt
@@ -18,12 +18,12 @@
 import android.content.res.Configuration
 import android.os.Handler
 import android.provider.Settings
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.SeekBar
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.animation.DialogTransitionAnimator
@@ -58,7 +58,7 @@
 
 /** Tests for [FontScalingDialogDelegate]. */
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class FontScalingDialogDelegateTest : SysuiTestCase() {
     private lateinit var fontScalingDialogDelegate: FontScalingDialogDelegate
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesCheckerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesCheckerTest.java
new file mode 100644
index 0000000..51f6cdb
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesCheckerTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.accessibility.hearingaid;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+@SmallTest
+public class HearingDevicesCheckerTest extends SysuiTestCase {
+    @Rule
+    public MockitoRule mockito = MockitoJUnit.rule();
+
+    private final List<CachedBluetoothDevice> mCachedDevices = new ArrayList<>();
+    @Mock
+    private LocalBluetoothManager mLocalBluetoothManager;
+    @Mock
+    private LocalBluetoothAdapter mLocalBluetoothAdapter;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private BluetoothDevice mDevice;
+    private HearingDevicesChecker mDevicesChecker;
+
+    @Before
+    public void setUp() {
+        when(mLocalBluetoothManager.getBluetoothAdapter()).thenReturn(mLocalBluetoothAdapter);
+        when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
+                mCachedBluetoothDeviceManager);
+        when(mCachedBluetoothDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices);
+        when(mCachedDevice.getDevice()).thenReturn(mDevice);
+        when(mDevice.getMetadata(BluetoothDevice.METADATA_EXCLUSIVE_MANAGER)).thenReturn(
+                null);
+
+        mDevicesChecker = new HearingDevicesChecker(mContext, mLocalBluetoothManager);
+    }
+
+    @Test
+    public void isAnyPairedHearingDevice_bluetoothDisable_returnFalse() {
+        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(false);
+
+        assertThat(mDevicesChecker.isAnyPairedHearingDevice()).isFalse();
+    }
+
+    @Test
+    public void isAnyActiveHearingDevice_bluetoothDisable_returnFalse() {
+        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(false);
+
+        assertThat(mDevicesChecker.isAnyActiveHearingDevice()).isFalse();
+    }
+
+    @Test
+    public void isAnyPairedHearingDevice_hearingAidBonded_returnTrue() {
+        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(true);
+        when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        mCachedDevices.add(mCachedDevice);
+
+        assertThat(mDevicesChecker.isAnyPairedHearingDevice()).isTrue();
+    }
+
+    @Test
+    public void isAnyActiveHearingDevice_hearingAidActiveAndConnected_returnTrue() {
+        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(true);
+        when(mCachedDevice.isActiveDevice(BluetoothProfile.HEARING_AID)).thenReturn(true);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mDevice.isConnected()).thenReturn(true);
+        when(mCachedDevice.isConnectedHearingAidDevice()).thenReturn(true);
+        mCachedDevices.add(mCachedDevice);
+
+        assertThat(mDevicesChecker.isAnyActiveHearingDevice()).isTrue();
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegateTest.java
index 0db0de2..8f7dc7cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegateTest.java
@@ -39,11 +39,11 @@
 import android.os.Handler;
 import android.platform.test.annotations.EnableFlags;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.LinearLayout;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.bluetooth.BluetoothEventManager;
@@ -78,7 +78,7 @@
 import java.util.List;
 
 /** Tests for {@link HearingDevicesDialogDelegate}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HearingDevicesDialogDelegateTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManagerTest.java
index e9c742d..09aa2868 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogManagerTest.java
@@ -22,19 +22,17 @@
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothDevice;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.animation.DialogTransitionAnimator;
 import com.android.systemui.animation.Expandable;
 import com.android.systemui.statusbar.phone.SystemUIDialog;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -44,11 +42,8 @@
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /** Tests for {@link HearingDevicesDialogManager}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HearingDevicesDialogManagerTest extends SysuiTestCase {
@@ -56,7 +51,8 @@
     @Rule
     public MockitoRule mockito = MockitoJUnit.rule();
 
-    private final List<CachedBluetoothDevice> mCachedDevices = new ArrayList<>();
+    private final FakeExecutor mMainExecutor = new FakeExecutor(new FakeSystemClock());
+    private final FakeExecutor mBackgroundExecutor = new FakeExecutor(new FakeSystemClock());
     @Mock
     private Expandable mExpandable;
     @Mock
@@ -68,13 +64,7 @@
     @Mock
     private SystemUIDialog mDialog;
     @Mock
-    private LocalBluetoothManager mLocalBluetoothManager;
-    @Mock
-    private LocalBluetoothAdapter mLocalBluetoothAdapter;
-    @Mock
-    private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager;
-    @Mock
-    private CachedBluetoothDevice mCachedDevice;
+    private HearingDevicesChecker mDevicesChecker;
 
     private HearingDevicesDialogManager mManager;
 
@@ -82,36 +72,35 @@
     public void setUp() {
         when(mDialogFactory.create(anyBoolean())).thenReturn(mDialogDelegate);
         when(mDialogDelegate.createDialog()).thenReturn(mDialog);
-        when(mLocalBluetoothManager.getBluetoothAdapter()).thenReturn(mLocalBluetoothAdapter);
-        when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
-                mCachedBluetoothDeviceManager);
-        when(mCachedBluetoothDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices);
 
         mManager = new HearingDevicesDialogManager(
                 mDialogTransitionAnimator,
                 mDialogFactory,
-                mLocalBluetoothManager
+                mDevicesChecker,
+                mBackgroundExecutor,
+                mMainExecutor
         );
     }
 
     @Test
-    public void showDialog_bluetoothDisable_showPairNewDeviceTrue() {
-        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(false);
+    public void showDialog_existHearingDevice_showPairNewDeviceFalse() {
+        when(mDevicesChecker.isAnyPairedHearingDevice()).thenReturn(true);
 
         mManager.showDialog(mExpandable);
+        mBackgroundExecutor.runAllReady();
+        mMainExecutor.runAllReady();
 
-        verify(mDialogFactory).create(eq(true));
+        verify(mDialogFactory).create(eq(/* showPairNewDevice= */ false));
     }
 
     @Test
-    public void showDialog_containsHearingAid_showPairNewDeviceFalse() {
-        when(mLocalBluetoothAdapter.isEnabled()).thenReturn(true);
-        when(mCachedDevice.isHearingAidDevice()).thenReturn(true);
-        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
-        mCachedDevices.add(mCachedDevice);
+    public void showDialog_noHearingDevice_showPairNewDeviceTrue() {
+        when(mDevicesChecker.isAnyPairedHearingDevice()).thenReturn(false);
 
         mManager.showDialog(mExpandable);
+        mBackgroundExecutor.runAllReady();
+        mMainExecutor.runAllReady();
 
-        verify(mDialogFactory).create(eq(false));
+        verify(mDialogFactory).create(eq(/* showPairNewDevice= */ true));
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesListAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesListAdapterTest.java
index d16db65..9359adf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesListAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesListAdapterTest.java
@@ -20,9 +20,9 @@
 
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -41,7 +41,7 @@
 import java.util.List;
 
 /** Tests for {@link HearingDevicesListAdapter}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HearingDevicesListAdapterTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesToolItemParserTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesToolItemParserTest.java
index 7172923..17ce1dd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesToolItemParserTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/hearingaid/HearingDevicesToolItemParserTest.java
@@ -28,9 +28,9 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -48,7 +48,7 @@
 /**
  * Tests for {@link HearingDevicesToolItemParser}.
  */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HearingDevicesToolItemParserTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/InputSessionTest.java b/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/InputSessionTest.java
index 2f4999b..8fca557 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/InputSessionTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/InputSessionTest.java
@@ -24,13 +24,13 @@
 import static org.mockito.Mockito.when;
 
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Choreographer;
 import android.view.GestureDetector;
 import android.view.InputEvent;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -50,7 +50,7 @@
  * A test suite for exercising {@link InputSession}.
  */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper()
 public class InputSessionTest extends SysuiTestCase {
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/TouchMonitorTest.java b/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/TouchMonitorTest.java
index 358e8cb..4118c90 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/TouchMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ambient/touch/TouchMonitorTest.java
@@ -36,7 +36,6 @@
 import android.hardware.display.DisplayManager;
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.GestureDetector;
 import android.view.IWindowManager;
@@ -50,6 +49,7 @@
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.LifecycleRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.Flags;
@@ -79,7 +79,7 @@
 import java.util.stream.Stream;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class TouchMonitorTest extends SysuiTestCase {
     private KosmosJavaAdapter mKosmos;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
index 70a544c..9aaf295 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
@@ -9,7 +9,6 @@
 import android.graphics.Rect
 import android.os.Looper
 import android.platform.test.flag.junit.SetFlagsRule
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import android.view.IRemoteAnimationFinishedCallback
 import android.view.RemoteAnimationAdapter
@@ -20,6 +19,7 @@
 import android.widget.LinearLayout
 import android.window.RemoteTransition
 import android.window.TransitionFilter
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.shared.Flags
@@ -49,7 +49,7 @@
 import org.mockito.junit.MockitoJUnit
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper
 class ActivityTransitionAnimatorTest : SysuiTestCase() {
     private val transitionContainer = LinearLayout(mContext)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
index e3be3822..37f549a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
@@ -16,9 +16,9 @@
 
 package com.android.systemui.animation
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import androidx.core.animation.doOnEnd
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.FlakyTest
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
@@ -28,7 +28,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @RunWithLooper
 @FlakyTest(bugId = 302149604)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/DialogTransitionAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/DialogTransitionAnimatorTest.kt
index e14762cd..a60fb76 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/DialogTransitionAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/DialogTransitionAnimatorTest.kt
@@ -5,7 +5,6 @@
 import android.graphics.Color
 import android.graphics.drawable.ColorDrawable
 import android.os.Bundle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.ViewUtils
 import android.view.View
@@ -14,6 +13,7 @@
 import android.view.WindowManager
 import android.widget.FrameLayout
 import android.widget.LinearLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.jank.Cuj
 import com.android.internal.policy.DecorView
@@ -39,7 +39,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class DialogTransitionAnimatorTest : SysuiTestCase() {
     private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
index 5e1a8e1..ec42b7f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
@@ -20,14 +20,14 @@
 import android.graphics.fonts.Font
 import android.graphics.fonts.FontVariationAxis
 import android.graphics.text.TextRunShaper
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class FontInterpolatorTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/FontVariationUtilsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
index 070cad7..b0f81c0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/FontVariationUtilsTest.kt
@@ -1,6 +1,6 @@
 package com.android.systemui.animation
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import junit.framework.Assert
@@ -12,7 +12,7 @@
 private const val TAG_OPSZ = "opsz"
 private const val TAG_ROND = "ROND"
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class FontVariationUtilsTest : SysuiTestCase() {
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
index 42fcd54..e492c63 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
@@ -17,10 +17,10 @@
 package com.android.systemui.animation
 
 import android.os.HandlerThread
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.widget.FrameLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.systemui.SysuiTestCase
@@ -31,7 +31,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class GhostedViewTransitionAnimatorControllerTest : SysuiTestCase() {
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/TextAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/TextAnimatorTest.kt
index 263d375..6ba1715 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/TextAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/TextAnimatorTest.kt
@@ -19,10 +19,10 @@
 import android.animation.AnimatorListenerAdapter
 import android.animation.ValueAnimator
 import android.graphics.Typeface
-import android.testing.AndroidTestingRunner
 import android.text.Layout
 import android.text.StaticLayout
 import android.text.TextPaint
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -38,7 +38,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.`when`
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class TextAnimatorTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/TextInterpolatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/TextInterpolatorTest.kt
index f6fcd16..cca5f35 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/TextInterpolatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/TextInterpolatorTest.kt
@@ -22,12 +22,12 @@
 import android.graphics.Typeface
 import android.graphics.fonts.Font
 import android.graphics.fonts.FontFamily
-import android.testing.AndroidTestingRunner
 import android.text.Layout
 import android.text.StaticLayout
 import android.text.TextDirectionHeuristic
 import android.text.TextDirectionHeuristics
 import android.text.TextPaint
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -62,7 +62,7 @@
     typeface = Font.Builder(VF_FONT).setFontVariationSettings("'wght' 700").build().toTypeface()
 }
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class TextInterpolatorTest : SysuiTestCase() {
     lateinit var typefaceCache: TypefaceVariantCache
@@ -330,4 +330,4 @@
         Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also { draw(Canvas(it)) }!!
 
 private fun TextInterpolator.toBitmap(width: Int, height: Int) =
-        Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also { draw(Canvas(it)) }
\ No newline at end of file
+        Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also { draw(Canvas(it)) }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/TransitionAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/TransitionAnimatorTest.kt
index 259ece9..6c42662 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/TransitionAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/TransitionAnimatorTest.kt
@@ -18,6 +18,7 @@
 
 import android.animation.AnimatorSet
 import android.graphics.drawable.GradientDrawable
+import android.platform.test.annotations.MotionTest
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import androidx.test.ext.junit.rules.ActivityScenarioRule
@@ -44,6 +45,7 @@
 import platform.test.screenshot.PathConfig
 
 @SmallTest
+@MotionTest
 @RunWith(AndroidJUnit4::class)
 class TransitionAnimatorTest : SysuiTestCase() {
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
index c2e6db3..a8c3af9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
@@ -1,12 +1,12 @@
 package com.android.systemui.animation
 
 import android.animation.ObjectAnimator
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.view.ViewGroup
 import android.widget.LinearLayout
 import android.widget.RelativeLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.app.animation.Interpolators
 import com.android.systemui.SysuiTestCase
@@ -22,7 +22,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class
 ViewHierarchyAnimatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackAnimationSpecTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackAnimationSpecTest.kt
index 0ed84ea..4809d0e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackAnimationSpecTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackAnimationSpecTest.kt
@@ -2,6 +2,7 @@
 
 import android.util.DisplayMetrics
 import android.window.BackEvent
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.dpToPx
@@ -9,12 +10,11 @@
 import junit.framework.TestCase.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 private data class BackInput(val progressX: Float, val progressY: Float, val edge: Int)
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BackAnimationSpecTest : SysuiTestCase() {
     private var displayMetrics =
         DisplayMetrics().apply {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackTransformationTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackTransformationTest.kt
index 44a5467..d898d1c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackTransformationTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/back/BackTransformationTest.kt
@@ -1,6 +1,7 @@
 package com.android.systemui.animation.back
 
 import android.view.View
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.mock
@@ -8,13 +9,12 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
 import org.mockito.kotlin.whenever
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BackTransformationTest : SysuiTestCase() {
     private val targetView: View = mock()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/back/OnBackAnimationCallbackExtensionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/back/OnBackAnimationCallbackExtensionTest.kt
index 314abda..9548e29 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/back/OnBackAnimationCallbackExtensionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/back/OnBackAnimationCallbackExtensionTest.kt
@@ -2,6 +2,7 @@
 
 import android.util.DisplayMetrics
 import android.window.BackEvent
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.argumentCaptor
@@ -10,11 +11,10 @@
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mockito.verify
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class OnBackAnimationCallbackExtensionTest : SysuiTestCase() {
     private val onBackProgress: (BackTransformation) -> Unit = mock()
     private val onBackStart: (BackEvent) -> Unit = mock()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
index 0d464cf..476d6e3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
@@ -49,9 +49,9 @@
 import android.media.AudioRecordingConfiguration;
 import android.os.Looper;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.R;
@@ -75,7 +75,7 @@
 import java.util.Map;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class AppOpsControllerTest extends SysuiTestCase {
     private static final String TEST_PACKAGE_NAME = "test";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/assist/ui/DisplayUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/assist/ui/DisplayUtilsTest.java
index 4d582ab..828d367 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/assist/ui/DisplayUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/assist/ui/DisplayUtilsTest.java
@@ -21,8 +21,8 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -35,7 +35,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DisplayUtilsTest extends SysuiTestCase {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/battery/BatteryMeterViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/battery/BatteryMeterViewTest.kt
index 3c073d5..2bd0976 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/battery/BatteryMeterViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/battery/BatteryMeterViewTest.kt
@@ -17,9 +17,9 @@
 
 import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import android.widget.ImageView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.flags.Flags.FLAG_NEW_STATUS_BAR_ICONS
 import com.android.systemui.res.R
@@ -33,7 +33,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper
 class BatteryMeterViewTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
index 7c03d78..6dc4b10 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
@@ -19,9 +19,9 @@
 import android.graphics.Point
 import android.hardware.biometrics.BiometricSourceType
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import android.util.DisplayMetrics
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
 import com.android.keyguard.KeyguardUpdateMonitor
@@ -67,7 +67,7 @@
 
 @ExperimentalCoroutinesApi
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class AuthRippleControllerTest : SysuiTestCase() {
     private lateinit var staticMockSession: MockitoSession
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
index d2c6957..197cb84 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
@@ -33,9 +33,9 @@
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -53,7 +53,7 @@
 import java.util.concurrent.ExecutionException;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class BiometricNotificationDialogFactoryTest extends SysuiTestCase {
     @Rule
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationServiceTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationServiceTest.java
index a279d3e..20d9433 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationServiceTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/BiometricNotificationServiceTest.java
@@ -36,9 +36,9 @@
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Handler;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.keyguard.KeyguardUpdateMonitor;
@@ -58,7 +58,7 @@
 import java.util.Optional;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class BiometricNotificationServiceTest extends SysuiTestCase {
     @Rule
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsUtilsTest.java
index 5b6aee6..d26ccbc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsUtilsTest.java
@@ -23,6 +23,7 @@
 import android.hardware.fingerprint.FingerprintSensorProperties;
 import android.view.Surface;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -33,11 +34,10 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-@RunWith(JUnit4.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class UdfpsUtilsTest extends SysuiTestCase {
     @Rule
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
index b3e845f..d215047 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
@@ -29,6 +29,7 @@
 import android.hardware.biometrics.events.AuthenticationAcquiredInfo
 import android.hardware.biometrics.events.AuthenticationStartedInfo
 import android.hardware.biometrics.events.AuthenticationStoppedInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.shared.model.AuthenticationReason
@@ -46,7 +47,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.verify
 import org.mockito.junit.MockitoJUnit
@@ -54,7 +54,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BiometricStatusRepositoryTest : SysuiTestCase() {
     @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule()
     @Mock private lateinit var biometricManager: BiometricManager
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
index eae953e..d9b7161 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
@@ -21,6 +21,7 @@
 import android.view.Display.DEFAULT_DISPLAY
 import android.view.DisplayInfo
 import android.view.Surface
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.data.repository.DisplayStateRepository
@@ -42,12 +43,11 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mockito.spy
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class DisplayStateRepositoryTest : SysuiTestCase() {
     private val display = mock<Display>()
     private val testScope = TestScope(StandardTestDispatcher())
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
index f5e96c9..9c11405 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
@@ -26,6 +26,7 @@
 import android.hardware.face.FaceManager
 import android.hardware.face.FaceSensorPropertiesInternal
 import android.hardware.face.IFaceAuthenticatorsRegisteredCallback
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.shared.model.LockoutMode
@@ -46,7 +47,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mock
@@ -57,7 +57,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class FacePropertyRepositoryImplTest : SysuiTestCase() {
     companion object {
         private const val LOGICAL_CAMERA_ID_OUTER_FRONT = "0"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
index 6391986..0209ab8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
@@ -19,6 +19,7 @@
 import android.database.ContentObserver
 import android.os.Handler
 import android.provider.Settings.Secure.FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -35,7 +36,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentMatchers.anyBoolean
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.Mock
@@ -47,7 +47,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class FaceSettingsRepositoryImplTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
index 7808c41..ff5a419f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
@@ -23,6 +23,7 @@
 import android.hardware.fingerprint.FingerprintSensorProperties
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
 import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
@@ -38,7 +39,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mock
@@ -47,7 +47,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class FingerprintRepositoryImplTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
index 2682633..22971bc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.biometrics.data.repository
 
 import android.hardware.biometrics.PromptInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.AuthController
@@ -37,7 +38,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentMatchers.eq
 import org.mockito.Mock
 import org.mockito.Mockito.verify
@@ -51,7 +51,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PromptRepositoryImplTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
index 4cff3e6..5d2d20c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
@@ -19,6 +19,7 @@
 import android.app.ActivityManager
 import android.content.ComponentName
 import android.hardware.biometrics.BiometricFingerprintConstants
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.app.activityTaskManager
 import com.android.systemui.SysuiTestCase
@@ -37,13 +38,12 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mockito
 import org.mockito.Mockito.`when`
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BiometricStatusInteractorImplTest : SysuiTestCase() {
     private val kosmos = testKosmos()
     private lateinit var underTest: BiometricStatusInteractorImpl
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
index 8690d4e..4856f15 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
@@ -4,6 +4,7 @@
 import android.app.admin.DevicePolicyResourcesManager
 import android.content.pm.UserInfo
 import android.os.UserManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.widget.LockPatternUtils
 import com.android.internal.widget.LockscreenCredential
@@ -25,7 +26,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.ArgumentMatchers.anyLong
 import org.mockito.Mock
@@ -38,7 +38,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class CredentialInteractorImplTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
index 31bdde2..f40b6b0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
@@ -1,5 +1,6 @@
 package com.android.systemui.biometrics.domain.interactor
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
@@ -22,14 +23,13 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.verify
 import org.mockito.junit.MockitoJUnit
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class DisplayStateInteractorImplTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
index 3f83ce3..a58efd3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
@@ -19,6 +19,7 @@
 import android.hardware.biometrics.AuthenticateOptions
 import android.hardware.biometrics.IBiometricContextListener
 import android.hardware.biometrics.IBiometricContextListener.FoldState
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -40,12 +41,11 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.junit.MockitoJUnit
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class LogContextInteractorImplTest : SysuiTestCase() {
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
index c4d0d23..5a36376 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
@@ -3,6 +3,7 @@
 import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton
 import android.hardware.biometrics.PromptInfo
 import android.hardware.biometrics.PromptVerticalListContentView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.data.repository.FakePromptRepository
@@ -29,7 +30,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.junit.MockitoJUnit
 
 private const val USER_ID = 22
@@ -39,7 +39,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PromptCredentialInteractorTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
index 6e78e33..720f207 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
@@ -22,6 +22,7 @@
 import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton
 import android.hardware.biometrics.PromptInfo
 import android.hardware.biometrics.PromptVerticalListContentView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.widget.LockPatternUtils
 import com.android.systemui.SysuiTestCase
@@ -47,13 +48,12 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.junit.MockitoJUnit
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PromptSelectorInteractorImplTest : SysuiTestCase() {
     companion object {
         private const val TITLE = "hey there"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
index 5e7adb7..3d63c5b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
@@ -19,6 +19,7 @@
 import android.graphics.Rect
 import android.view.MotionEvent
 import android.view.Surface
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.AuthController
@@ -34,7 +35,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.Captor
@@ -44,7 +44,7 @@
 import org.mockito.junit.MockitoJUnit
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class UdfpsOverlayInteractorTest : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
index d10b935..1f6a8b8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
@@ -4,6 +4,7 @@
 import android.hardware.biometrics.PromptContentItemBulletedText
 import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton
 import android.hardware.biometrics.PromptVerticalListContentView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.fingerprintSensorPropertiesInternal
@@ -15,14 +16,13 @@
 import com.google.common.util.concurrent.MoreExecutors
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 private const val USER_ID = 2
 private const val OPERATION_ID = 8L
 private const val OP_PACKAGE_NAME = "biometric.testapp"
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BiometricPromptRequestTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/shared/model/BiometricModalitiesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/shared/model/BiometricModalitiesTest.kt
index 74c4313..4d8fafc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/shared/model/BiometricModalitiesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/shared/model/BiometricModalitiesTest.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.biometrics.shared.model
 
 import android.hardware.fingerprint.FingerprintSensorProperties
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.faceSensorPropertiesInternal
@@ -24,10 +25,9 @@
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class BiometricModalitiesTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/BoundingBoxOverlapDetectorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/BoundingBoxOverlapDetectorTest.kt
index 95b72d5..f9bedc9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/BoundingBoxOverlapDetectorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/BoundingBoxOverlapDetectorTest.kt
@@ -21,12 +21,13 @@
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+import platform.test.runner.parameterized.Parameter
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import org.junit.runners.Parameterized.Parameters
 
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 class BoundingBoxOverlapDetectorTest(val testCase: TestCase) : SysuiTestCase() {
     val underTest = BoundingBoxOverlapDetector(1f)
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/EllipseOverlapDetectorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/EllipseOverlapDetectorTest.kt
index 317141b..33ddbf1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/EllipseOverlapDetectorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/EllipseOverlapDetectorTest.kt
@@ -22,12 +22,13 @@
 import com.android.systemui.biometrics.EllipseOverlapDetectorParams
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+import platform.test.runner.parameterized.Parameter
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import org.junit.runners.Parameterized.Parameters
 
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 class EllipseOverlapDetectorTest(val testCase: TestCase) : SysuiTestCase() {
     val underTest =
         EllipseOverlapDetector(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/NormalizedTouchDataTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/NormalizedTouchDataTest.kt
index 3e5c43a..3863b3c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/NormalizedTouchDataTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/NormalizedTouchDataTest.kt
@@ -5,12 +5,13 @@
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+import platform.test.runner.parameterized.Parameter
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import org.junit.runners.Parameterized.Parameters
 
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 class NormalizedTouchDataTest(val testCase: TestCase) : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/SinglePointerTouchProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/SinglePointerTouchProcessorTest.kt
index aff93bd..a4653e7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/SinglePointerTouchProcessorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/udfps/SinglePointerTouchProcessorTest.kt
@@ -27,12 +27,13 @@
 import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+import platform.test.runner.parameterized.Parameter
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import org.junit.runners.Parameterized.Parameters
 
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 class SinglePointerTouchProcessorTest(val testCase: TestCase) : SysuiTestCase() {
     private val overlapDetector = FakeOverlapDetector()
     private val underTest = SinglePointerTouchProcessor(overlapDetector)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
index ec2b104..4238254 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
@@ -32,6 +32,7 @@
 import android.view.WindowMetrics
 import android.view.layoutInflater
 import android.view.windowManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.airbnb.lottie.LottieAnimationView
 import com.android.keyguard.keyguardUpdateMonitor
@@ -61,7 +62,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito
 import org.mockito.Mockito.any
@@ -76,7 +76,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class SideFpsOverlayViewBinderTest : SysuiTestCase() {
     private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
index 9e804c1..e4c5cd4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
@@ -1,5 +1,6 @@
 package com.android.systemui.biometrics.ui.viewmodel
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.data.repository.FakePromptRepository
@@ -19,7 +20,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 private const val USER_ID = 9
 private const val REQUEST_ID = 9L
@@ -27,7 +27,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class CredentialViewModelTest : SysuiTestCase() {
 
     private val dispatcher = UnconfinedTestDispatcher()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
index 1b6aaab..77ddd31 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.biometrics.ui.viewmodel
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
@@ -34,7 +35,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mockito.verify
@@ -42,7 +42,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class DeviceEntryUdfpsTouchOverlayViewModelTest : SysuiTestCase() {
     private val kosmos =
         testKosmos().apply {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptAuthStateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptAuthStateTest.kt
index 278a43e..3eb2ff3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptAuthStateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptAuthStateTest.kt
@@ -16,16 +16,16 @@
 
 package com.android.systemui.biometrics.ui.viewmodel
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.shared.model.BiometricModality
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PromptAuthStateTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptHistoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptHistoryImplTest.kt
index f9b590f..81132d7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptHistoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptHistoryImplTest.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.biometrics.ui.viewmodel
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.biometrics.shared.model.BiometricModality
@@ -23,10 +24,9 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PromptHistoryImplTest : SysuiTestCase() {
 
     private lateinit var history: PromptHistoryImpl
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
index f46cfdc..db6aba3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
@@ -86,10 +86,12 @@
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameter
+import platform.test.runner.parameterized.Parameters
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.ArgumentMatchers.eq
 import org.mockito.Mock
@@ -105,7 +107,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCase() {
 
     @JvmField @Rule var mockitoRule = MockitoJUnit.rule()
@@ -383,25 +385,11 @@
             }
 
             if (testCase.isFaceOnly) {
-                val shouldRepeatAnimation by collectLastValue(iconViewModel.shouldRepeatAnimation)
-                val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-                val lastPulseLightToDark by collectLastValue(iconViewModel.lastPulseLightToDark)
-
-                val expectedIconAsset =
-                    if (shouldPulseAnimation!!) {
-                        if (lastPulseLightToDark!!) {
-                            R.drawable.face_dialog_pulse_dark_to_light
-                        } else {
-                            R.drawable.face_dialog_pulse_light_to_dark
-                        }
-                    } else {
-                        R.drawable.face_dialog_pulse_dark_to_light
-                    }
+                val expectedIconAsset = R.raw.face_dialog_authenticating
                 assertThat(iconAsset).isEqualTo(expectedIconAsset)
                 assertThat(iconContentDescriptionId)
                     .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticating)
                 assertThat(shouldAnimateIconView).isEqualTo(true)
-                assertThat(shouldRepeatAnimation).isEqualTo(true)
             }
 
             if (testCase.isCoex) {
@@ -423,26 +411,11 @@
                     }
                 } else {
                     // implicit flow
-                    val shouldRepeatAnimation by
-                        collectLastValue(iconViewModel.shouldRepeatAnimation)
-                    val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-                    val lastPulseLightToDark by collectLastValue(iconViewModel.lastPulseLightToDark)
-
-                    val expectedIconAsset =
-                        if (shouldPulseAnimation!!) {
-                            if (lastPulseLightToDark!!) {
-                                R.drawable.face_dialog_pulse_dark_to_light
-                            } else {
-                                R.drawable.face_dialog_pulse_light_to_dark
-                            }
-                        } else {
-                            R.drawable.face_dialog_pulse_dark_to_light
-                        }
+                    val expectedIconAsset = R.raw.face_dialog_authenticating
                     assertThat(iconAsset).isEqualTo(expectedIconAsset)
                     assertThat(iconContentDescriptionId)
                         .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticating)
                     assertThat(shouldAnimateIconView).isEqualTo(true)
-                    assertThat(shouldRepeatAnimation).isEqualTo(true)
                 }
             }
         }
@@ -532,14 +505,9 @@
         }
 
         if (testCase.isFaceOnly) {
-            val shouldRepeatAnimation by collectLastValue(iconViewModel.shouldRepeatAnimation)
-            val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-
-            assertThat(shouldPulseAnimation!!).isEqualTo(false)
             assertThat(iconAsset).isEqualTo(R.drawable.face_dialog_dark_to_error)
             assertThat(iconContentDescriptionId).isEqualTo(R.string.keyguard_face_failed)
             assertThat(shouldAnimateIconView).isEqualTo(true)
-            assertThat(shouldRepeatAnimation).isEqualTo(false)
 
             // Clear error, go to idle
             errorJob.join()
@@ -548,7 +516,6 @@
             assertThat(iconContentDescriptionId)
                 .isEqualTo(R.string.biometric_dialog_face_icon_description_idle)
             assertThat(shouldAnimateIconView).isEqualTo(true)
-            assertThat(shouldRepeatAnimation).isEqualTo(false)
         }
 
         if (testCase.isCoex) {
@@ -631,15 +598,10 @@
 
             // If co-ex, using implicit flow (explicit flow always requires confirmation)
             if (testCase.isFaceOnly || testCase.isCoex) {
-                val shouldRepeatAnimation by collectLastValue(iconViewModel.shouldRepeatAnimation)
-                val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-
-                assertThat(shouldPulseAnimation!!).isEqualTo(false)
                 assertThat(iconAsset).isEqualTo(R.drawable.face_dialog_dark_to_checkmark)
                 assertThat(iconContentDescriptionId)
                     .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticated)
                 assertThat(shouldAnimateIconView).isEqualTo(true)
-                assertThat(shouldRepeatAnimation).isEqualTo(false)
             }
         }
     }
@@ -661,15 +623,10 @@
             )
 
             if (testCase.isFaceOnly) {
-                val shouldRepeatAnimation by collectLastValue(iconViewModel.shouldRepeatAnimation)
-                val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-
-                assertThat(shouldPulseAnimation!!).isEqualTo(false)
                 assertThat(iconAsset).isEqualTo(R.drawable.face_dialog_wink_from_dark)
                 assertThat(iconContentDescriptionId)
                     .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticated)
                 assertThat(shouldAnimateIconView).isEqualTo(true)
-                assertThat(shouldRepeatAnimation).isEqualTo(false)
             }
 
             // explicit flow because confirmation requested
@@ -711,15 +668,10 @@
             viewModel.confirmAuthenticated()
 
             if (testCase.isFaceOnly) {
-                val shouldRepeatAnimation by collectLastValue(iconViewModel.shouldRepeatAnimation)
-                val shouldPulseAnimation by collectLastValue(iconViewModel.shouldPulseAnimation)
-
-                assertThat(shouldPulseAnimation!!).isEqualTo(false)
                 assertThat(iconAsset).isEqualTo(R.drawable.face_dialog_dark_to_checkmark)
                 assertThat(iconContentDescriptionId)
                     .isEqualTo(R.string.biometric_dialog_face_icon_description_confirmed)
                 assertThat(shouldAnimateIconView).isEqualTo(true)
-                assertThat(shouldRepeatAnimation).isEqualTo(false)
             }
 
             // explicit flow because confirmation requested
@@ -1526,7 +1478,7 @@
 
     companion object {
         @JvmStatic
-        @Parameterized.Parameters(name = "{0}")
+        @Parameters(name = "{0}")
         fun data(): Collection<TestCase> = singleModalityTestCases + coexTestCases
 
         private val singleModalityTestCases =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
index b065393..3b2cf61 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
@@ -27,6 +27,7 @@
 import android.view.WindowInsets
 import android.view.WindowMetrics
 import android.view.windowManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.airbnb.lottie.model.KeyPath
 import com.android.keyguard.keyguardUpdateMonitor
@@ -62,7 +63,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
@@ -71,7 +71,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class SideFpsOverlayViewModelTest : SysuiTestCase() {
     private val kosmos = testKosmos()
     @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogDelegateTest.java
index 49f2043..7d4ee25 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogDelegateTest.java
@@ -28,11 +28,11 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.testing.UiEventLoggerFake;
@@ -58,7 +58,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class BroadcastDialogDelegateTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
index 8a1a082..4d7c499 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.bluetooth.qsdialog
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
 import com.android.dx.mockito.inline.extended.StaticMockitoSession
@@ -44,7 +44,7 @@
 
 @ExperimentalCoroutinesApi
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class AudioSharingInteractorTest : SysuiTestCase() {
     private val testDispatcher = UnconfinedTestDispatcher()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnInteractorTest.kt
index 4949716..ac5ceb8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnInteractorTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.bluetooth.qsdialog
 
 import android.bluetooth.BluetoothAdapter
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.LocalBluetoothManager
 import com.android.systemui.SysuiTestCase
@@ -39,7 +39,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class BluetoothAutoOnInteractorTest : SysuiTestCase() {
     @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
     private val testDispatcher = StandardTestDispatcher()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnRepositoryTest.kt
index 85e2a8d..b7b2be4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothAutoOnRepositoryTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.bluetooth.qsdialog
 
 import android.bluetooth.BluetoothAdapter
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.BluetoothEventManager
 import com.android.settingslib.bluetooth.LocalBluetoothManager
@@ -38,7 +38,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class BluetoothAutoOnRepositoryTest : SysuiTestCase() {
     @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
     private val testDispatcher = StandardTestDispatcher()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothStateInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothStateInteractorTest.kt
index 6fe7d86..993cac7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothStateInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothStateInteractorTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.bluetooth.qsdialog
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter
 import com.android.settingslib.bluetooth.LocalBluetoothManager
@@ -38,7 +38,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class BluetoothStateInteractorTest : SysuiTestCase() {
     @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
index 7215619..d01fac3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
@@ -17,7 +17,6 @@
 package com.android.systemui.bluetooth.qsdialog
 
 import android.graphics.drawable.Drawable
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.view.View
@@ -27,6 +26,7 @@
 import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
@@ -57,7 +57,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class BluetoothTileDialogDelegateTest : SysuiTestCase() {
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogRepositoryTest.kt
index 4aa6209..1f3dcac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogRepositoryTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.bluetooth.qsdialog
 
 import android.bluetooth.BluetoothAdapter
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager
@@ -35,7 +35,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class BluetoothTileDialogRepositoryTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
index 11f74c0..9abb85d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
@@ -18,11 +18,11 @@
 
 import android.bluetooth.BluetoothAdapter
 import android.platform.test.annotations.EnableFlags
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.view.View.GONE
 import android.view.View.VISIBLE
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
@@ -62,7 +62,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @EnableFlags(Flags.FLAG_BLUETOOTH_QS_TILE_DIALOG_AUTO_ON_TOGGLE)
 class BluetoothTileDialogViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorImplTest.kt
index 762137b..64bd742 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorImplTest.kt
@@ -16,8 +16,8 @@
 package com.android.systemui.bluetooth.qsdialog
 
 import android.bluetooth.BluetoothDevice
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
 import com.android.systemui.SysuiTestCase
@@ -39,7 +39,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @OptIn(ExperimentalCoroutinesApi::class)
 class DeviceItemActionInteractorImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemFactoryTest.kt
index 4bcd9a9..a27ccc6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemFactoryTest.kt
@@ -22,8 +22,8 @@
 import android.media.AudioManager
 import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
 import com.android.settingslib.flags.Flags
@@ -39,7 +39,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class DeviceItemFactoryTest : SysuiTestCase() {
     @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemInteractorTest.kt
index 2b4f950..7f7abaf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemInteractorTest.kt
@@ -20,8 +20,8 @@
 import android.bluetooth.BluetoothDevice
 import android.content.Context
 import android.media.AudioManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
 import com.android.settingslib.bluetooth.LocalBluetoothManager
@@ -43,7 +43,7 @@
 import org.mockito.junit.MockitoRule
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class DeviceItemInteractorTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
index 9a36678..d32d12c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/BouncerContentTest.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.bouncer.ui.composable
 
 import android.app.AlertDialog
+import android.platform.test.annotations.MotionTest
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
@@ -55,6 +56,7 @@
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
+@MotionTest
 class BouncerContentTest : SysuiTestCase() {
     private val deviceSpec = DeviceEmulationSpec(FoldableInner)
     private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/PatternBouncerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/PatternBouncerTest.kt
index 4f6f98e..2948c02 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/PatternBouncerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/composable/PatternBouncerTest.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.bouncer.ui.composable
 
+import android.platform.test.annotations.MotionTest
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
@@ -44,6 +45,7 @@
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
+@MotionTest
 class PatternBouncerTest : SysuiTestCase() {
     private val kosmos = testKosmos()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/helper/BouncerSceneLayoutTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/helper/BouncerSceneLayoutTest.kt
index ca95822..923687b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/helper/BouncerSceneLayoutTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/helper/BouncerSceneLayoutTest.kt
@@ -25,11 +25,13 @@
 import com.google.common.truth.Truth.assertThat
 import java.util.Locale
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameter
+import platform.test.runner.parameterized.Parameters
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 
 @SmallTest
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 class BouncerSceneLayoutTest : SysuiTestCase() {
 
     data object Phone :
@@ -79,7 +81,7 @@
 
     companion object {
         @JvmStatic
-        @Parameterized.Parameters(name = "{0}")
+        @Parameters(name = "{0}")
         fun testCases() =
             listOf(
                     Phone to
@@ -158,7 +160,7 @@
                 }
     }
 
-    @Parameterized.Parameter @JvmField var testCase: TestCase? = null
+    @Parameter @JvmField var testCase: TestCase? = null
 
     @Test
     fun calculateLayout() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastSenderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastSenderTest.kt
index 8e81727..1e9f855 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastSenderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastSenderTest.kt
@@ -20,7 +20,7 @@
 import android.content.Intent
 import android.os.Bundle
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.concurrency.FakeExecutor
@@ -34,7 +34,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class BroadcastSenderTest : SysuiTestCase() {
 
@@ -138,4 +138,4 @@
         verification.invoke()
         assertThat(wakeLock.isHeld).isFalse()
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/PendingRemovalStoreTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/PendingRemovalStoreTest.kt
index 43d2cb8..c693ecc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/PendingRemovalStoreTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/PendingRemovalStoreTest.kt
@@ -2,7 +2,7 @@
 
 import android.content.BroadcastReceiver
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
@@ -14,7 +14,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class PendingRemovalStoreTest : SysuiTestCase() {
 
@@ -78,4 +78,4 @@
         assertThat(store.isPendingRemoval(receiverOne, user)).isTrue()
         assertThat(store.isPendingRemoval(receiverTwo, user)).isFalse()
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt
index 582f301..d878352 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt
@@ -21,8 +21,8 @@
 import android.content.IntentFilter
 import android.os.Handler
 import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
@@ -43,7 +43,7 @@
 import org.mockito.MockitoAnnotations
 import java.util.concurrent.Executor
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @SmallTest
 class UserBroadcastDispatcherTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
index 669795b..bea0db6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
@@ -24,6 +24,7 @@
 import android.content.pm.ActivityInfo
 import android.content.pm.PackageManager
 import android.content.pm.ResolveInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.ActivityIntentHelper
 import com.android.systemui.SysuiTestCase
@@ -41,7 +42,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.any
 import org.mockito.Mockito.anyInt
@@ -50,7 +50,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class CameraGestureHelperTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraIntentsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraIntentsTest.kt
index 1e522fc..3494024 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraIntentsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraIntentsTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.camera
 
 import android.content.Intent
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import android.testing.AndroidTestingRunner
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
@@ -26,7 +26,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class CameraIntentsTest : SysuiTestCase() {
     companion object {
         val VALID_SECURE_INTENT = Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/charging/WiredChargingRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/charging/WiredChargingRippleControllerTest.kt
index 11756d5..034bab8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/charging/WiredChargingRippleControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/charging/WiredChargingRippleControllerTest.kt
@@ -17,11 +17,11 @@
 package com.android.systemui.charging
 
 import android.graphics.Rect
-import android.testing.AndroidTestingRunner
 import android.view.Surface
 import android.view.View
 import android.view.WindowManager
 import android.view.WindowMetrics
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.res.R
@@ -49,7 +49,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class WiredChargingRippleControllerTest : SysuiTestCase() {
     private lateinit var controller: WiredChargingRippleController
     @Mock private lateinit var commandRegistry: CommandRegistry
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java
index 6afbde0..88bfcf0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java
@@ -29,10 +29,10 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -58,7 +58,7 @@
 import java.util.Set;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BrightLineClassifierTest extends SysuiTestCase {
     private BrightLineFalsingManager mBrightLineFalsingManager;
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineFalsingManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineFalsingManagerTest.java
index 6e00b70..ec8cc4d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineFalsingManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineFalsingManagerTest.java
@@ -25,10 +25,10 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -53,7 +53,7 @@
 import java.util.Set;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BrightLineFalsingManagerTest extends SysuiTestCase {
     private BrightLineFalsingManager mBrightLineFalsingManager;
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/DiagonalClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/DiagonalClassifierTest.java
index 14dcd58..8e1be41 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/DiagonalClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/DiagonalClassifierTest.java
@@ -24,8 +24,8 @@
 
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.util.DeviceConfigProxyFake;
@@ -38,7 +38,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DiagonalClassifierTest extends ClassifierTest {
 
     // Next variable is not actually five, but is very close. 5 degrees is currently the value
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
index ab6d5b7..cbfecee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
@@ -21,8 +21,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.util.DeviceConfigProxyFake;
@@ -33,7 +33,7 @@
 import org.junit.runner.RunWith;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DistanceClassifierTest extends ClassifierTest {
 
     private FalsingDataProvider mDataProvider;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/DoubleTapClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/DoubleTapClassifierTest.java
index 2ceee6d..9289867 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/DoubleTapClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/DoubleTapClassifierTest.java
@@ -22,9 +22,9 @@
 import static org.mockito.ArgumentMatchers.anyList;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import org.junit.After;
@@ -38,7 +38,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DoubleTapClassifierTest extends ClassifierTest {
 
     private static final int TOUCH_SLOP = 100;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingA11yDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingA11yDelegateTest.kt
index 2c904e7..8e4bec3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingA11yDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingA11yDelegateTest.kt
@@ -16,10 +16,10 @@
 
 package com.android.systemui.classifier
 
-import android.testing.AndroidTestingRunner
 import android.view.View
 import android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK
 import android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Before
@@ -31,7 +31,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class FalsingA11yDelegateTest : SysuiTestCase() {
     @Mock lateinit var falsingCollector: FalsingCollector
     @Mock lateinit var view: View
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
index 5361cef..5d0bfd7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
@@ -25,11 +25,11 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.keyguard.KeyguardUpdateMonitor;
@@ -66,7 +66,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class FalsingCollectorImplTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java
index 057b0a1..49c6239 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java
@@ -25,11 +25,11 @@
 import static org.mockito.Mockito.when;
 
 import android.hardware.devicestate.DeviceStateManager.FoldStateListener;
-import android.testing.AndroidTestingRunner;
 import android.util.DisplayMetrics;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.classifier.FalsingDataProvider.GestureFinalizedListener;
@@ -46,7 +46,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FalsingDataProviderTest extends ClassifierTest {
 
     private FalsingDataProvider mDataProvider;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/HistoryTrackerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/HistoryTrackerTest.java
index 38355c7..8e19a1f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/HistoryTrackerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/HistoryTrackerTest.java
@@ -18,8 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -33,7 +33,7 @@
 import java.util.Collections;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class HistoryTrackerTest extends SysuiTestCase {
 
     private FakeSystemClock mSystemClock = new FakeSystemClock();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/PointerCountClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/PointerCountClassifierTest.java
index b8ea062..352a25c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/PointerCountClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/PointerCountClassifierTest.java
@@ -23,9 +23,9 @@
 import static org.mockito.ArgumentMatchers.anyDouble;
 import static org.mockito.ArgumentMatchers.anyInt;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import org.junit.After;
@@ -34,7 +34,7 @@
 import org.junit.runner.RunWith;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PointerCountClassifierTest extends ClassifierTest {
 
     private FalsingClassifier mClassifier;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/ProximityClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/ProximityClassifierTest.java
index 1c3922a..f965a11 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/ProximityClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/ProximityClassifierTest.java
@@ -24,9 +24,9 @@
 
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.plugins.FalsingManager;
@@ -40,7 +40,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ProximityClassifierTest extends ClassifierTest {
 
     private static final long NS_PER_MS = 1000000;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/SingleTapClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/SingleTapClassifierTest.java
index e3c800e..65e9088 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/SingleTapClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/SingleTapClassifierTest.java
@@ -20,9 +20,9 @@
 
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import org.junit.After;
@@ -36,7 +36,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SingleTapClassifierTest extends ClassifierTest {
 
     private static final int TOUCH_SLOP = 100;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/TimeLimitedInputEventBufferTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/TimeLimitedInputEventBufferTest.java
index ad7afa3..9a27f38 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/TimeLimitedInputEventBufferTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/TimeLimitedInputEventBufferTest.java
@@ -19,11 +19,11 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-import android.testing.AndroidTestingRunner;
 import android.view.InputEvent;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -35,7 +35,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TimeLimitedInputEventBufferTest extends SysuiTestCase {
 
     private static final long MAX_AGE_MS = 100;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
index 588edb7..80c44e2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
@@ -33,8 +33,8 @@
 
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import org.junit.Before;
@@ -44,7 +44,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TypeClassifierTest extends ClassifierTest {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/ZigZagClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/ZigZagClassifierTest.java
index ae2b8bb..1fe7268 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/ZigZagClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/ZigZagClassifierTest.java
@@ -20,8 +20,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.util.DeviceConfigProxyFake;
@@ -34,7 +34,7 @@
 import java.util.Random;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ZigZagClassifierTest extends ClassifierTest {
 
     private FalsingClassifier mClassifier;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardModelTest.kt
index c0dada4..5d76e32 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardModelTest.kt
@@ -22,8 +22,8 @@
 import android.graphics.Bitmap
 import android.net.Uri
 import android.os.PersistableBundle
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.whenever
 import java.io.IOException
diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt b/packages/SystemUI/tests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
index d552c9d..de07cda 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
@@ -14,7 +14,7 @@
 
 package com.android.systemui.common.coroutine
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -28,7 +28,7 @@
 /** atest SystemUITests:CoroutineResultTest */
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class CoroutineResultTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt
index 2f4fc96..bb400f2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt
@@ -18,6 +18,7 @@
 package com.android.systemui.common.ui.view
 
 import android.view.ViewConfiguration
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.common.ui.view.LongPressHandlingViewInteractionHandler.MotionEventModel
@@ -33,7 +34,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
@@ -41,7 +41,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class LongPressHandlingViewInteractionHandlerTest : SysuiTestCase() {
 
     @Mock private lateinit var postDelayed: (Runnable, Long) -> DisposableHandle
diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java
index 4c4205e..cecb525 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java
@@ -25,12 +25,12 @@
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.SeekBar;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -49,7 +49,7 @@
  * Tests for {@link SeekBarWithIconButtonsView}
  */
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationCollectionLiveDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationCollectionLiveDataTest.java
index 288f3b6..ed21474 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationCollectionLiveDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationCollectionLiveDataTest.java
@@ -21,10 +21,10 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
 import androidx.lifecycle.Observer;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -48,7 +48,7 @@
 import java.util.HashSet;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class ComplicationCollectionLiveDataTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
index c43df17..dd3f991 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
@@ -24,13 +24,13 @@
 
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.Observer;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -51,7 +51,7 @@
 import java.util.HashSet;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationHostViewControllerTest extends SysuiTestCase {
     @Mock
     ConstraintLayout mComplicationHostView;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
index baaeee1..383e0fa 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
@@ -22,10 +22,10 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 
 import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -48,7 +48,7 @@
 import java.util.stream.Collectors;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationLayoutEngineTest extends SysuiTestCase {
     @Mock
     ConstraintLayout mLayout;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutParamsTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutParamsTest.java
index a23e9e4..12cb8a6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutParamsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationLayoutParamsTest.java
@@ -21,8 +21,8 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -36,7 +36,7 @@
 import java.util.function.Consumer;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationLayoutParamsTest extends SysuiTestCase {
     /**
      * Ensures ComplicationLayoutParams cannot be constructed with improper position or direction.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationTypesUpdaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationTypesUpdaterTest.java
index 8cd23b2..d728517 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationTypesUpdaterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationTypesUpdaterTest.java
@@ -25,8 +25,8 @@
 import android.database.ContentObserver;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.dream.DreamBackend;
@@ -50,7 +50,7 @@
 import java.util.HashSet;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationTypesUpdaterTest extends SysuiTestCase {
     @Mock
     private Context mContext;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationUtilsTest.java
index e23e1f4..1e80233 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationUtilsTest.java
@@ -29,8 +29,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.dream.DreamBackend;
@@ -45,7 +45,7 @@
 import java.util.Set;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationUtilsTest extends SysuiTestCase {
     @Test
     public void testConvertComplicationType() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationViewModelTransformerTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationViewModelTransformerTest.java
index 09675e2..98b119a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationViewModelTransformerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/ComplicationViewModelTransformerTest.java
@@ -21,9 +21,9 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 
 import androidx.lifecycle.ViewModel;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -38,7 +38,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ComplicationViewModelTransformerTest extends SysuiTestCase {
     @Mock
     ComplicationViewModelComponent.Factory mFactory;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
index b9aa4c6..22ab499 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
@@ -23,9 +23,9 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -42,7 +42,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DreamClockTimeComplicationTest extends SysuiTestCase {
     @SuppressWarnings("HidingField")
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamHomeControlsComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamHomeControlsComplicationTest.java
index 18bd960b..ddf69b5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamHomeControlsComplicationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamHomeControlsComplicationTest.java
@@ -29,9 +29,9 @@
 
 import android.content.ComponentName;
 import android.content.res.Resources;
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -62,7 +62,7 @@
 import java.util.Optional;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DreamHomeControlsComplicationTest extends SysuiTestCase {
     @Mock
     private DreamHomeControlsComplication mComplication;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamMediaEntryComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamMediaEntryComplicationTest.java
index 05b4a41..3a856a0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/DreamMediaEntryComplicationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/DreamMediaEntryComplicationTest.java
@@ -26,10 +26,10 @@
 
 import android.app.PendingIntent;
 import android.content.Intent;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.ActivityIntentHelper;
@@ -51,7 +51,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class DreamMediaEntryComplicationTest extends SysuiTestCase {
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/complication/SmartSpaceComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/complication/SmartSpaceComplicationTest.java
index 87de865..6c354ef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/complication/SmartSpaceComplicationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/complication/SmartSpaceComplicationTest.java
@@ -24,9 +24,9 @@
 import static org.mockito.Mockito.when;
 
 import android.app.smartspace.SmartspaceTarget;
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -52,7 +52,7 @@
 import java.util.Set;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SmartSpaceComplicationTest extends SysuiTestCase {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/compose/ComposeInitializerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/compose/ComposeInitializerTest.kt
index 03e4f9a..c2fe009 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/compose/ComposeInitializerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/compose/ComposeInitializerTest.kt
@@ -17,10 +17,10 @@
 package com.android.systemui.compose
 
 import android.content.Context
-import android.testing.AndroidTestingRunner
 import android.testing.ViewUtils
 import android.widget.FrameLayout
 import androidx.compose.ui.platform.ComposeView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -28,7 +28,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ComposeInitializerTest : SysuiTestCase() {
     @Test
     fun testCanAddComposeViewInInitializedWindow() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/CustomIconCacheTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/CustomIconCacheTest.kt
index 4d0f2ed..28e0cff 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/CustomIconCacheTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/CustomIconCacheTest.kt
@@ -18,7 +18,7 @@
 
 import android.content.ComponentName
 import android.graphics.drawable.Icon
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertNull
@@ -30,7 +30,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class CustomIconCacheTest : SysuiTestCase() {
 
     companion object {
@@ -98,4 +98,4 @@
 
         assertNull(customIconCache.retrieve(TEST_COMPONENT1, CONTROL_ID_1))
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt
index 129fe9a..8d6e3a0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/AuxiliaryPersistenceWrapperTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.controls.controller
 
 import android.content.ComponentName
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
@@ -37,7 +37,7 @@
 import java.io.File
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class AuxiliaryPersistenceWrapperTest : SysuiTestCase() {
 
     companion object {
@@ -128,4 +128,4 @@
 
         verify(persistenceWrapper, never()).storeFavorites(ArgumentMatchers.anyList())
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
index 6cc3ef19..9285146 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.controls.ui
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import android.testing.AndroidTestingRunner
 import android.view.HapticFeedbackConstants
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.BroadcastSender
@@ -48,7 +48,7 @@
 import java.util.Optional
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlActionCoordinatorImplTest : SysuiTestCase() {
     @Mock
     private lateinit var vibratorHelper: VibratorHelper
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
index 724c9d1..ed0c7ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
@@ -24,7 +24,7 @@
 import android.service.controls.DeviceTypes
 import android.service.controls.IControlsSubscriber
 import android.service.controls.IControlsSubscription
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.settings.UserTracker
@@ -49,7 +49,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsBindingControllerImplTest : SysuiTestCase() {
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
index de455f63..cf385e7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
@@ -26,7 +26,7 @@
 import android.service.controls.Control
 import android.service.controls.DeviceTypes
 import android.service.controls.actions.ControlAction
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.backup.BackupHelper
@@ -74,7 +74,7 @@
 import java.util.function.Consumer
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsControllerImplTest : SysuiTestCase() {
     private val kosmos = testKosmos()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt
index 690b9a7..afa5cec 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapperTest.kt
@@ -18,7 +18,7 @@
 
 import android.content.ComponentName
 import android.service.controls.DeviceTypes
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.concurrency.FakeExecutor
@@ -32,7 +32,7 @@
 import java.io.File
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsFavoritePersistenceWrapperTest : SysuiTestCase() {
 
     private lateinit var file: File
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
index b5d3476..f9c2c6b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
@@ -26,7 +26,7 @@
 import android.service.controls.IControlsSubscriber
 import android.service.controls.actions.ControlAction
 import android.service.controls.actions.ControlActionWrapper
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.concurrency.FakeExecutor
@@ -57,7 +57,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsProviderLifecycleManagerTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsTileResourceConfigurationImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsTileResourceConfigurationImplTest.kt
index 581e88b..e04ce45 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsTileResourceConfigurationImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsTileResourceConfigurationImplTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.controls.controller
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -25,7 +25,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class ControlsTileResourceConfigurationImplTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt
index 2283746..b6ea62e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/DeletionJobServiceTest.kt
@@ -19,7 +19,7 @@
 import android.app.job.JobParameters
 import android.content.Context
 import android.os.PersistableBundle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.controller.AuxiliaryPersistenceWrapper.DeletionJobService.Companion.USER
@@ -37,7 +37,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class DeletionJobServiceTest : SysuiTestCase() {
 
     @Mock private lateinit var context: Context
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/PackageUpdateMonitorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/PackageUpdateMonitorTest.kt
index 85d6211..282ea5c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/PackageUpdateMonitorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/PackageUpdateMonitorTest.kt
@@ -20,7 +20,7 @@
 import android.content.pm.PackageManager
 import android.os.Handler
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.any
@@ -39,7 +39,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class PackageUpdateMonitorTest : SysuiTestCase() {
 
     @Mock private lateinit var context: Context
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ServiceWrapperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ServiceWrapperTest.kt
index 789d6df..b5c6c53 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ServiceWrapperTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ServiceWrapperTest.kt
@@ -23,7 +23,7 @@
 import android.service.controls.IControlsSubscription
 import android.service.controls.actions.ControlAction
 import android.service.controls.actions.ControlActionWrapper
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
@@ -42,7 +42,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ServiceWrapperTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/StatefulControlSubscriberTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/StatefulControlSubscriberTest.kt
index 267520e..7d197f7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/StatefulControlSubscriberTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/StatefulControlSubscriberTest.kt
@@ -20,7 +20,7 @@
 import android.os.Binder
 import android.service.controls.Control
 import android.service.controls.IControlsSubscription
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.concurrency.FakeExecutor
@@ -36,7 +36,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class StatefulControlSubscriberTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
index 54f66dc..844cc1f1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.controls.dagger
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.widget.LockPatternUtils
 import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsComponentTest : SysuiTestCase() {
 
     @Mock private lateinit var controller: ControlsController
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/AllModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/AllModelTest.kt
index 4ea9616..5528f65 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/AllModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/AllModelTest.kt
@@ -19,7 +19,7 @@
 import android.app.PendingIntent
 import android.content.ComponentName
 import android.service.controls.Control
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.ControlStatus
@@ -37,7 +37,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class AllModelTest : SysuiTestCase() {
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/AppAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/AppAdapterTest.kt
index 226ef3b..56c7c85 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/AppAdapterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/AppAdapterTest.kt
@@ -18,10 +18,10 @@
 
 import android.content.ComponentName
 import android.content.res.Resources
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.view.View
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.core.lifecycle.Lifecycle
 import com.android.systemui.SysuiTestCase
@@ -45,7 +45,7 @@
 import java.text.Collator
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class AppAdapterTest : SysuiTestCase() {
     private val fakeSystemClock = FakeSystemClock()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsEditingActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsEditingActivityTest.kt
index 2a4524b..39e1e1d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsEditingActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsEditingActivityTest.kt
@@ -3,12 +3,12 @@
 import android.content.ComponentName
 import android.content.Intent
 import android.os.Bundle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.widget.Button
 import android.window.OnBackInvokedCallback
 import android.window.OnBackInvokedDispatcher
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
 import com.android.systemui.res.R
@@ -33,7 +33,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsEditingActivityTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsFavoritingActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsFavoritingActivityTest.kt
index 88d36af..f5616d4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsFavoritingActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsFavoritingActivityTest.kt
@@ -4,12 +4,12 @@
 import android.content.Intent
 import android.os.Bundle
 import android.service.controls.Control
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.widget.Button
 import android.window.OnBackInvokedCallback
 import android.window.OnBackInvokedDispatcher
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.FlakyTest
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsFavoritingActivityTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
index 6361e94..e4f0910 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
@@ -28,7 +28,7 @@
 import android.os.Bundle
 import android.os.UserHandle
 import android.service.controls.ControlsProviderService
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.applications.ServiceListing
 import com.android.systemui.res.R
@@ -65,7 +65,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsListingControllerImplTest : SysuiTestCase() {
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsProviderSelectorActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsProviderSelectorActivityTest.kt
index d17495f..7698520 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsProviderSelectorActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsProviderSelectorActivityTest.kt
@@ -23,10 +23,10 @@
 import android.content.pm.ServiceInfo
 import android.graphics.drawable.Drawable
 import android.os.Bundle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.window.OnBackInvokedCallback
 import android.window.OnBackInvokedDispatcher
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
 import com.android.systemui.SysuiTestCase
@@ -65,7 +65,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsProviderSelectorActivityTest : SysuiTestCase() {
     @Main private val executor: Executor = MoreExecutors.directExecutor()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
index ca970bb..5008927 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
@@ -25,9 +25,9 @@
 import android.service.controls.Control
 import android.service.controls.ControlsProviderService
 import android.service.controls.DeviceTypes
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import androidx.lifecycle.Lifecycle
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.rule.ActivityTestRule
 import com.android.systemui.SysuiTestCase
@@ -53,7 +53,7 @@
 import java.util.concurrent.Executor
 
 @MediumTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsRequestDialogTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestReceiverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestReceiverTest.kt
index ae77d1f..c49867a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestReceiverTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestReceiverTest.kt
@@ -30,7 +30,7 @@
 import android.os.UserHandle
 import android.service.controls.Control
 import android.service.controls.ControlsProviderService
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
@@ -49,7 +49,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsRequestReceiverTest : SysuiTestCase() {
 
     @Mock
@@ -266,4 +266,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoritesModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoritesModelTest.kt
index f0003ed..281addc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoritesModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoritesModelTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.controls.management
 
 import android.content.ComponentName
-import android.testing.AndroidTestingRunner
 import androidx.recyclerview.widget.RecyclerView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.ControlInterface
@@ -43,7 +43,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class FavoritesModelTest : SysuiTestCase() {
 
     companion object {
@@ -299,4 +299,4 @@
     }
 
     private fun getDividerPosition(): Int = model.elements.indexOf(dividerWrapper)
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/PanelConfirmationDialogFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/PanelConfirmationDialogFactoryTest.kt
index 7f0ea9a..d8aac10 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/PanelConfirmationDialogFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/PanelConfirmationDialogFactoryTest.kt
@@ -19,7 +19,7 @@
 
 import android.content.Context
 import android.content.DialogInterface
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.res.R
@@ -39,7 +39,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class PanelConfirmationDialogFactoryTest : SysuiTestCase() {
 
     @Mock private lateinit var mockDialog : SystemUIDialog
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/panels/AuthorizedPanelsRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/panels/AuthorizedPanelsRepositoryImplTest.kt
index 18ce4a8..fd4c681 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/panels/AuthorizedPanelsRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/panels/AuthorizedPanelsRepositoryImplTest.kt
@@ -19,7 +19,7 @@
 
 import android.content.SharedPreferences
 import android.content.pm.UserInfo
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -37,7 +37,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class AuthorizedPanelsRepositoryImplTest : SysuiTestCase() {
     val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
index a7e7ba9..86e3481 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
@@ -19,7 +19,7 @@
 import android.content.ComponentName
 import android.content.SharedPreferences
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -43,7 +43,7 @@
 import org.mockito.MockitoAnnotations
 
 @ExperimentalCoroutinesApi
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class SelectedComponentRepositoryTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
index 154c373..aee334f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
@@ -22,8 +22,8 @@
 import android.database.ContentObserver
 import android.provider.Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS
 import android.provider.Settings.Secure.LOCKSCREEN_SHOW_CONTROLS
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.settings.ControlsSettingsDialogManager.Companion.PREFS_SETTINGS_DIALOG_ATTEMPTS
@@ -52,7 +52,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsSettingsDialogManagerImplTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
index b904ac1..3bdd5cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
@@ -19,6 +19,7 @@
 
 import android.content.pm.UserInfo
 import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.user.data.repository.FakeUserRepository
@@ -33,10 +34,9 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 @OptIn(ExperimentalCoroutinesApi::class)
 class ControlsSettingsRepositoryImplTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/start/ControlsStartableTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
index c44429b..9e8914a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
@@ -26,7 +26,7 @@
 import android.content.pm.ServiceInfo
 import android.os.UserHandle
 import android.os.UserManager
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.BroadcastDispatcher
@@ -75,7 +75,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsStartableTest : SysuiTestCase() {
 
     private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/CanUseIconPredicateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/CanUseIconPredicateTest.kt
index bfdb923..193ce21 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/CanUseIconPredicateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/CanUseIconPredicateTest.kt
@@ -21,7 +21,7 @@
 import android.graphics.drawable.Icon
 import android.net.Uri
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -29,7 +29,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class CanUseIconPredicateTest : SysuiTestCase() {
 
     private companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlViewHolderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlViewHolderTest.kt
index 101b8ed..4b30fa5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlViewHolderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlViewHolderTest.kt
@@ -24,11 +24,11 @@
 import android.service.controls.Control
 import android.service.controls.DeviceTypes
 import android.service.controls.templates.ControlTemplate
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -44,7 +44,7 @@
 import org.mockito.Mockito.mock
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlViewHolderTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt
index e279d28..03aa622 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt
@@ -19,8 +19,8 @@
 import android.content.Intent
 import android.content.res.Configuration
 import android.service.dreams.IDreamManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
 import com.android.systemui.SysuiTestCase
@@ -39,7 +39,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsActivityTest : SysuiTestCase() {
     @Mock private lateinit var uiController: ControlsUiController
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsDialogsFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsDialogsFactoryTest.kt
index 38c6a0e..ca33f16 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsDialogsFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsDialogsFactoryTest.kt
@@ -18,7 +18,7 @@
 package com.android.systemui.controls.ui
 
 import android.content.Context
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -36,7 +36,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ControlsDialogsFactoryTest : SysuiTestCase() {
 
     private companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsPopupMenuTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsPopupMenuTest.kt
index 48e3962..66303eb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsPopupMenuTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsPopupMenuTest.kt
@@ -19,12 +19,12 @@
 import android.app.Activity
 import android.graphics.Color
 import android.graphics.drawable.ShapeDrawable
-import android.testing.AndroidTestingRunner
 import android.util.DisplayMetrics
 import android.view.View
 import android.view.ViewGroup
 import android.widget.PopupWindow.OnDismissListener
 import androidx.test.ext.junit.rules.ActivityScenarioRule
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -43,7 +43,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 open class ControlsPopupMenuTest : SysuiTestCase() {
 
     private companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt
index 8f3813d..20890a7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt
@@ -26,13 +26,13 @@
 import android.os.UserHandle
 import android.service.controls.ControlsProviderService
 import android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.util.AttributeSet
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.FrameLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.ControlsMetricsLogger
@@ -83,7 +83,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ControlsUiControllerImplTest : SysuiTestCase() {
     private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/DetailDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/DetailDialogTest.kt
index 677108c..10b3ce3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/DetailDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/DetailDialogTest.kt
@@ -19,9 +19,9 @@
 import android.app.ActivityOptions
 import android.app.PendingIntent
 import android.content.Context
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import androidx.test.ext.junit.rules.ActivityScenarioRule
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.activity.EmptyTestActivity
@@ -44,7 +44,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class DetailDialogTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/OverflowMenuAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/OverflowMenuAdapterTest.kt
index 483ab3b..6092b8c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/OverflowMenuAdapterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/OverflowMenuAdapterTest.kt
@@ -17,7 +17,7 @@
 
 package com.android.systemui.controls.ui
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -25,7 +25,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class OverflowMenuAdapterTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/PanelTaskViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/PanelTaskViewControllerTest.kt
index 021facc..de2d852 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/PanelTaskViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/PanelTaskViewControllerTest.kt
@@ -25,8 +25,8 @@
 import android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK
 import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
 import android.graphics.Rect
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.boundsOnScreen
@@ -49,7 +49,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class PanelTaskViewControllerTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/SelectionItemTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/SelectionItemTest.kt
index 57176f0..4579807 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/SelectionItemTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/SelectionItemTest.kt
@@ -1,7 +1,7 @@
 package com.android.systemui.controls.ui
 
 import android.content.ComponentName
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.controls.controller.StructureInfo
@@ -11,7 +11,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class SelectionItemTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ToggleRangeTemplateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ToggleRangeTemplateTest.kt
index 31e0954..9f4836a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ToggleRangeTemplateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ToggleRangeTemplateTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.controls.ui
 
 import android.service.controls.templates.RangeTemplate
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
@@ -25,7 +25,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ToggleRangeTemplateTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/coroutines/FlowTest.kt b/packages/SystemUI/tests/src/com/android/systemui/coroutines/FlowTest.kt
index 1e4753e..23da3f1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/coroutines/FlowTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/coroutines/FlowTest.kt
@@ -1,6 +1,6 @@
 package com.android.systemui.coroutines
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -12,7 +12,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class FlowTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/CutoutDecorProviderFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/CutoutDecorProviderFactoryTest.kt
index 1040ec4..f029847 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/CutoutDecorProviderFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/CutoutDecorProviderFactoryTest.kt
@@ -18,7 +18,6 @@
 
 import android.graphics.Insets
 import android.graphics.Rect
-import android.testing.AndroidTestingRunner
 import android.testing.TestableResources
 import android.util.RotationUtils
 import android.util.Size
@@ -27,6 +26,7 @@
 import android.view.DisplayCutout.BOUNDS_POSITION_LENGTH
 import android.view.DisplayInfo
 import android.view.Surface
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.any
@@ -38,7 +38,7 @@
 import org.mockito.Mockito.doAnswer
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class CutoutDecorProviderFactoryTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/OverlayWindowTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/OverlayWindowTest.kt
index a1cffc1..69fab56 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/OverlayWindowTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/OverlayWindowTest.kt
@@ -17,11 +17,11 @@
 package com.android.systemui.decor
 
 import android.graphics.Color
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import android.view.DisplayCutout
 import android.view.Surface
 import android.view.View
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -34,7 +34,7 @@
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class OverlayWindowTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/PrivacyDotDecorProviderFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/PrivacyDotDecorProviderFactoryTest.kt
index e4ddc37..6d6c6ef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/PrivacyDotDecorProviderFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/PrivacyDotDecorProviderFactoryTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.decor
 
 import android.content.res.Resources
-import android.testing.AndroidTestingRunner
 import android.view.DisplayCutout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -30,7 +30,7 @@
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.`when` as whenever
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class PrivacyDotDecorProviderFactoryTest : SysuiTestCase() {
     private lateinit var mPrivacyDotDecorProviderFactory: PrivacyDotDecorProviderFactory
@@ -83,4 +83,4 @@
                     and it.alignedBounds.contains(DisplayCutout.BOUNDS_POSITION_RIGHT))
         })
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerDecorProviderFactoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerDecorProviderFactoryTest.kt
index d1d4880..4da988a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerDecorProviderFactoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerDecorProviderFactoryTest.kt
@@ -16,9 +16,9 @@
 
 package com.android.systemui.decor
 
-import android.testing.AndroidTestingRunner
 import android.util.Size
 import android.view.DisplayCutout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -30,7 +30,7 @@
 import org.mockito.Mockito
 import org.mockito.Mockito.spy
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class RoundedCornerDecorProviderFactoryTest : SysuiTestCase() {
 
@@ -139,4 +139,4 @@
             })
         }
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
index 2bff7d2..9d440c3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
@@ -18,9 +18,9 @@
 
 import android.content.res.TypedArray
 import android.graphics.drawable.Drawable
-import android.testing.AndroidTestingRunner
 import android.util.Size
 import androidx.annotation.DrawableRes
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.R as InternalR
 import com.android.systemui.res.R as SystemUIR
@@ -33,7 +33,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class RoundedCornerResDelegateTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/demomode/DemoModeControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
index 6c2e136..4793a52f3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
@@ -18,8 +18,8 @@
 
 import android.content.Intent
 import android.os.Bundle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.demomode.DemoMode.ACTION_DEMO
@@ -40,7 +40,7 @@
 
 @Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
 @OptIn(ExperimentalCoroutinesApi::class)
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @SmallTest
 class DemoModeControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/data/repository/FaceWakeUpTriggersConfigTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/data/repository/FaceWakeUpTriggersConfigTest.kt
index e9b4bbb..6b0de92 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/data/repository/FaceWakeUpTriggersConfigTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/data/repository/FaceWakeUpTriggersConfigTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.deviceentry.data.repository
 
 import android.os.PowerManager
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.dump.DumpManager
@@ -30,7 +30,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class FaceWakeUpTriggersConfigTest : SysuiTestCase() {
     @Mock lateinit var globalSettings: GlobalSettings
diff --git a/packages/SystemUI/tests/src/com/android/systemui/devicepolicy/DevicePolicyManagerExtTest.kt b/packages/SystemUI/tests/src/com/android/systemui/devicepolicy/DevicePolicyManagerExtTest.kt
index 8203291..64ff5f7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/devicepolicy/DevicePolicyManagerExtTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/devicepolicy/DevicePolicyManagerExtTest.kt
@@ -22,6 +22,7 @@
 import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE
 import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA
 import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SHORTCUTS_ALL
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.settings.UserTracker
@@ -31,13 +32,12 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class DevicePolicyManagerExtTest : SysuiTestCase() {
 
     @Mock lateinit var devicePolicyManager: DevicePolicyManager
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
index c79cbab..3f5b9a3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.display.data.repository
 
 import android.hardware.devicestate.DeviceStateManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.R
 import com.android.systemui.SysuiTestCase
@@ -41,7 +41,7 @@
 import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
index 68d49c7..01868ae 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
@@ -18,11 +18,11 @@
 
 import android.hardware.display.DisplayManager
 import android.os.Looper
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.Display
 import android.view.Display.TYPE_EXTERNAL
 import android.view.Display.TYPE_INTERNAL
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.FlowValue
@@ -46,7 +46,7 @@
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
index 37c7409..fd9964f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
@@ -19,12 +19,12 @@
 import android.companion.virtual.VirtualDeviceManager
 import android.companion.virtual.flags.Flags.FLAG_INTERACTIVE_SCREEN_MIRROR
 import android.platform.test.annotations.EnableFlags
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.Display
 import android.view.Display.TYPE_EXTERNAL
 import android.view.Display.TYPE_INTERNAL
 import android.view.Display.TYPE_VIRTUAL
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.FlowValue
@@ -53,7 +53,7 @@
 import org.junit.runner.RunWith
 import org.mockito.Mockito.anyInt
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/ui/view/MirroringConfirmationDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/ui/view/MirroringConfirmationDialogDelegateTest.kt
index d118cc7..8105bc8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/display/ui/view/MirroringConfirmationDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/ui/view/MirroringConfirmationDialogDelegateTest.kt
@@ -18,13 +18,13 @@
 
 import android.app.Dialog
 import android.graphics.Insets
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.Window
 import android.view.WindowInsets
 import android.view.WindowInsetsAnimation
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.app.animation.Interpolators
 import com.android.systemui.SysuiTestCase
@@ -42,7 +42,7 @@
 import org.mockito.Mockito.verify
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class MirroringConfirmationDialogDelegateTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
index 6d2df19..8c125f8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
@@ -28,9 +28,9 @@
 
 import android.app.ActivityManager;
 import android.hardware.display.AmbientDisplayConfiguration;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -46,7 +46,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 public class DozeDockHandlerTest extends SysuiTestCase {
     @Mock private DozeMachine mMachine;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
index 27fd3b1..aa5edae 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
@@ -45,8 +45,8 @@
 import android.os.PowerManager;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -71,7 +71,7 @@
 import java.util.Optional;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DozeScreenBrightnessTest extends SysuiTestCase {
 
     private static final int DEFAULT_BRIGHTNESS = 10;
@@ -583,4 +583,4 @@
     private void waitForSensorManager() {
         mFakeExecutor.runAllReady();
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index 3cc0451..9c127b8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -42,10 +42,10 @@
 import android.database.ContentObserver;
 import android.hardware.Sensor;
 import android.hardware.display.AmbientDisplayConfiguration;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -75,7 +75,7 @@
 import java.util.List;
 import java.util.function.Consumer;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class DozeSensorsTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressorTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressorTest.java
index 92941f9..fad52e0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressorTest.java
@@ -38,9 +38,9 @@
 
 import android.app.ActivityManager;
 import android.hardware.display.AmbientDisplayConfiguration;
-import android.testing.AndroidTestingRunner;
 import android.testing.UiThreadTest;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -60,7 +60,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @UiThreadTest
 public class DozeSuppressorTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
index 3a6b075..3d1a0d0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
@@ -21,12 +21,14 @@
 import static com.android.systemui.doze.DozeMachine.State.UNINITIALIZED;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyFloat;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -35,14 +37,16 @@
 import android.app.StatusBarManager;
 import android.hardware.Sensor;
 import android.hardware.display.AmbientDisplayConfiguration;
-import android.testing.AndroidTestingRunner;
+import android.platform.test.annotations.EnableFlags;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.Display;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.InstanceId;
 import com.android.internal.logging.UiEventLogger;
+import com.android.systemui.Flags;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.biometrics.AuthController;
 import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -71,11 +75,12 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper(setAsMainLooper = true)
 public class DozeTriggersTest extends SysuiTestCase {
 
@@ -85,6 +90,7 @@
     private DozeHost mHost;
     @Mock
     private BroadcastDispatcher mBroadcastDispatcher;
+    private final AmbientDisplayConfiguration mConfig = DozeConfigurationUtil.createMockConfig();
     @Mock
     private DockManager mDockManager;
     @Mock
@@ -105,6 +111,8 @@
     private SelectedUserInteractor mSelectedUserInteractor;
     @Mock
     private SessionTracker mSessionTracker;
+    @Captor
+    private ArgumentCaptor<DozeHost.Callback> mHostCallbackCaptor;
 
     private DozeTriggers mTriggers;
     private FakeSensorManager mSensors;
@@ -116,7 +124,7 @@
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
         setupDozeTriggers(
-                DozeConfigurationUtil.createMockConfig(),
+                mConfig,
                 DozeConfigurationUtil.createMockParameters());
     }
 
@@ -174,10 +182,69 @@
     }
 
     @Test
+    public void testOnNotification_startsPulseRequest() {
+        // GIVEN device is dozing
+        Runnable pulseSuppressListener = mock(Runnable.class);
+        when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE);
+        doAnswer(invocation -> null).when(mHost).addCallback(mHostCallbackCaptor.capture());
+        mTriggers.transitionTo(UNINITIALIZED, DozeMachine.State.INITIALIZED);
+        mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
+        clearInvocations(mMachine);
+
+        // WHEN receive an alerting notification
+        mHostCallbackCaptor.getValue().onNotificationAlerted(pulseSuppressListener);
+
+        // THEN entering to pulse
+        verify(mHost).setPulsePending(true);
+        // AND suppress listeners are NOT notified
+        verify(pulseSuppressListener, never()).run();
+    }
+
+    @Test
+    public void testOnNotification_cannotPulse_notificationSuppressed() {
+        // GIVEN device is dozing
+        Runnable pulseSuppressListener = mock(Runnable.class);
+        when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE);
+        doAnswer(invocation -> null).when(mHost).addCallback(mHostCallbackCaptor.capture());
+        mTriggers.transitionTo(UNINITIALIZED, DozeMachine.State.INITIALIZED);
+        mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
+        clearInvocations(mMachine);
+        // AND pulsing is disabled
+        when(mConfig.pulseOnNotificationEnabled(anyInt())).thenReturn(false);
+
+        // WHEN receive an alerting notification
+        mHostCallbackCaptor.getValue().onNotificationAlerted(pulseSuppressListener);
+
+        // THEN NOT starting pulse
+        verify(mHost, never()).setPulsePending(anyBoolean());
+        // AND the notification is suppressed
+        verify(pulseSuppressListener).run();
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_NOTIFICATION_PULSING_FIX)
+    public void testOnNotification_alreadyPulsing_notificationNotSuppressed() {
+        // GIVEN device is pulsing
+        Runnable pulseSuppressListener = mock(Runnable.class);
+        when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE_PULSING);
+        doAnswer(invocation -> null).when(mHost).addCallback(mHostCallbackCaptor.capture());
+        mTriggers.transitionTo(UNINITIALIZED, DozeMachine.State.INITIALIZED);
+        mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE_PULSING);
+        clearInvocations(mMachine);
+
+        // WHEN receive an alerting notification
+        mHostCallbackCaptor.getValue().onNotificationAlerted(pulseSuppressListener);
+
+        // THEN entering to pulse
+        verify(mHost, never()).setPulsePending(anyBoolean());
+        // AND suppress listeners are NOT notified
+        verify(pulseSuppressListener, never()).run();
+    }
+
+    @Test
     public void testOnNotification_noPulseIfPulseIsNotPendingAnymore() {
         when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE);
-        ArgumentCaptor<DozeHost.Callback> captor = ArgumentCaptor.forClass(DozeHost.Callback.class);
-        doAnswer(invocation -> null).when(mHost).addCallback(captor.capture());
+        doAnswer(invocation -> null).when(mHost).addCallback(mHostCallbackCaptor.capture());
 
         mTriggers.transitionTo(UNINITIALIZED, DozeMachine.State.INITIALIZED);
         mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
@@ -189,7 +256,7 @@
 
         // WHEN prox check returns FAR
         mProximitySensor.setLastEvent(new ThresholdSensorEvent(false, 2));
-        captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */);
+        mHostCallbackCaptor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */);
         mProximitySensor.alertListeners();
 
         // THEN don't request pulse because the pending pulse was abandoned early
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeUiTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeUiTest.java
index e7caf00..69e74d8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeUiTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeUiTest.java
@@ -85,7 +85,7 @@
         mHandler = mHandlerThread.getThreadHandler();
         mFakeExecutor = new FakeExecutor(new FakeSystemClock());
         mDozeUi = new DozeUi(mContext, mAlarmManager, mWakeLock, mHost, mHandler,
-                mDozeParameters, mFakeExecutor, mDozeLog);
+                mHandler, mDozeParameters, mFakeExecutor, mDozeLog);
         mDozeUi.setDozeMachine(mMachine);
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
index f07edf3..4253c76 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
@@ -26,6 +26,7 @@
 import android.app.IWallpaperManager;
 import android.os.RemoteException;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -36,11 +37,10 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(JUnit4.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class DozeWallpaperStateTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt
index 2bd2bff..771ecaf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.flags
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -25,7 +25,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class FakeFeatureFlagsTest : SysuiTestCase() {
 
     private val unreleasedFlag = UnreleasedFlag("-1000", "test")
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagDependenciesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagDependenciesTest.kt
index 91da88e..0ae59bb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagDependenciesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagDependenciesTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.flags
 
-import android.testing.AndroidTestingRunner
 import android.util.Log
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import java.io.PrintWriter
@@ -25,7 +25,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class FlagDependenciesTest : SysuiTestCase() {
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt
index 2daa86b..d1082bd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.flags
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.DeviceConfigProxyFake
@@ -33,7 +33,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class ServerFlagReaderImplTest : SysuiTestCase() {
 
     private val NAMESPACE = "test"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java
index cfe37ee..e2cca38 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java
@@ -42,7 +42,6 @@
 import android.os.UserManager;
 import android.provider.Settings;
 import android.service.dreams.IDreamManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.GestureDetector;
 import android.view.IWindowManager;
@@ -52,6 +51,7 @@
 import android.window.OnBackInvokedCallback;
 import android.window.OnBackInvokedDispatcher;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.FlakyTest;
 import androidx.test.filters.SmallTest;
 
@@ -99,7 +99,7 @@
 import java.util.concurrent.Executor;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class GlobalActionsDialogLiteTest extends SysuiTestCase {
     private GlobalActionsDialogLite mGlobalActionsDialogLite;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
index 7d4f034..201ee88 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
@@ -18,6 +18,7 @@
 package com.android.systemui.keyguard.ui.view.layout.sections
 
 import android.view.View
+import android.widget.LinearLayout
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.constraintlayout.widget.ConstraintSet
 import androidx.constraintlayout.widget.ConstraintSet.GONE
@@ -58,7 +59,7 @@
 
     private val smartspaceView = View(mContext).also { it.id = sharedR.id.bc_smartspace_view }
     private val weatherView = View(mContext).also { it.id = sharedR.id.weather_smartspace_view }
-    private val dateView = View(mContext).also { it.id = sharedR.id.date_smartspace_view }
+    private val dateView = LinearLayout(mContext).also { it.id = sharedR.id.date_smartspace_view }
     private lateinit var constraintLayout: ConstraintLayout
     private lateinit var constraintSet: ConstraintSet
 
@@ -109,7 +110,7 @@
         whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true)
         underTest.addViews(constraintLayout)
         assert(smartspaceView.parent == constraintLayout)
-        assert(weatherView.parent == constraintLayout)
+        assertThat(weatherView.parent).isEqualTo(dateView)
         assert(dateView.parent == constraintLayout)
     }
 
@@ -127,7 +128,7 @@
         whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true)
         underTest.addViews(constraintLayout)
         underTest.applyConstraints(constraintSet)
-        assertWeatherSmartspaceConstrains(constraintSet)
+        assertThat(weatherView.parent).isEqualTo(dateView)
 
         val smartspaceConstraints = constraintSet.getConstraint(smartspaceView.id)
         assertThat(smartspaceConstraints.layout.topToBottom).isEqualTo(dateView.id)
@@ -141,7 +142,6 @@
         hasCustomWeatherDataDisplay.value = true
         underTest.addViews(constraintLayout)
         underTest.applyConstraints(constraintSet)
-        assertWeatherSmartspaceConstrains(constraintSet)
 
         val dateConstraints = constraintSet.getConstraint(dateView.id)
         assertThat(dateConstraints.layout.bottomToTop).isEqualTo(smartspaceView.id)
@@ -168,12 +168,4 @@
         assertThat(constraintSet.getVisibility(weatherView.id)).isEqualTo(GONE)
         assertThat(constraintSet.getVisibility(dateView.id)).isEqualTo(GONE)
     }
-
-    private fun assertWeatherSmartspaceConstrains(cs: ConstraintSet) {
-        val weatherConstraints = cs.getConstraint(weatherView.id)
-        assertThat(weatherConstraints.layout.topToTop).isEqualTo(dateView.id)
-        assertThat(weatherConstraints.layout.bottomToBottom).isEqualTo(dateView.id)
-        assertThat(weatherConstraints.layout.startToEnd).isEqualTo(dateView.id)
-        assertThat(weatherConstraints.layout.startMargin).isEqualTo(4)
-    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
index 3372f06..bdee936 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
@@ -40,9 +40,9 @@
 import android.os.Bundle
 import android.provider.Settings
 import android.service.notification.StatusBarNotification
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import androidx.media.utils.MediaConstants
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito
 import com.android.internal.logging.InstanceId
@@ -113,7 +113,7 @@
 
 @SmallTest
 @RunWithLooper(setAsMainLooper = true)
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class LegacyMediaDataManagerImplTest : SysuiTestCase() {
 
     @JvmField @Rule val mockito = MockitoJUnit.rule()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
index 3906c40..18b4c48 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
@@ -40,10 +40,10 @@
 import android.os.Bundle
 import android.provider.Settings
 import android.service.notification.StatusBarNotification
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
 import androidx.media.utils.MediaConstants
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito
 import com.android.internal.logging.InstanceId
@@ -125,7 +125,7 @@
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
 @RunWithLooper(setAsMainLooper = true)
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class MediaDataProcessorTest : SysuiTestCase() {
     val kosmos = testKosmos()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
index f7b3f2e..6a2637d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
@@ -40,7 +40,6 @@
 import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
 import com.android.systemui.keyguard.shared.model.KeyguardState
-import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.kosmos.testDispatcher
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.media.controls.MediaTestUtils
@@ -159,7 +158,6 @@
         testDispatcher = UnconfinedTestDispatcher()
         mediaCarouselController =
             MediaCarouselController(
-                applicationScope = kosmos.applicationCoroutineScope,
                 context = context,
                 mediaControlPanelFactory = mediaControlPanelFactory,
                 visualStabilityProvider = visualStabilityProvider,
@@ -895,10 +893,7 @@
             mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
             mediaCarouselController.mediaCarousel = mediaCarousel
 
-            val settingsJob =
-                mediaCarouselController.listenForLockscreenSettingChanges(
-                    kosmos.applicationCoroutineScope
-                )
+            val settingsJob = mediaCarouselController.listenForLockscreenSettingChanges(this)
             secureSettings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, false)
 
             val keyguardJob = mediaCarouselController.listenForAnyStateToLockscreenTransition(this)
@@ -925,10 +920,7 @@
             mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
             mediaCarouselController.mediaCarousel = mediaCarousel
 
-            val settingsJob =
-                mediaCarouselController.listenForLockscreenSettingChanges(
-                    kosmos.applicationCoroutineScope
-                )
+            val settingsJob = mediaCarouselController.listenForLockscreenSettingChanges(this)
             secureSettings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true)
 
             val keyguardJob = mediaCarouselController.listenForAnyStateToLockscreenTransition(this)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
index 95e34a9..ec02c64 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
@@ -35,13 +35,13 @@
 import android.app.WallpaperColors;
 import android.graphics.Bitmap;
 import android.graphics.drawable.Icon;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.SeekBar;
 
 import androidx.core.graphics.drawable.IconCompat;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.media.LocalMediaManager;
@@ -62,7 +62,7 @@
 import java.util.stream.Collectors;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class MediaOutputAdapterTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
index 9616f610..d5cd86e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
@@ -34,7 +34,6 @@
 import android.media.session.PlaybackState;
 import android.os.Bundle;
 import android.os.PowerExemptionManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.Button;
@@ -42,6 +41,7 @@
 import android.widget.TextView;
 
 import androidx.core.graphics.drawable.IconCompat;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
@@ -67,7 +67,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class MediaOutputBaseDialogTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
index 16b00c0..87d2245 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
@@ -33,13 +33,13 @@
 import android.media.AudioManager;
 import android.media.session.MediaSessionManager;
 import android.os.PowerExemptionManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -72,7 +72,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class MediaOutputBroadcastDialogTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
index 92d0a72..f20b04a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
@@ -38,12 +38,12 @@
 import android.platform.test.annotations.RequiresFlagsEnabled;
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.util.FeatureFlagUtils;
 import android.view.View;
 
 import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -75,7 +75,7 @@
 import java.util.function.Consumer;
 
 @MediumTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class MediaOutputDialogTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManagerTest.kt
index 53e9dc8..2a8967e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionManagerTest.kt
@@ -62,7 +62,7 @@
         MockitoAnnotations.initMocks(this)
         context.addMockSystemService(Context.AUDIO_SERVICE, audioManager)
         icon = context.getDrawable(R.drawable.ic_cake)!!
-        whenever(deviceIconUtil.getIconFromAudioDeviceType(any(), any())).thenReturn(icon)
+        whenever(deviceIconUtil.getIconFromAudioDeviceType(any())).thenReturn(icon)
 
         muteAwaitConnectionManager = MediaMuteAwaitConnectionManager(
             FakeExecutor(FakeSystemClock()),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/appselector/data/ShellRecentTaskListProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/appselector/data/ShellRecentTaskListProviderTest.kt
index 2f61579..7211620 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/appselector/data/ShellRecentTaskListProviderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/appselector/data/ShellRecentTaskListProviderTest.kt
@@ -2,6 +2,7 @@
 
 import android.app.ActivityManager.RecentTaskInfo
 import android.content.pm.UserInfo
+import android.graphics.Rect
 import android.os.UserManager
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
@@ -14,8 +15,10 @@
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.mock
 import com.android.systemui.util.mockito.whenever
+import com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50
 import com.android.wm.shell.recents.RecentTasks
 import com.android.wm.shell.util.GroupedRecentTaskInfo
+import com.android.wm.shell.util.SplitBounds
 import com.google.common.truth.Truth.assertThat
 import java.util.Optional
 import java.util.function.Consumer
@@ -101,6 +104,17 @@
     }
 
     @Test
+    fun loadRecentTasks_singleTaskPair_returnsTasksAsForeground() {
+        givenRecentTasks(
+            createTaskPair(taskId1 = 2, taskId2 = 3, isVisible = true),
+        )
+
+        val result = runBlocking { recentTaskListProvider.loadRecentTasks() }
+
+        assertThat(result[0].isForegroundTask).isTrue()
+    }
+
+    @Test
     fun loadRecentTasks_multipleTasks_returnsSecondVisibleTaskAsForegroundTask() {
         givenRecentTasks(
             createSingleTask(taskId = 1),
@@ -144,6 +158,21 @@
     }
 
     @Test
+    fun loadRecentTasks_firstTaskIsGroupedAndVisible_marksBothGroupedTasksAsForeground() {
+        givenRecentTasks(
+            createTaskPair(taskId1 = 1, taskId2 = 2, isVisible = true),
+            createSingleTask(taskId = 3),
+            createSingleTask(taskId = 4),
+        )
+
+        val result = runBlocking { recentTaskListProvider.loadRecentTasks() }
+
+        assertThat(result.map { it.isForegroundTask })
+                .containsExactly(true, true, false, false)
+                .inOrder()
+    }
+
+    @Test
     fun loadRecentTasks_secondTaskIsGroupedAndInvisible_marksBothGroupedTasksAsNotForeground() {
         givenRecentTasks(
             createSingleTask(taskId = 1),
@@ -159,6 +188,21 @@
     }
 
     @Test
+    fun loadRecentTasks_firstTaskIsGroupedAndInvisible_marksBothGroupedTasksAsNotForeground() {
+        givenRecentTasks(
+            createTaskPair(taskId1 = 1, taskId2 = 2, isVisible = false),
+            createSingleTask(taskId = 3),
+            createSingleTask(taskId = 4),
+        )
+
+        val result = runBlocking { recentTaskListProvider.loadRecentTasks() }
+
+        assertThat(result.map { it.isForegroundTask })
+                .containsExactly(false, false, false, false)
+                .inOrder()
+    }
+
+    @Test
     fun loadRecentTasks_assignsCorrectUserType() {
         givenRecentTasks(
             createSingleTask(taskId = 1, userId = 10, userType = STANDARD),
@@ -224,7 +268,7 @@
         GroupedRecentTaskInfo.forSplitTasks(
             createTaskInfo(taskId1, userId1, isVisible),
             createTaskInfo(taskId2, userId2, isVisible),
-            null
+            SplitBounds(Rect(), Rect(), taskId1, taskId2, SNAP_TO_50_50)
         )
 
     private fun createTaskInfo(taskId: Int, userId: Int, isVisible: Boolean = false) =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt
index e044eec..548366e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt
@@ -18,11 +18,11 @@
 
 import android.app.AlertDialog
 import android.media.projection.MediaProjectionConfig
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.WindowManager
 import android.widget.Spinner
 import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.flags.FeatureFlagsClassic
@@ -40,7 +40,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class MediaProjectionPermissionDialogDelegateTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarButtonTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarButtonTest.java
index 3eb7329..85244fd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarButtonTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarButtonTest.java
@@ -27,12 +27,12 @@
 import android.hardware.display.VirtualDisplay;
 import android.media.ImageReader;
 import android.os.SystemClock;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 import android.util.Log;
 import android.view.Display;
 import android.view.DisplayInfo;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -53,7 +53,7 @@
 import java.util.function.Predicate;
 
 /** atest NavigationBarButtonTest */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class NavigationBarButtonTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
index 354a87a..d5361ac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
@@ -39,9 +39,9 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
-import android.testing.AndroidTestingRunner;
 import android.util.SparseArray;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.dx.mockito.inline.extended.StaticMockitoSession;
@@ -72,7 +72,7 @@
 import java.util.Optional;
 
 /** atest NavigationBarControllerTest */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class NavigationBarControllerImplTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarInflaterViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarInflaterViewTest.java
index 52d02b6..a358c18 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarInflaterViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarInflaterViewTest.java
@@ -22,12 +22,12 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 import android.util.SparseArray;
 import android.view.View;
 import android.widget.FrameLayout;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -41,7 +41,7 @@
 import org.junit.runner.RunWith;
 
 /** atest NavigationBarInflaterViewTest */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class NavigationBarInflaterViewTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
index 6cea1e8..2b60f65 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
@@ -57,7 +57,6 @@
 import android.os.SystemClock;
 import android.provider.DeviceConfig;
 import android.telecom.TelecomManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.Display;
@@ -73,6 +72,7 @@
 import android.view.accessibility.AccessibilityManager;
 import android.view.inputmethod.InputMethodManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -132,7 +132,7 @@
 import java.util.Optional;
 import java.util.concurrent.Executor;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class NavigationBarTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java
index fb08bf5..fbfd35f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTransitionsTest.java
@@ -25,9 +25,9 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -46,7 +46,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class NavigationBarTransitionsTest extends SysuiTestCase {
@@ -105,4 +105,4 @@
 
         assertTrue(mTransitions.isLightsOut(BarTransitions.MODE_LIGHTS_OUT));
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/KeyButtonViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/KeyButtonViewTest.java
index a1010a0..841f620 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/KeyButtonViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/KeyButtonViewTest.java
@@ -40,11 +40,11 @@
 import static org.mockito.Mockito.verify;
 
 import android.hardware.input.InputManagerGlobal;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.KeyEvent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -60,7 +60,7 @@
 import org.mockito.Captor;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class KeyButtonViewTest extends SysuiTestCase {
@@ -164,4 +164,4 @@
             verify(mUiEventLogger, times(1)).log(expected);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/NearestTouchFrameTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/NearestTouchFrameTest.java
index 038b42b..6a3c615 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/NearestTouchFrameTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/buttons/NearestTouchFrameTest.java
@@ -28,11 +28,11 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.Rect;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.MotionEvent;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -46,7 +46,7 @@
 
 import java.util.Map;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class NearestTouchFrameTest extends SysuiTestCase {
@@ -276,4 +276,4 @@
         v.setBottom(height);
         return v;
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
index 23cf7fb..b169cc1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
@@ -17,7 +17,6 @@
 package com.android.systemui.navigationbar.gestural
 
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.HapticFeedbackConstants
 import android.view.MotionEvent
@@ -26,6 +25,7 @@
 import android.view.MotionEvent.ACTION_UP
 import android.view.ViewConfiguration
 import android.view.WindowManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.jank.Cuj
 import com.android.internal.util.LatencyTracker
@@ -49,7 +49,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class BackPanelControllerTest : SysuiTestCase() {
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/FloatingRotationButtonPositionCalculatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/FloatingRotationButtonPositionCalculatorTest.kt
index 5f206b3..f3cea3e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/FloatingRotationButtonPositionCalculatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/FloatingRotationButtonPositionCalculatorTest.kt
@@ -8,10 +8,12 @@
 import com.android.systemui.shared.rotation.FloatingRotationButtonPositionCalculator.Position
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameter
+import platform.test.runner.parameterized.Parameters
 import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 
-@RunWith(Parameterized::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 @SmallTest
 internal class FloatingRotationButtonPositionCalculatorTest(
         private val testCase: TestCase,
@@ -61,7 +63,7 @@
             MARGIN_DEFAULT, MARGIN_TASKBAR_LEFT, MARGIN_TASKBAR_BOTTOM, false
         )
 
-        @Parameterized.Parameters(name = "{0}")
+        @Parameters(name = "{0}")
         @JvmStatic
         fun getParams(): Collection<TestCase> =
             listOf(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/LaunchNotesRoleSettingsTrampolineActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/LaunchNotesRoleSettingsTrampolineActivityTest.kt
index bdb095a..0f13f03 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/LaunchNotesRoleSettingsTrampolineActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/LaunchNotesRoleSettingsTrampolineActivityTest.kt
@@ -18,8 +18,8 @@
 
 import android.content.Context
 import android.content.Intent
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
 import com.android.dx.mockito.inline.extended.ExtendedMockito.verify
@@ -37,7 +37,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @TestableLooper.RunWithLooper
 class LaunchNotesRoleSettingsTrampolineActivityTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
index 06127a7..9ef6b9c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
@@ -19,8 +19,8 @@
 import android.content.Intent
 import android.graphics.drawable.Icon
 import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.notetask.NoteTaskBubblesController.NoteTaskBubblesService
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
index b7618d2..0196f95 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
@@ -42,9 +42,9 @@
 import android.os.UserHandle
 import android.os.UserManager
 import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.ext.truth.content.IntentSubject.assertThat
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.notetask.NoteTaskController.Companion.EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE
 import com.android.systemui.notetask.NoteTaskController.Companion.SHORTCUT_ID
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskEventLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskEventLoggerTest.kt
index 4101c94..c9a5d06 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskEventLoggerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskEventLoggerTest.kt
@@ -16,8 +16,8 @@
 package com.android.systemui.notetask
 
 import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.notetask.NoteTaskEventLogger.NoteTaskUiEvent.NOTE_CLOSED_VIA_STYLUS_TAIL_BUTTON
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoResolverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoResolverTest.kt
index 2c86a8d..0c88da7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoResolverTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoResolverTest.kt
@@ -19,8 +19,8 @@
 import android.app.role.RoleManager
 import android.content.pm.ApplicationInfo
 import android.content.pm.PackageManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.eq
 import com.android.systemui.util.mockito.whenever
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoTest.kt
index 24f39d1..8f4078b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInfoTest.kt
@@ -16,7 +16,7 @@
 package com.android.systemui.notetask
 
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.notetask.NoteTaskEntryPoint.WIDGET_PICKER_SHORTCUT_IN_MULTI_WINDOW_MODE
@@ -26,7 +26,7 @@
 
 /** atest SystemUITests:NoteTaskInfoTest */
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 internal class NoteTaskInfoTest : SysuiTestCase() {
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
index 7833007..1ec4814 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
@@ -19,12 +19,12 @@
 import android.app.role.RoleManager.ROLE_NOTES
 import android.os.UserHandle
 import android.os.UserManager
-import android.testing.AndroidTestingRunner
 import android.view.KeyEvent
 import android.view.KeyEvent.ACTION_DOWN
 import android.view.KeyEvent.ACTION_UP
 import android.view.KeyEvent.KEYCODE_N
 import android.view.KeyEvent.KEYCODE_STYLUS_BUTTON_TAIL
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.keyguard.KeyguardUpdateMonitor
 import com.android.systemui.SysuiTestCase
@@ -54,7 +54,7 @@
 /** atest SystemUITests:NoteTaskInitializerTest */
 @OptIn(ExperimentalCoroutinesApi::class, InternalNoteTaskApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 internal class NoteTaskInitializerTest : SysuiTestCase() {
 
     @Mock lateinit var commandQueue: CommandQueue
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
index 231b333..f624f20 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
@@ -25,7 +25,7 @@
 import android.hardware.input.InputSettings
 import android.os.UserHandle
 import android.os.UserManager
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito
 import com.android.systemui.SysuiTestCase
@@ -63,7 +63,7 @@
 
 /** atest SystemUITests:NoteTaskQuickAffordanceConfigTest */
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 internal class NoteTaskQuickAffordanceConfigTest : SysuiTestCase() {
 
     @Mock lateinit var controller: NoteTaskController
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/shortcut/LaunchNoteTaskActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/shortcut/LaunchNoteTaskActivityTest.kt
index 1f0f0d7..9969dcd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/shortcut/LaunchNoteTaskActivityTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/shortcut/LaunchNoteTaskActivityTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.notetask.shortcut
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.rule.ActivityTestRule
 import com.android.dx.mockito.inline.extended.ExtendedMockito.verify
@@ -35,7 +35,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @TestableLooper.RunWithLooper
 class LaunchNoteTaskActivityTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
index 1b713dd..3673a25 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
@@ -36,8 +36,8 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.service.notification.StatusBarNotification;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.util.ArrayUtils;
@@ -52,7 +52,7 @@
 import java.util.List;
 import java.util.Set;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class NotificationHelperTest extends SysuiTestCase {
     private static final String SHORTCUT_ID_1 = "101";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleBackupFollowUpJobTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleBackupFollowUpJobTest.java
index 0d1749c..dae3452 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleBackupFollowUpJobTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleBackupFollowUpJobTest.java
@@ -35,8 +35,8 @@
 import android.net.Uri;
 import android.os.RemoteException;
 import android.preference.PreferenceManager;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -56,7 +56,7 @@
 import java.util.Map;
 import java.util.Set;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class PeopleBackupFollowUpJobTest extends SysuiTestCase {
     private static final String SHORTCUT_ID_1 = "101";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
index 50ab1c7..776cf19 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
@@ -29,9 +29,9 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.widget.RemoteViews;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -46,7 +46,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class PeopleProviderTest extends SysuiTestCase {
     private static final String TAG = "PeopleProviderTest";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
index 84a8ab0..48afaa0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
@@ -52,9 +52,9 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.provider.ContactsContract;
-import android.testing.AndroidTestingRunner;
 import android.util.DisplayMetrics;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.appwidget.IAppWidgetService;
@@ -81,7 +81,7 @@
 import java.util.Map;
 import java.util.Optional;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class PeopleSpaceUtilsTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
index 3d1da00..a90c10a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
@@ -52,12 +52,12 @@
 import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.util.DisplayMetrics;
 import android.view.View;
 import android.widget.RemoteViews;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -73,7 +73,7 @@
 import java.time.Duration;
 import java.util.Arrays;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class PeopleTileViewHelperTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/SharedPreferencesHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/SharedPreferencesHelperTest.java
index 7cd5e22..ae7fba9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/SharedPreferencesHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/SharedPreferencesHelperTest.java
@@ -24,8 +24,8 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -34,7 +34,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class SharedPreferencesHelperTest extends SysuiTestCase {
     private static final String SHORTCUT_ID_1 = "101";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
index c8ebd12..e701dc6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
@@ -36,9 +36,9 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.service.notification.NotificationListenerService;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.statusbar.IStatusBarService;
@@ -64,7 +64,7 @@
 import java.util.Optional;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 public class LaunchConversationActivityTest extends SysuiTestCase {
     private static final String EMPTY_STRING = "";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleBackupHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleBackupHelperTest.java
index 5d526e1..b3ded15 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleBackupHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleBackupHelperTest.java
@@ -36,8 +36,8 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.preference.PreferenceManager;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -57,7 +57,7 @@
 import java.util.Map;
 import java.util.Set;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class PeopleBackupHelperTest extends SysuiTestCase {
     private static final String SHORTCUT_ID_1 = "101";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
index 0998c0c..16a022f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
@@ -99,10 +99,10 @@
 import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.StatusBarNotification;
 import android.service.notification.ZenModeConfig;
-import android.testing.AndroidTestingRunner;
 import android.text.TextUtils;
 
 import androidx.preference.PreferenceManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -140,12 +140,10 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PeopleSpaceWidgetManagerTest extends SysuiTestCase {
     private static final long MIN_LINGER_DURATION = 5;
 
@@ -1620,60 +1618,6 @@
         verify(mAppWidgetManager, times(1)).setWidgetPreview(any(), anyInt(), any());
     }
 
-    @Test
-    @EnableFlags({
-        android.appwidget.flags.Flags.FLAG_GENERATED_PREVIEWS,
-        android.appwidget.flags.Flags.FLAG_DRAW_DATA_PARCEL
-    })
-    public void testUpdateGeneratedPreviewWithDataParcel_userLocked() throws InterruptedException {
-        when(mUserManager.isUserUnlocked(mUserTracker.getUserHandle())).thenReturn(false);
-
-        mManager.updateGeneratedPreviewForUser(mUserTracker.getUserHandle());
-        assertThat(waitForBackgroundJob()).isTrue();
-        verify(mAppWidgetManager, times(0)).setWidgetPreview(any(), anyInt(), any());
-    }
-
-    @Test
-    @EnableFlags({
-        android.appwidget.flags.Flags.FLAG_GENERATED_PREVIEWS,
-        android.appwidget.flags.Flags.FLAG_DRAW_DATA_PARCEL
-    })
-    public void testUpdateGeneratedPreviewWithDataParcel_userUnlocked()
-            throws InterruptedException {
-        when(mUserManager.isUserUnlocked(mUserTracker.getUserHandle())).thenReturn(true);
-        when(mAppWidgetManager.setWidgetPreview(any(), anyInt(), any())).thenReturn(true);
-
-        mManager.updateGeneratedPreviewForUser(mUserTracker.getUserHandle());
-        assertThat(waitForBackgroundJob()).isTrue();
-        verify(mAppWidgetManager, times(1)).setWidgetPreview(any(), anyInt(), any());
-    }
-
-    @Test
-    @EnableFlags({
-        android.appwidget.flags.Flags.FLAG_GENERATED_PREVIEWS,
-        android.appwidget.flags.Flags.FLAG_DRAW_DATA_PARCEL
-    })
-    public void testUpdateGeneratedPreviewWithDataParcel_doesNotSetTwice()
-            throws InterruptedException {
-        when(mUserManager.isUserUnlocked(mUserTracker.getUserHandle())).thenReturn(true);
-        when(mAppWidgetManager.setWidgetPreview(any(), anyInt(), any())).thenReturn(true);
-
-        mManager.updateGeneratedPreviewForUser(mUserTracker.getUserHandle());
-        mManager.updateGeneratedPreviewForUser(mUserTracker.getUserHandle());
-        assertThat(waitForBackgroundJob()).isTrue();
-        verify(mAppWidgetManager, times(1)).setWidgetPreview(any(), anyInt(), any());
-    }
-
-    private boolean waitForBackgroundJob() throws InterruptedException {
-        final CountDownLatch latch = new CountDownLatch(1);
-        mFakeExecutor.execute(latch::countDown);
-        mFakeExecutor.runAllReady();
-        mFakeExecutor.advanceClockToNext();
-        mFakeExecutor.runAllReady();
-        return latch.await(30000, TimeUnit.MILLISECONDS);
-
-    }
-
     private void setFinalField(String fieldName, int value) {
         try {
             Field field = NotificationManager.Policy.class.getDeclaredField(fieldName);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
index b95d3aa..bdd8dc8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
@@ -42,9 +42,9 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -70,7 +70,7 @@
 import java.lang.ref.WeakReference;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class PowerNotificationWarningsTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
index cae170f..4f4f0d9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
@@ -38,11 +38,11 @@
 import android.provider.Settings;
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.testing.TestableResources;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.settingslib.fuelgauge.Estimate;
@@ -64,7 +64,7 @@
 import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class PowerUITest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/data/repository/PowerRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/power/data/repository/PowerRepositoryImplTest.kt
index f3b114d..02a3429 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/data/repository/PowerRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/data/repository/PowerRepositoryImplTest.kt
@@ -21,6 +21,7 @@
 import android.content.Intent
 import android.content.IntentFilter
 import android.os.PowerManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.BroadcastDispatcher
@@ -37,7 +38,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mock
@@ -48,7 +48,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PowerRepositoryImplTest : SysuiTestCase() {
 
     private val systemClock = FakeSystemClock()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/domain/interactor/PowerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/power/domain/interactor/PowerInteractorTest.kt
index 42cf9f4..12c9eb9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/domain/interactor/PowerInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/domain/interactor/PowerInteractorTest.kt
@@ -18,6 +18,7 @@
 package com.android.systemui.power.domain.interactor
 
 import android.os.PowerManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.classifier.FalsingCollector
@@ -39,13 +40,12 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class PowerInteractorTest : SysuiTestCase() {
 
     private lateinit var underTest: PowerInteractor
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/AppOpsPrivacyItemMonitorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/AppOpsPrivacyItemMonitorTest.kt
index 14ecf93..4bee924 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/AppOpsPrivacyItemMonitorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/AppOpsPrivacyItemMonitorTest.kt
@@ -19,8 +19,8 @@
 import android.app.AppOpsManager
 import android.content.pm.UserInfo
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.appops.AppOpItem
@@ -52,7 +52,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @RunWithLooper
 class AppOpsPrivacyItemMonitorTest : SysuiTestCase() {
@@ -385,4 +385,4 @@
         `when`(privacyConfig.locationAvailable).thenReturn(value)
         argCaptorConfigCallback.value.onFlagLocationChanged(value)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyChipBuilderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyChipBuilderTest.kt
index dcee5a716..0d6652c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyChipBuilderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyChipBuilderTest.kt
@@ -16,8 +16,8 @@
 
 package com.android.systemui.privacy
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
 import org.junit.Test
@@ -74,4 +74,4 @@
         val appList = textBuilder.appsAndTypes.map { it.first }.map { it.packageName }
         assertEquals(listOf("Camera", "Microphone", "Location"), appList)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyConfigFlagsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyConfigFlagsTest.kt
index 272f149..4768b88 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyConfigFlagsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyConfigFlagsTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.privacy
 
 import android.provider.DeviceConfig
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
 import com.android.systemui.SysuiTestCase
@@ -37,7 +37,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class PrivacyConfigFlagsTest : SysuiTestCase() {
     companion object {
@@ -146,4 +146,4 @@
                 false
         )
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
index 84e9107..58afcb7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
@@ -30,7 +30,7 @@
 import android.os.UserHandle
 import android.permission.PermissionGroupUsage
 import android.permission.PermissionManager
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
@@ -64,7 +64,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class PrivacyDialogControllerTest : SysuiTestCase() {
 
     companion object {
@@ -824,4 +824,4 @@
         `when`(usage.proxyLabel).thenReturn(proxyLabel)
         return usage
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt
index 0c7e099..1c63161 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt
@@ -30,8 +30,8 @@
 import android.os.UserHandle
 import android.permission.PermissionGroupUsage
 import android.permission.PermissionManager
-import android.testing.AndroidTestingRunner
 import android.widget.LinearLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
@@ -66,7 +66,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class PrivacyDialogControllerV2Test : SysuiTestCase() {
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt
index b754145..9ac04cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt
@@ -16,11 +16,11 @@
 
 package com.android.systemui.privacy
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -38,7 +38,7 @@
 import android.text.TextUtils
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class PrivacyDialogTest : SysuiTestCase() {
 
@@ -401,4 +401,4 @@
 
         assertThat(TextUtils.isEmpty(dialog.window?.attributes?.title)).isFalse()
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogV2Test.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogV2Test.kt
index 6c01ba5..f7cf458 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogV2Test.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogV2Test.kt
@@ -17,12 +17,12 @@
 package com.android.systemui.privacy
 
 import android.content.Intent
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup.LayoutParams.MATCH_PARENT
 import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -38,7 +38,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class PrivacyDialogV2Test : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
index d563632..4f1fb71 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
@@ -18,8 +18,8 @@
 
 import android.app.ActivityManager
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.dump.DumpManager
@@ -49,7 +49,7 @@
 import org.mockito.Mockito.verifyNoMoreInteractions
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @RunWithLooper
 class PrivacyItemControllerTest : SysuiTestCase() {
@@ -417,4 +417,4 @@
 
         assertTrue(privacyItemController.privacyList.isEmpty())
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/process/condition/SystemProcessConditionTest.java b/packages/SystemUI/tests/src/com/android/systemui/process/condition/SystemProcessConditionTest.java
index f573358..5250d56 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/process/condition/SystemProcessConditionTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/process/condition/SystemProcessConditionTest.java
@@ -19,9 +19,9 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -39,7 +39,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class SystemProcessConditionTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerControllerTest.java
index e905e9c..8ccaf6b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerControllerTest.java
@@ -34,9 +34,9 @@
 import android.os.UserHandle;
 import android.provider.DeviceConfig;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
@@ -56,7 +56,7 @@
 import java.util.Collections;
 import java.util.List;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class QRCodeScannerControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
index dee1cc8..1eeaef7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
@@ -30,9 +30,9 @@
 import android.content.IntentFilter;
 import android.os.UserHandle;
 import android.provider.Settings.Secure;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -54,7 +54,7 @@
 import java.util.List;
 import java.util.concurrent.Executor;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class AutoAddTrackerTest extends SysuiTestCase {
@@ -308,4 +308,4 @@
                 user
         );
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/FgsManagerControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/FgsManagerControllerTest.java
index d39a635..16ae466 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/FgsManagerControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/FgsManagerControllerTest.java
@@ -43,9 +43,9 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.provider.DeviceConfig;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
@@ -73,7 +73,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class FgsManagerControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt
index f98b68f..3ae7a16 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt
@@ -6,8 +6,8 @@
 import android.content.IntentFilter
 import android.permission.PermissionManager
 import android.safetycenter.SafetyCenterManager
-import android.testing.AndroidTestingRunner
 import android.view.View
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
@@ -46,7 +46,7 @@
 private fun <T> any(): T = Mockito.any<T>()
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
 
     @Mock
@@ -269,4 +269,4 @@
         whenever(privacyItemController.micCameraAvailable).thenReturn(micCamera)
         whenever(privacyItemController.locationAvailable).thenReturn(location)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/LeftRightArrowPressedListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/LeftRightArrowPressedListenerTest.kt
index 40eccad..466a09b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/LeftRightArrowPressedListenerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/LeftRightArrowPressedListenerTest.kt
@@ -16,11 +16,11 @@
 
 package com.android.systemui.qs
 
-import android.testing.AndroidTestingRunner
 import android.view.KeyEvent
 import android.view.KeyEvent.KEYCODE_DPAD_LEFT
 import android.view.View
 import androidx.core.util.Consumer
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
@@ -28,7 +28,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class LeftRightArrowPressedListenerTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/PagedTileLayoutTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/PagedTileLayoutTest.kt
index 8ef3f57..db8612a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/PagedTileLayoutTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/PagedTileLayoutTest.kt
@@ -1,9 +1,9 @@
 package com.android.systemui.qs
 
 import android.content.Context
-import android.testing.AndroidTestingRunner
 import android.view.View
 import android.widget.Scroller
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.qs.PageIndicator.PageScrollActionListener
@@ -19,7 +19,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class PagedTileLayoutTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
index 8c5d99a..52ad931 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
@@ -1,9 +1,9 @@
 package com.android.systemui.qs
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.View
 import android.widget.FrameLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -18,7 +18,7 @@
 import org.mockito.MockitoAnnotations
 import org.mockito.Mockito.`when` as whenever
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @SmallTest
 class QSContainerImplTest : SysuiTestCase() {
@@ -70,4 +70,4 @@
                 eq(originalPadding)
             )
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFooterViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFooterViewControllerTest.java
index 5ae0c24..fb58b90 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFooterViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFooterViewControllerTest.java
@@ -27,11 +27,11 @@
 
 import android.content.ClipData;
 import android.content.ClipboardManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.plugins.ActivityStarter;
@@ -49,7 +49,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class QSFooterViewControllerTest extends LeakCheckedTest {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSImplTest.java
index 09d6a1a..c0d390a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSImplTest.java
@@ -42,7 +42,6 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.os.Bundle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.Display;
 import android.view.LayoutInflater;
@@ -52,6 +51,7 @@
 
 import androidx.compose.ui.platform.ComposeView;
 import androidx.lifecycle.Lifecycle;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.keyguard.BouncerPanelExpansionCalculator;
@@ -82,7 +82,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class QSImplTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
index 545d19d..02c5b5a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
@@ -1,8 +1,8 @@
 package com.android.systemui.qs
 
 import android.content.res.Configuration
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import android.testing.AndroidTestingRunner
 import android.testing.TestableResources
 import android.view.ContextThemeWrapper
 import com.android.internal.logging.MetricsLogger
@@ -41,7 +41,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class QSPanelControllerTest : SysuiTestCase() {
 
     @Mock private lateinit var qsPanel: QSPanel
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelSwitchToParentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelSwitchToParentTest.kt
index 56f2905..56e25fc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelSwitchToParentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelSwitchToParentTest.kt
@@ -18,9 +18,9 @@
 
 import com.google.common.truth.Truth.assertThat
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 
-import android.testing.AndroidTestingRunner
 import android.view.View
 import android.view.ViewGroup
 import android.widget.FrameLayout
@@ -30,7 +30,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class QSPanelSwitchToParentTest : SysuiTestCase() {
 
@@ -159,4 +159,4 @@
 
     private val ViewGroup.childrenList: List<View>
         get() = children.toList()
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
index e2a4d67..8aaa121 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
@@ -14,7 +14,7 @@
 package com.android.systemui.qs
 
 import android.graphics.Rect
-import android.testing.AndroidTestingRunner
+import android.platform.test.flag.junit.FlagsParameterization
 import android.testing.TestableContext
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
@@ -27,13 +27,15 @@
 import android.widget.FrameLayout
 import android.widget.LinearLayout
 import androidx.test.filters.SmallTest
-import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.flags.DisableSceneContainer
+import com.android.systemui.flags.parameterizeSceneContainerFlag
 import com.android.systemui.plugins.qs.QSTile
 import com.android.systemui.plugins.qs.QSTileView
 import com.android.systemui.qs.QSPanelControllerBase.TileRecord
 import com.android.systemui.qs.logging.QSLogger
 import com.android.systemui.qs.tileimpl.QSTileViewImpl
+import com.android.systemui.res.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.After
 import org.junit.Before
@@ -44,11 +46,17 @@
 import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(ParameterizedAndroidJunit4::class)
 @RunWithLooper
 @SmallTest
-class QSPanelTest : SysuiTestCase() {
+class QSPanelTest(flags: FlagsParameterization) : SysuiTestCase() {
+
+    init {
+        mSetFlagsRule.setFlagsParameterization(flags)
+    }
 
     @Mock private lateinit var qsLogger: QSLogger
 
@@ -57,9 +65,8 @@
 
     private lateinit var footer: View
 
-    private val themedContext = TestableContext(
-            ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings)
-    )
+    private val themedContext =
+        TestableContext(ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings))
 
     @Before
     @Throws(Exception::class)
@@ -106,38 +113,8 @@
     }
 
     @Test
-    fun testTilesFooterVisibleRTLLandscapeMedia() {
-        qsPanel.layoutDirection = View.LAYOUT_DIRECTION_RTL
-        // We need at least a tile so the layout has a height
-        qsPanel.tileLayout?.addTile(
-                QSPanelControllerBase.TileRecord(
-                    mock(QSTile::class.java),
-                    QSTileViewImpl(themedContext)
-                )
-            )
-
-        val mediaView = FrameLayout(themedContext)
-        mediaView.addView(View(themedContext), MATCH_PARENT, 800)
-
-        qsPanel.setUsingHorizontalLayout(/* horizontal */ true, mediaView, /* force */ true)
-        qsPanel.measure(
-            /* width */ View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.EXACTLY),
-            /* height */ View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY)
-        )
-        qsPanel.layout(0, 0, qsPanel.measuredWidth, qsPanel.measuredHeight)
-
-        val tiles = qsPanel.tileLayout as View
-        // Tiles are effectively to the right of media
-        assertThat(mediaView isLeftOf tiles)
-        assertThat(tiles.isVisibleToUser).isTrue()
-
-        assertThat(mediaView isLeftOf footer)
-        assertThat(footer.isVisibleToUser).isTrue()
-    }
-
-    @Test
+    @DisableSceneContainer
     fun testTilesFooterVisibleLandscapeMedia() {
-        qsPanel.layoutDirection = View.LAYOUT_DIRECTION_LTR
         // We need at least a tile so the layout has a height
         qsPanel.tileLayout?.addTile(
             QSPanelControllerBase.TileRecord(
@@ -158,10 +135,10 @@
 
         val tiles = qsPanel.tileLayout as View
         // Tiles are effectively to the left of media
-        assertThat(tiles isLeftOf mediaView)
+        assertThat(tiles isLeftOf mediaView).isTrue()
         assertThat(tiles.isVisibleToUser).isTrue()
 
-        assertThat(footer isLeftOf mediaView)
+        assertThat(footer isLeftOf mediaView).isTrue()
         assertThat(footer.isVisibleToUser).isTrue()
     }
 
@@ -169,8 +146,8 @@
     fun testBottomPadding() {
         val padding = 10
         themedContext.orCreateTestableResources.addOverride(
-                R.dimen.qs_panel_padding_bottom,
-                padding
+            R.dimen.qs_panel_padding_bottom,
+            padding
         )
         qsPanel.updatePadding()
         assertThat(qsPanel.paddingBottom).isEqualTo(padding)
@@ -182,8 +159,8 @@
         val paddingCombined = 100
         themedContext.orCreateTestableResources.addOverride(R.dimen.qs_panel_padding_top, padding)
         themedContext.orCreateTestableResources.addOverride(
-                R.dimen.qs_panel_padding_top,
-                paddingCombined
+            R.dimen.qs_panel_padding_top,
+            paddingCombined
         )
 
         qsPanel.updatePadding()
@@ -220,7 +197,8 @@
     }
 
     @Test
-    fun initializedWithNoMedia_tileLayoutParentIsAlwaysQsPanel() {
+    @DisableSceneContainer
+    fun initializedWithNoMedia_sceneContainerDisabled_tileLayoutParentIsAlwaysQsPanel() {
         lateinit var panel: QSPanel
         lateinit var tileLayout: View
         testableLooper.runWithLooper {
@@ -249,6 +227,7 @@
     }
 
     @Test
+    @DisableSceneContainer
     fun initializeWithNoMedia_mediaNeverAttached() {
         lateinit var panel: QSPanel
         testableLooper.runWithLooper {
@@ -288,6 +267,10 @@
         assertThat(qsPanel.tileLayout!!.maxColumns).isEqualTo(2)
     }
 
+    companion object {
+        @Parameters(name = "{0}") @JvmStatic fun getParams() = parameterizeSceneContainerFlag()
+    }
+
     private infix fun View.isLeftOf(other: View): Boolean {
         val rect = Rect()
         getBoundsOnScreen(rect)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
index 0abcc64..dad65f5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
@@ -42,7 +42,6 @@
 import android.os.Looper;
 import android.provider.DeviceConfig;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.text.SpannableStringBuilder;
@@ -51,6 +50,7 @@
 import android.widget.TextView;
 
 import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -83,7 +83,7 @@
 */
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 public class QSSecurityFooterTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
index e2a0626..ecdabbf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
@@ -1,6 +1,6 @@
 package com.android.systemui.qs
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Before
@@ -12,7 +12,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.junit.MockitoJUnit
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class QSSquishinessControllerTest : SysuiTestCase() {
 
@@ -45,4 +45,4 @@
         verify(qsPanelController).setSquishinessFraction(0.5f)
         verify(quickQsPanelController).setSquishinessFraction(0.5f)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
index 820c3de..6d1bc82 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
@@ -41,10 +41,10 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.util.SparseArray;
 
 import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -53,7 +53,6 @@
 import com.android.systemui.animation.Expandable;
 import com.android.systemui.classifier.FalsingManagerFake;
 import com.android.systemui.dump.nano.SystemUIProtoDump;
-import com.android.systemui.flags.FakeFeatureFlags;
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.PluginManager;
 import com.android.systemui.plugins.qs.QSFactory;
@@ -95,7 +94,7 @@
 
 import javax.inject.Provider;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class QSTileHostTest extends SysuiTestCase {
 
@@ -133,8 +132,6 @@
 
     private SparseArray<SharedPreferences> mSharedPreferencesByUser;
 
-    private FakeFeatureFlags mFeatureFlags;
-
     private QSPipelineFlagsRepository mQSPipelineFlagsRepository;
 
     private FakeExecutor mMainExecutor;
@@ -144,7 +141,6 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mFeatureFlags = new FakeFeatureFlags();
 
         mSetFlagsRule.disableFlags(FLAG_QS_NEW_PIPELINE);
         mSetFlagsRule.disableFlags(FLAG_QS_NEW_TILES);
@@ -170,7 +166,7 @@
         saveSetting("");
         setUpTileFactory();
         mQSTileHost = new TestQSTileHost(mContext, () -> null, mDefaultFactory, mMainExecutor,
-                mPluginManager, mTunerService, () -> mAutoTiles, mShadeController,
+                mPluginManager, mTunerService, () -> mAutoTiles, () -> mShadeController,
                 mQSLogger, mUserTracker, mSecureSettings, mCustomTileStatePersister,
                 mTileLifecycleManagerFactory, mUserFileManager, mQSPipelineFlagsRepository);
         mMainExecutor.runAllReady();
@@ -689,7 +685,7 @@
                 QSFactory defaultFactory, Executor mainExecutor,
                 PluginManager pluginManager, TunerService tunerService,
                 Provider<AutoTileManager> autoTiles,
-                ShadeController shadeController, QSLogger qsLogger,
+                Lazy<ShadeController> shadeController, QSLogger qsLogger,
                 UserTracker userTracker, SecureSettings secureSettings,
                 CustomTileStatePersister customTileStatePersister,
                 TileLifecycleManager.Factory tileLifecycleManagerFactory,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
index fee4b53..369bb22 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.qs
 
 import android.content.res.Configuration
-import android.testing.AndroidTestingRunner
 import android.view.ContextThemeWrapper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.logging.testing.UiEventLoggerFake
@@ -50,7 +50,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class QuickQSPanelControllerTest : SysuiTestCase() {
 
     @Mock private lateinit var quickQSPanel: QuickQSPanel
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
index e5369fc..3d6ba94 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
@@ -1,10 +1,10 @@
 package com.android.systemui.qs
 
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.ViewGroup
 import android.view.accessibility.AccessibilityNodeInfo
 import android.widget.FrameLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.qs.logging.QSLogger
@@ -16,7 +16,7 @@
 import org.mockito.Mockito
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 @SmallTest
 class QuickQSPanelTest : SysuiTestCase() {
@@ -63,4 +63,4 @@
         quickQSPanel.performAccessibilityAction(AccessibilityNodeInfo.ACTION_EXPAND, null)
         Mockito.verify(mockRunnable).run()
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
index 4915e55..a0ccec1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.qs
 
 import android.content.Context
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.After
@@ -31,7 +31,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class QuickStatusBarHeaderControllerTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/TileStateToProtoTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/TileStateToProtoTest.kt
index bc947fb..be388a1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/TileStateToProtoTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/TileStateToProtoTest.kt
@@ -2,8 +2,8 @@
 
 import android.content.ComponentName
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
 import android.widget.Switch
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.plugins.qs.QSTile
@@ -12,7 +12,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class TileStateToProtoTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/UserSettingObserverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/UserSettingObserverTest.kt
index 8f06fe2..90e0dd8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/UserSettingObserverTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/UserSettingObserverTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.qs
 
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.settings.FakeSettings
@@ -33,7 +33,7 @@
 private typealias Callback = (Int, Boolean) -> Unit
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class UserSettingObserverTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java
index 6e2f5db..9f2b1ea 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java
@@ -24,11 +24,11 @@
 import static org.mockito.Mockito.when;
 
 import android.os.Bundle;
-import android.testing.AndroidTestingRunner;
 import android.view.View;
 import android.view.accessibility.AccessibilityNodeInfo;
 
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -41,7 +41,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TileAdapterDelegateTest extends SysuiTestCase {
 
     private static final int MOVE_TO_POSITION_ID = R.id.accessibility_action_qs_move_to_position;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterTest.java
index f8a98af..cbcd810 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterTest.java
@@ -17,10 +17,10 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.verify;
 
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.testing.UiEventLoggerFake;
@@ -37,7 +37,7 @@
 
 import java.util.Collections;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper
 @SmallTest
 public class TileAdapterTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java
index 8bf743884..09a6c2c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java
@@ -40,12 +40,12 @@
 import android.content.pm.ServiceInfo;
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.text.TextUtils;
 import android.util.ArraySet;
 
 import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.InstanceId;
@@ -75,7 +75,7 @@
 import java.util.concurrent.Executor;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class TileQueryHelperTest extends SysuiTestCase {
     private static final String CURRENT_TILES = "internet,dnd,nfc";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileStatePersisterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileStatePersisterTest.kt
index 81d02b8..14eaa03 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileStatePersisterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileStatePersisterTest.kt
@@ -20,7 +20,7 @@
 import android.content.Context
 import android.content.SharedPreferences
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.capture
@@ -41,7 +41,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class CustomTileStatePersisterTest : SysuiTestCase() {
 
     companion object {
@@ -167,4 +167,4 @@
 
         assertThat(customTileStatePersister.readState(KEY)!!.label).isNull()
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
index a8e9db5..bd03acb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
@@ -31,8 +31,8 @@
 import android.os.Parcel
 import android.service.quicksettings.IQSTileService
 import android.service.quicksettings.Tile
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.IWindowManager
 import com.android.internal.logging.MetricsLogger
@@ -74,7 +74,7 @@
 
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class CustomTileTest : SysuiTestCase() {
 
@@ -563,4 +563,4 @@
     parcel.setDataPosition(0)
 
     return Tile.CREATOR.createFromParcel(parcel)
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileRequestDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileRequestDialogTest.kt
index 78c2acf..2db5e83 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileRequestDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileRequestDialogTest.kt
@@ -22,11 +22,11 @@
 import android.graphics.Color
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.Icon
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -48,7 +48,7 @@
 import java.util.Arrays
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class TileRequestDialogTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTest.kt
index 3afa6ad..89ec687 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTest.kt
@@ -22,7 +22,7 @@
 import android.content.DialogInterface
 import android.graphics.drawable.Icon
 import android.os.RemoteException
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.InstanceId
 import com.android.internal.statusbar.IAddTileResultCallback
@@ -51,7 +51,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class TileServiceRequestControllerTest : SysuiTestCase() {
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/domain/interactor/FooterActionsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/domain/interactor/FooterActionsInteractorTest.kt
index 720c25a..c5a2370 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/domain/interactor/FooterActionsInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/domain/interactor/FooterActionsInteractorTest.kt
@@ -19,8 +19,8 @@
 import android.content.Context
 import android.content.Intent
 import android.provider.Settings
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.nano.MetricsProto
 import com.android.internal.logging.testing.FakeMetricsLogger
@@ -49,7 +49,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class FooterActionsInteractorTest : SysuiTestCase() {
     private lateinit var utils: FooterActionsTestUtils
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt
index 1cb3bf6..31652a5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt
@@ -18,10 +18,10 @@
 
 import android.graphics.drawable.Drawable
 import android.os.UserManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
 import android.view.ContextThemeWrapper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.settingslib.Utils
 import com.android.settingslib.drawable.UserIconDrawable
@@ -57,7 +57,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper
 class FooterActionsViewModelTest : SysuiTestCase() {
     private val testScope = TestScope()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt
index 87031d9..b206f56 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.qs.panels.domain.interactor
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.kosmos.testScope
@@ -39,7 +39,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class GridConsistencyInteractorTest : SysuiTestCase() {
 
     private val iconOnlyTiles =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt
index 1eb6d63..1e2e82f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.qs.panels.domain.interactor
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.kosmos.testScope
@@ -30,7 +30,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class InfiniteGridConsistencyInteractorTest : SysuiTestCase() {
 
     private val iconOnlyTiles =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt
index 5201e5d..12c566c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.qs.tileimpl
 
 import android.content.ComponentName
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.qs.QSHost
@@ -93,7 +93,7 @@
         "font_scaling" to FontScalingTile::class.java
 )
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class QSFactoryImplTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSIconViewImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSIconViewImplTest.java
index 81a9604..2580ac2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSIconViewImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSIconViewImplTest.java
@@ -27,10 +27,10 @@
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.Drawable;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.UiThreadTest;
 import android.widget.ImageView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -43,7 +43,7 @@
 import org.mockito.InOrder;
 import org.mockito.Mockito;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @UiThreadTest
 @SmallTest
 public class QSIconViewImplTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
index c706244..e46416c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
@@ -48,11 +48,11 @@
 import android.os.Looper;
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 
 import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.InstanceId;
@@ -85,7 +85,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class QSTileImplTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt
index 196f654..130aafb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt
@@ -19,24 +19,20 @@
 import android.content.Context
 import android.graphics.Rect
 import android.graphics.drawable.Drawable
-import android.platform.test.annotations.DisableFlags
-import android.platform.test.annotations.EnableFlags
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.text.TextUtils
 import android.view.ContextThemeWrapper
 import android.view.View
 import android.view.accessibility.AccessibilityNodeInfo
 import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import com.android.systemui.Flags.FLAG_QUICK_SETTINGS_VISUAL_HAPTICS_LONGPRESS
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.haptics.qs.QSLongPressEffect
 import com.android.systemui.haptics.qs.qsLongPressEffect
 import com.android.systemui.plugins.qs.QSTile
-import com.android.systemui.qs.qsTileFactory
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import org.junit.Before
@@ -45,7 +41,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class QSTileViewImplTest : SysuiTestCase() {
@@ -540,30 +536,10 @@
         assertThat(tileView.haveLongPressPropertiesBeenReset).isTrue()
     }
 
-    @Test
-    @EnableFlags(FLAG_QUICK_SETTINGS_VISUAL_HAPTICS_LONGPRESS)
-    fun onInit_withLongPressEffect_longPressEffectHasTileAndExpandable() {
-        val tile = kosmos.qsTileFactory.createTile("Test Tile")
-        tileView.init(tile)
-
-        assertThat(tileView.isTileAddedToLongPress).isTrue()
-        assertThat(tileView.isExpandableAddedToLongPress).isTrue()
-    }
-
-    @Test
-    @DisableFlags(FLAG_QUICK_SETTINGS_VISUAL_HAPTICS_LONGPRESS)
-    fun onInit_withoutLongPressEffect_longPressEffectDoesNotHaveTileAndExpandable() {
-        val tile = kosmos.qsTileFactory.createTile("Test Tile")
-        tileView.init(tile)
-
-        assertThat(tileView.isTileAddedToLongPress).isFalse()
-        assertThat(tileView.isExpandableAddedToLongPress).isFalse()
-    }
-
     class FakeTileView(
         context: Context,
         collapsed: Boolean,
-        private val longPressEffect: QSLongPressEffect?,
+        longPressEffect: QSLongPressEffect?,
     ) : QSTileViewImpl(
             ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings),
             collapsed,
@@ -571,11 +547,6 @@
     ) {
         var constantLongPressEffectDuration = 500
 
-        val isTileAddedToLongPress: Boolean
-            get() = longPressEffect?.qsTile != null
-        val isExpandableAddedToLongPress: Boolean
-            get() = longPressEffect?.expandable != null
-
         override fun getLongPressEffectDuration(): Int = constantLongPressEffectDuration
         fun changeState(state: QSTile.State) {
             handleStateChanged(state)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/ResourceIconTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/ResourceIconTest.kt
index 9c1cad6..e112bb0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/ResourceIconTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/ResourceIconTest.kt
@@ -16,14 +16,14 @@
 
 package com.android.systemui.qs.tileimpl
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class ResourceIconTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt
index f2400ec..9c20a6c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.qs.tileimpl
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
@@ -26,7 +26,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @MediumTest
 class TilesStatesTextTest : SysuiTestCase() {
 
@@ -76,4 +76,4 @@
         assertThat(SubtitleArrayMapping.getSubtitleId(null))
             .isEqualTo(R.array.tile_states_default)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AirplaneModeTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AirplaneModeTileTest.kt
index ad87315..7a99aef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AirplaneModeTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AirplaneModeTileTest.kt
@@ -18,8 +18,8 @@
 
 import android.net.ConnectivityManager
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.telephony.flags.Flags
@@ -50,7 +50,7 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class AirplaneModeTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AlarmTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AlarmTileTest.kt
index 52b8455..518b6de 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AlarmTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/AlarmTileTest.kt
@@ -5,8 +5,8 @@
 import android.os.Handler
 import android.provider.AlarmClock
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.SysuiTestCase
@@ -33,7 +33,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class AlarmTileTest : SysuiTestCase() {
 
@@ -152,4 +152,4 @@
         verify(activityStarter).postStartActivityDismissingKeyguard(pendingIntent,
                 null /* animationController */)
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt
index 2c49e92..d6be314 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt
@@ -18,9 +18,9 @@
 
 import android.content.Context
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.SysuiTestCase
@@ -50,7 +50,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class BatterySaverTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
index 1ffbb7b..9a924ed 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
@@ -4,9 +4,9 @@
 import android.os.Handler
 import android.os.Looper
 import android.os.UserManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.telephony.flags.Flags
@@ -42,7 +42,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class BluetoothTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt
index 0e4b113..093cdf2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt
@@ -19,8 +19,8 @@
 import android.os.Handler
 import android.provider.Settings
 import android.safetycenter.SafetyCenterManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -44,7 +44,7 @@
 import org.mockito.MockitoAnnotations
 import org.mockito.Mockito.`when` as whenever
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class CameraToggleTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CastTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CastTileTest.java
index 46ee569..50cf5cc5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CastTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CastTileTest.java
@@ -32,10 +32,10 @@
 import android.media.projection.MediaProjectionInfo;
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
 import androidx.lifecycle.LifecycleOwner;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -73,7 +73,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class CastTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
index 2250ef3..028beb5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
@@ -26,9 +26,9 @@
 import android.content.Intent;
 import android.os.Handler;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -51,7 +51,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class ColorCorrectionTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
index ea43326..1343527 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
@@ -26,9 +26,9 @@
 import android.content.Intent;
 import android.os.Handler;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -54,7 +54,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class ColorInversionTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt
index 043ddf5..73ae4ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.qs.tiles
 
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.SysuiTestCase
@@ -43,7 +43,7 @@
 import org.mockito.Mock
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class DataSaverTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
index 874368b..418d126 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
@@ -22,9 +22,9 @@
 import android.os.Handler
 import android.provider.Settings
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import androidx.lifecycle.LifecycleOwner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -70,7 +70,7 @@
 import java.util.Optional
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class DeviceControlsTileTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DndTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DndTileTest.kt
index 1173fa3..e01744e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DndTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DndTileTest.kt
@@ -23,9 +23,9 @@
 import android.provider.Settings
 import android.provider.Settings.Global.ZEN_MODE_NO_INTERRUPTIONS
 import android.provider.Settings.Global.ZEN_MODE_OFF
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.ContextThemeWrapper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -59,7 +59,7 @@
 import org.mockito.Mockito.`when` as whenever
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class DndTileTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
index a3c2975..190d80f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
@@ -35,9 +35,9 @@
 import android.provider.Settings;
 import android.service.dreams.IDreamManager;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -63,7 +63,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class DreamTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FlashlightTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FlashlightTileTest.kt
index c1a0928..f90463e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FlashlightTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FlashlightTileTest.kt
@@ -2,8 +2,8 @@
 
 import android.content.Context
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -26,7 +26,7 @@
 import org.mockito.Mockito
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class FlashlightTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
index 1c42dd1..c854920 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
@@ -18,8 +18,8 @@
 import android.content.Intent
 import android.os.Handler
 import android.provider.Settings
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.SysuiTestCase
@@ -52,7 +52,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class FontScalingTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HearingDevicesTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HearingDevicesTileTest.java
index 56671bf..76c8cf0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HearingDevicesTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HearingDevicesTileTest.java
@@ -28,23 +28,28 @@
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
+import android.service.quicksettings.Tile;
 import android.testing.TestableLooper;
 import android.view.View;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.Flags;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.accessibility.hearingaid.HearingDevicesChecker;
 import com.android.systemui.accessibility.hearingaid.HearingDevicesDialogManager;
 import com.android.systemui.animation.Expandable;
 import com.android.systemui.classifier.FalsingManagerFake;
 import com.android.systemui.plugins.ActivityStarter;
+import com.android.systemui.plugins.qs.QSTile.BooleanState;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.qs.QSHost;
 import com.android.systemui.qs.QsEventLogger;
 import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.res.R;
+import com.android.systemui.statusbar.policy.BluetoothController;
 
 import org.junit.After;
 import org.junit.Before;
@@ -57,7 +62,7 @@
 import org.mockito.junit.MockitoRule;
 
 /** Tests for {@link HearingDevicesTile}. */
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HearingDevicesTileTest extends SysuiTestCase {
@@ -78,7 +83,11 @@
     @Mock
     private QSLogger mQSLogger;
     @Mock
+    private HearingDevicesChecker mDevicesChecker;
+    @Mock
     HearingDevicesDialogManager mHearingDevicesDialogManager;
+    @Mock
+    BluetoothController mBluetoothController;
 
     private TestableLooper mTestableLooper;
     private HearingDevicesTile mTile;
@@ -98,7 +107,9 @@
                 mStatusBarStateController,
                 mActivityStarter,
                 mQSLogger,
-                mHearingDevicesDialogManager);
+                mHearingDevicesDialogManager,
+                mDevicesChecker,
+                mBluetoothController);
 
         mTile.initialize();
         mTestableLooper.processAllMessages();
@@ -142,4 +153,41 @@
 
         verify(mHearingDevicesDialogManager).showDialog(expandable);
     }
+
+    @Test
+    public void handleUpdateState_activeHearingDevice_stateActiveConnectedLabel() {
+        when(mDevicesChecker.isAnyActiveHearingDevice()).thenReturn(true);
+        when(mDevicesChecker.isAnyPairedHearingDevice()).thenReturn(true);
+
+        BooleanState activeState = new BooleanState();
+        mTile.handleUpdateState(activeState, null);
+
+        assertThat(activeState.state).isEqualTo(Tile.STATE_ACTIVE);
+        assertThat(activeState.secondaryLabel.toString()).isEqualTo(
+                mContext.getString(R.string.quick_settings_hearing_devices_connected));
+    }
+
+    @Test
+    public void handleUpdateState_bondedInactiveHearingDevice_stateInactiveDisconnectedLabel() {
+        when(mDevicesChecker.isAnyActiveHearingDevice()).thenReturn(false);
+        when(mDevicesChecker.isAnyPairedHearingDevice()).thenReturn(true);
+
+        BooleanState disconnectedState = new BooleanState();
+        mTile.handleUpdateState(disconnectedState, null);
+
+        assertThat(disconnectedState.state).isEqualTo(Tile.STATE_INACTIVE);
+        assertThat(disconnectedState.secondaryLabel.toString()).isEqualTo(
+                mContext.getString(R.string.quick_settings_hearing_devices_disconnected));
+    }
+
+    @Test
+    public void handleUpdateState_noHearingDevice_stateInactive() {
+        when(mDevicesChecker.isAnyActiveHearingDevice()).thenReturn(false);
+        when(mDevicesChecker.isAnyPairedHearingDevice()).thenReturn(false);
+
+        BooleanState inactiveState = new BooleanState();
+        mTile.handleUpdateState(inactiveState, null);
+
+        assertThat(inactiveState.state).isEqualTo(Tile.STATE_INACTIVE);
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HotspotTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HotspotTileTest.java
index a85b49b6..5bd6944 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HotspotTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/HotspotTileTest.java
@@ -23,9 +23,9 @@
 
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
@@ -54,7 +54,7 @@
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class HotspotTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java
index 0ea61f9..8ea79d7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/InternetTileTest.java
@@ -23,9 +23,9 @@
 
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -51,7 +51,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class InternetTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/LocationTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/LocationTileTest.kt
index 62a50e3..0a1455f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/LocationTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/LocationTileTest.kt
@@ -18,8 +18,8 @@
 
 import android.content.Context
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -47,7 +47,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class LocationTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/MicrophoneToggleTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/MicrophoneToggleTileTest.kt
index b98a7570..dbdf3a4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/MicrophoneToggleTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/MicrophoneToggleTileTest.kt
@@ -19,8 +19,8 @@
 import android.os.Handler
 import android.provider.Settings
 import android.safetycenter.SafetyCenterManager
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -44,7 +44,7 @@
 import org.mockito.MockitoAnnotations
 import org.mockito.Mockito.`when` as whenever
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class MicrophoneToggleTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NfcTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NfcTileTest.java
index f6bc692..442a948 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NfcTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NfcTileTest.java
@@ -24,9 +24,9 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.Handler;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -47,7 +47,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class NfcTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NightDisplayTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NightDisplayTileTest.kt
index a1d9e414..f1c5895 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NightDisplayTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/NightDisplayTileTest.kt
@@ -19,8 +19,8 @@
 import android.hardware.display.ColorDisplayManager
 import android.hardware.display.NightDisplayListener
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations
 import org.mockito.Mockito.`when` as whenever
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class NightDisplayTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/OneHandedModeTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/OneHandedModeTileTest.java
index c391153..d6fa124 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/OneHandedModeTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/OneHandedModeTileTest.java
@@ -22,9 +22,9 @@
 import static org.mockito.Mockito.when;
 
 import android.os.Handler;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -45,7 +45,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class OneHandedModeTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QRCodeScannerTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QRCodeScannerTileTest.java
index d7beb5d..f8f82f2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QRCodeScannerTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QRCodeScannerTileTest.java
@@ -24,9 +24,9 @@
 
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -49,7 +49,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class QRCodeScannerTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
index 122d9e4..914bd0e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
@@ -52,9 +52,9 @@
 import android.service.quickaccesswallet.QuickAccessWalletService;
 import android.service.quickaccesswallet.WalletCard;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -83,7 +83,7 @@
 
 import java.util.Collections;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class QuickAccessWalletTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
index 37654d5..73548ba 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
@@ -18,8 +18,8 @@
 
 import android.os.Handler
 import android.service.quicksettings.Tile
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.SysuiTestCase
@@ -33,6 +33,7 @@
 import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor
 import com.android.systemui.recordissue.IssueRecordingState
 import com.android.systemui.recordissue.RecordIssueDialogDelegate
+import com.android.systemui.recordissue.TraceurMessageSender
 import com.android.systemui.res.R
 import com.android.systemui.settings.UserContextProvider
 import com.android.systemui.statusbar.phone.KeyguardDismissUtil
@@ -41,6 +42,7 @@
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.whenever
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executors
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -54,7 +56,7 @@
  * This class tests the functionality of the RecordIssueTile. The initial state of the tile is
  * always be inactive at the start of these tests.
  */
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class RecordIssueTileTest : SysuiTestCase() {
@@ -70,12 +72,13 @@
     @Mock private lateinit var dialogLauncherAnimator: DialogTransitionAnimator
     @Mock private lateinit var panelInteractor: PanelInteractor
     @Mock private lateinit var userContextProvider: UserContextProvider
+    @Mock private lateinit var issueRecordingState: IssueRecordingState
+    @Mock private lateinit var traceurMessageSender: TraceurMessageSender
     @Mock private lateinit var delegateFactory: RecordIssueDialogDelegate.Factory
     @Mock private lateinit var dialogDelegate: RecordIssueDialogDelegate
     @Mock private lateinit var dialog: SystemUIDialog
 
     private lateinit var testableLooper: TestableLooper
-    private val issueRecordingState = IssueRecordingState()
     private lateinit var tile: RecordIssueTile
 
     @Before
@@ -102,6 +105,8 @@
                 dialogLauncherAnimator,
                 panelInteractor,
                 userContextProvider,
+                traceurMessageSender,
+                Executors.newSingleThreadExecutor(),
                 issueRecordingState,
                 delegateFactory,
             )
@@ -109,7 +114,7 @@
 
     @Test
     fun qsTileUi_shouldLookCorrect_whenInactive() {
-        issueRecordingState.isRecording = false
+        whenever(issueRecordingState.isRecording).thenReturn(false)
 
         val testState = tile.newTileState()
         tile.handleUpdateState(testState, null)
@@ -121,7 +126,7 @@
 
     @Test
     fun qsTileUi_shouldLookCorrect_whenRecording() {
-        issueRecordingState.isRecording = true
+        whenever(issueRecordingState.isRecording).thenReturn(true)
         val testState = tile.newTileState()
         tile.handleUpdateState(testState, null)
 
@@ -132,7 +137,7 @@
 
     @Test
     fun inActiveQsTile_switchesToActive_whenClicked() {
-        issueRecordingState.isRecording = false
+        whenever(issueRecordingState.isRecording).thenReturn(false)
 
         val testState = tile.newTileState()
         tile.handleUpdateState(testState, null)
@@ -142,7 +147,7 @@
 
     @Test
     fun activeQsTile_switchesToInActive_whenClicked() {
-        issueRecordingState.isRecording = true
+        whenever(issueRecordingState.isRecording).thenReturn(true)
 
         val testState = tile.newTileState()
         tile.handleUpdateState(testState, null)
@@ -152,7 +157,7 @@
 
     @Test
     fun showPrompt_shouldUseKeyguardDismissUtil_ToShowDialog() {
-        issueRecordingState.isRecording = false
+        whenever(issueRecordingState.isRecording).thenReturn(false)
 
         tile.handleClick(null)
         testableLooper.processAllMessages()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java
index 8eaa876..798e9fb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java
@@ -25,9 +25,9 @@
 
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.R;
@@ -52,7 +52,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class ReduceBrightColorsTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
index c02fca7..4193063 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
@@ -27,10 +27,10 @@
 import android.content.pm.PackageManager;
 import android.hardware.SensorPrivacyManager;
 import android.os.Handler;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableResources;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -58,7 +58,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class RotationLockTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java
index 507fb86..0d12483 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java
@@ -31,9 +31,9 @@
 import android.app.Dialog;
 import android.os.Handler;
 import android.service.quicksettings.Tile;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.MetricsLogger;
@@ -64,7 +64,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class ScreenRecordTileTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UiModeNightTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UiModeNightTileTest.kt
index 47fc3ec..8324a73 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UiModeNightTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UiModeNightTileTest.kt
@@ -21,8 +21,8 @@
 import android.content.res.Configuration
 import android.content.res.Resources
 import android.os.Handler
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.systemui.res.R
@@ -47,7 +47,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 @SmallTest
 class UiModeNightTileTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt
index f9d69c2..c764c54 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt
@@ -19,10 +19,10 @@
 import android.content.Context
 import android.content.pm.UserInfo
 import android.graphics.Bitmap
-import android.testing.AndroidTestingRunner
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.testing.UiEventLoggerFake
 import com.android.internal.util.UserIcons
@@ -45,7 +45,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class UserDetailViewAdapterTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
index ff712ad..b888617 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
@@ -13,11 +13,11 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableResources;
 import android.view.View;
 import android.widget.LinearLayout;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -39,7 +39,7 @@
 import java.util.List;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class InternetAdapterTest extends SysuiTestCase {
 
     private static final String WIFI_KEY = "Wi-Fi_Key";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
index 29487cd..5273495 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
@@ -51,7 +51,6 @@
 import android.telephony.TelephonyCallback;
 import android.telephony.TelephonyDisplayInfo;
 import android.telephony.TelephonyManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableResources;
 import android.text.TextUtils;
@@ -59,6 +58,7 @@
 import android.view.View;
 import android.view.WindowManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -101,7 +101,7 @@
 import java.util.Map;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class InternetDialogDelegateControllerTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java
index aefcc87..ff8c448 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java
@@ -18,7 +18,6 @@
 import android.content.Intent;
 import android.os.Handler;
 import android.telephony.TelephonyManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.View;
 import android.widget.LinearLayout;
@@ -26,6 +25,7 @@
 import android.widget.TextView;
 
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.dx.mockito.inline.extended.ExtendedMockito;
@@ -56,7 +56,7 @@
 
 @Ignore("b/257089187")
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class InternetDialogDelegateTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/WifiStateWorkerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/WifiStateWorkerTest.java
index 5d7ba7b..57484c2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/WifiStateWorkerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/WifiStateWorkerTest.java
@@ -35,8 +35,8 @@
 
 import android.content.Intent;
 import android.net.wifi.WifiManager;
-import android.testing.AndroidTestingRunner;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -52,7 +52,7 @@
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 public class WifiStateWorkerTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt
index e48d96b..ad6c64b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt
@@ -19,8 +19,8 @@
 import android.content.DialogInterface
 import android.content.Intent
 import android.provider.Settings
-import android.testing.AndroidTestingRunner
 import android.widget.Button
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
@@ -53,7 +53,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class UserSwitchDialogControllerTest : SysuiTestCase() {
 
     @Mock
diff --git a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayDialogControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayDialogControllerTest.java
index b75b318..3aaaf95 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayDialogControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayDialogControllerTest.java
@@ -29,12 +29,12 @@
 import android.content.res.Resources;
 import android.hardware.devicestate.DeviceState;
 import android.hardware.devicestate.DeviceStateManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -54,7 +54,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class RearDisplayDialogControllerTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt
index 74deae3..fc74586 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt
@@ -23,9 +23,9 @@
 import android.os.PowerManager
 import android.os.Process
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableContext
 import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito
 import com.android.internal.app.AssistUtils
@@ -81,7 +81,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class OverviewProxyServiceTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
index fcc6b4f..503c52f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
@@ -17,13 +17,12 @@
 package com.android.systemui.recordissue
 
 import android.app.Dialog
-import android.content.Context
 import android.content.SharedPreferences
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.widget.Button
 import android.widget.Switch
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.animation.DialogTransitionAnimator
@@ -35,9 +34,8 @@
 import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver
 import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDisabledDialogDelegate
 import com.android.systemui.model.SysUiState
-import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ISSUE_TYPE_NOT_SET
 import com.android.systemui.res.R
-import com.android.systemui.settings.UserFileManager
 import com.android.systemui.settings.UserTracker
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.phone.SystemUIDialogManager
@@ -63,7 +61,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class RecordIssueDialogDelegateTest : SysuiTestCase() {
 
@@ -72,7 +70,7 @@
     @Mock private lateinit var dprLazy: dagger.Lazy<ScreenCaptureDevicePolicyResolver>
     @Mock private lateinit var mediaProjectionMetricsLogger: MediaProjectionMetricsLogger
     @Mock private lateinit var userTracker: UserTracker
-    @Mock private lateinit var userFileManager: UserFileManager
+    @Mock private lateinit var state: IssueRecordingState
     @Mock private lateinit var sharedPreferences: SharedPreferences
     @Mock
     private lateinit var screenCaptureDisabledDialogDelegate: ScreenCaptureDisabledDialogDelegate
@@ -81,6 +79,7 @@
     @Mock private lateinit var sysuiState: SysUiState
     @Mock private lateinit var systemUIDialogManager: SystemUIDialogManager
     @Mock private lateinit var broadcastDispatcher: BroadcastDispatcher
+    @Mock private lateinit var traceurMessageSender: TraceurMessageSender
     private val systemClock = FakeSystemClock()
     private val bgExecutor = FakeExecutor(systemClock)
     private val mainExecutor = FakeExecutor(systemClock)
@@ -89,7 +88,6 @@
     private lateinit var dialog: SystemUIDialog
     private lateinit var factory: SystemUIDialog.Factory
     private lateinit var latch: CountDownLatch
-    private var issueRecordingState = IssueRecordingState()
 
     @Before
     fun setup() {
@@ -98,14 +96,7 @@
         whenever(sysuiState.setFlag(anyLong(), anyBoolean())).thenReturn(sysuiState)
         whenever(screenCaptureDisabledDialogDelegate.createSysUIDialog())
             .thenReturn(screenCaptureDisabledDialog)
-        whenever(
-                userFileManager.getSharedPreferences(
-                    eq(RecordIssueTile.TILE_SPEC),
-                    eq(Context.MODE_PRIVATE),
-                    anyInt()
-                )
-            )
-            .thenReturn(sharedPreferences)
+        whenever(state.issueTypeRes).thenReturn(ISSUE_TYPE_NOT_SET)
 
         factory =
             spy(
@@ -128,9 +119,9 @@
                     mainExecutor,
                     dprLazy,
                     mediaProjectionMetricsLogger,
-                    userFileManager,
                     screenCaptureDisabledDialogDelegate,
-                    issueRecordingState,
+                    state,
+                    traceurMessageSender
                 ) {
                     latch.countDown()
                 }
@@ -188,8 +179,7 @@
         whenever(devicePolicyResolver.isScreenCaptureCompletelyDisabled(any<UserHandle>()))
             .thenReturn(false)
         whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(true)
-        whenever(sharedPreferences.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false))
-            .thenReturn(false)
+        whenever(state.hasUserApprovedScreenRecording).thenReturn(false)
 
         val screenRecordSwitch = dialog.requireViewById<Switch>(R.id.screenrecord_switch)
         screenRecordSwitch.isChecked = true
diff --git a/packages/SystemUI/tests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
index fe80f70..ba7a65d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.retail.data.repository
 
 import android.provider.Settings
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.coroutines.collectLastValue
@@ -33,7 +33,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class RetailModeSettingsRepositoryTest : SysuiTestCase() {
 
     private val globalSettings = FakeGlobalSettings()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/retail/domain/interactor/RetailModeInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/retail/domain/interactor/RetailModeInteractorImplTest.kt
index 8f13169..b536520 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/retail/domain/interactor/RetailModeInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/retail/domain/interactor/RetailModeInteractorImplTest.kt
@@ -16,7 +16,7 @@
 
 package com.android.systemui.retail.domain.interactor
 
-import android.testing.AndroidTestingRunner
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.retail.data.repository.FakeRetailModeRepository
@@ -25,7 +25,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 class RetailModeInteractorImplTest : SysuiTestCase() {
 
     private val retailModeRepository = FakeRetailModeRepository()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt
new file mode 100644
index 0000000..4945ace
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.android.systemui.screenshot.policy
+
+import android.content.ComponentName
+import android.graphics.Insets
+import android.graphics.Rect
+import android.os.UserHandle
+import android.view.Display.DEFAULT_DISPLAY
+import android.view.WindowManager.ScreenshotSource.SCREENSHOT_KEY_CHORD
+import android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN
+import com.android.systemui.screenshot.ImageCapture
+import com.android.systemui.screenshot.ScreenshotData
+import com.android.systemui.screenshot.data.model.DisplayContentScenarios.ActivityNames.FILES
+import com.android.systemui.screenshot.data.model.DisplayContentScenarios.TaskSpec
+import com.android.systemui.screenshot.data.model.DisplayContentScenarios.singleFullScreen
+import com.android.systemui.screenshot.data.repository.DisplayContentRepository
+import com.android.systemui.screenshot.policy.TestUserIds.PERSONAL
+import com.android.systemui.screenshot.policy.TestUserIds.WORK
+import com.google.common.truth.Truth.assertWithMessage
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
+
+class PolicyRequestProcessorTest {
+
+    val imageCapture = object : ImageCapture {
+        override fun captureDisplay(displayId: Int, crop: Rect?) = null
+        override suspend fun captureTask(taskId: Int) = null
+    }
+
+    /** Tests behavior when no policies are applied */
+    @Test
+    fun testProcess_defaultOwner_whenNoPolicyApplied() {
+        val fullScreenWork = DisplayContentRepository {
+            singleFullScreen(TaskSpec(taskId = 1001, name = FILES, userId = WORK))
+        }
+
+        val request =
+            ScreenshotData(TAKE_SCREENSHOT_FULLSCREEN,
+                SCREENSHOT_KEY_CHORD,
+                null,
+                topComponent = null,
+                screenBounds = Rect(0, 0, 1, 1),
+                taskId = -1,
+                insets = Insets.NONE,
+                bitmap = null,
+                displayId = DEFAULT_DISPLAY)
+
+        /* Create a policy request processor with no capture policies */
+        val requestProcessor =
+            PolicyRequestProcessor(Dispatchers.Unconfined,
+                imageCapture,
+                policies = emptyList(),
+                defaultOwner = UserHandle.of(PERSONAL),
+                defaultComponent = ComponentName("default", "Component"),
+                displayTasks = fullScreenWork)
+
+        val result = runBlocking { requestProcessor.process(request) }
+
+        assertWithMessage(
+            "With no policy, the screenshot should be assigned to the default user"
+        ).that(result.userHandle).isEqualTo(UserHandle.of(PERSONAL))
+
+        assertWithMessage("The topComponent of the screenshot").that(result.topComponent)
+                .isEqualTo(ComponentName.unflattenFromString(FILES))
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
index 4a867a8..586adbd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
@@ -519,6 +519,46 @@
     }
 
     @Test
+    fun handleExternalTouch_intercepted_sendsOnTouch() {
+        // Accept dispatch and also intercept.
+        whenever(view.dispatchTouchEvent(any())).thenReturn(true)
+        whenever(view.onInterceptTouchEvent(any())).thenReturn(true)
+
+        underTest.handleExternalTouch(DOWN_EVENT)
+        underTest.handleExternalTouch(MOVE_EVENT)
+
+        // Once intercepted, both events are sent to the view.
+        verify(view).onTouchEvent(DOWN_EVENT)
+        verify(view).onTouchEvent(MOVE_EVENT)
+    }
+
+    @Test
+    fun handleExternalTouch_notDispatched_interceptNotCalled() {
+        // Don't accept dispatch
+        whenever(view.dispatchTouchEvent(any())).thenReturn(false)
+
+        underTest.handleExternalTouch(DOWN_EVENT)
+
+        // Interception is not offered.
+        verify(view, never()).onInterceptTouchEvent(any())
+    }
+
+    @Test
+    fun handleExternalTouch_notIntercepted_onTouchNotSent() {
+        // Accept dispatch, but don't dispatch
+        whenever(view.dispatchTouchEvent(any())).thenReturn(true)
+        whenever(view.onInterceptTouchEvent(any())).thenReturn(false)
+
+        underTest.handleExternalTouch(DOWN_EVENT)
+        underTest.handleExternalTouch(MOVE_EVENT)
+
+        // Interception offered for both events, but onTouchEvent is never called.
+        verify(view).onInterceptTouchEvent(DOWN_EVENT)
+        verify(view).onInterceptTouchEvent(MOVE_EVENT)
+        verify(view, never()).onTouchEvent(any())
+    }
+
+    @Test
     fun testGetKeyguardMessageArea() =
         testScope.runTest {
             underTest.keyguardMessageArea
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyboardShortcutsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyboardShortcutsTest.java
index 2b3f139..6ad8b8b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyboardShortcutsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyboardShortcutsTest.java
@@ -18,12 +18,16 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import static java.util.Collections.singletonList;
+
+import android.annotation.Nullable;
 import android.app.Dialog;
 import android.graphics.drawable.Icon;
 import android.os.Handler;
@@ -44,11 +48,13 @@
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
+import org.mockito.stubbing.Answer;
 
 import java.util.Arrays;
-import java.util.Collections;
+import java.util.List;
 
 @SmallTest
 @RunWith(AndroidJUnit4.class)
@@ -56,7 +62,7 @@
 
     @Rule public MockitoRule mockito = MockitoJUnit.rule();
 
-    private static int DEVICE_ID = 1;
+    private static final int DEVICE_ID = 1;
     private KeyboardShortcuts mKeyboardShortcuts;
 
     @Mock private Dialog mDialog;
@@ -66,26 +72,35 @@
     @Before
     public void setUp() {
         mKeyboardShortcuts = new KeyboardShortcuts(mContext, mWindowManager);
-        mKeyboardShortcuts.sInstance = mKeyboardShortcuts;
+        KeyboardShortcuts.sInstance = mKeyboardShortcuts;
         mKeyboardShortcuts.mKeyboardShortcutsDialog = mDialog;
         mKeyboardShortcuts.mContext = mContext;
         mKeyboardShortcuts.mBackgroundHandler = mHandler;
+        when(mHandler.post(any()))
+                .thenAnswer(
+                        new Answer<>() {
+                            @Override
+                            public Object answer(InvocationOnMock invocation) {
+                                ((Runnable) invocation.getArgument(0)).run();
+                                return null;
+                            }
+                        });
     }
 
     @Test
     public void toggle_isShowingTrue_instanceShouldBeNull() {
         when(mDialog.isShowing()).thenReturn(true);
 
-        mKeyboardShortcuts.toggle(mContext, DEVICE_ID);
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
 
-        assertThat(mKeyboardShortcuts.sInstance).isNull();
+        assertThat(KeyboardShortcuts.sInstance).isNull();
     }
 
     @Test
     public void toggle_isShowingFalse_showKeyboardShortcuts() {
         when(mDialog.isShowing()).thenReturn(false);
 
-        mKeyboardShortcuts.toggle(mContext, DEVICE_ID);
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
 
         verify(mWindowManager).requestAppKeyboardShortcuts(any(), anyInt());
         verify(mWindowManager).requestImeKeyboardShortcuts(any(), anyInt());
@@ -95,7 +110,7 @@
     public void sanitiseShortcuts_clearsIcons() {
         KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
 
-        KeyboardShortcuts.sanitiseShortcuts(Collections.singletonList(group));
+        KeyboardShortcuts.sanitiseShortcuts(singletonList(group));
 
         verify(group.getItems().get(0)).clearIcon();
         verify(group.getItems().get(1)).clearIcon();
@@ -106,7 +121,7 @@
         KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
         group.setPackageName(null);
 
-        KeyboardShortcuts.sanitiseShortcuts(Collections.singletonList(group));
+        KeyboardShortcuts.sanitiseShortcuts(singletonList(group));
 
         verify(group.getItems().get(0)).clearIcon();
         verify(group.getItems().get(1)).clearIcon();
@@ -116,16 +131,9 @@
     @EnableFlags(Flags.FLAG_VALIDATE_KEYBOARD_SHORTCUT_HELPER_ICON_URI)
     public void requestAppKeyboardShortcuts_callback_sanitisesIcons() {
         KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
 
-        mKeyboardShortcuts.toggle(mContext, DEVICE_ID);
-
-        ArgumentCaptor<WindowManager.KeyboardShortcutsReceiver> callbackCaptor =
-                ArgumentCaptor.forClass(WindowManager.KeyboardShortcutsReceiver.class);
-        ArgumentCaptor<Runnable> handlerRunnableCaptor = ArgumentCaptor.forClass(Runnable.class);
-        verify(mWindowManager).requestAppKeyboardShortcuts(callbackCaptor.capture(), anyInt());
-        callbackCaptor.getValue().onKeyboardShortcutsReceived(Collections.singletonList(group));
-        verify(mHandler).post(handlerRunnableCaptor.capture());
-        handlerRunnableCaptor.getValue().run();
+        emitAppShortcuts(singletonList(group), DEVICE_ID);
 
         verify(group.getItems().get(0)).clearIcon();
         verify(group.getItems().get(1)).clearIcon();
@@ -135,20 +143,38 @@
     @EnableFlags(Flags.FLAG_VALIDATE_KEYBOARD_SHORTCUT_HELPER_ICON_URI)
     public void requestImeKeyboardShortcuts_callback_sanitisesIcons() {
         KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
 
-        mKeyboardShortcuts.toggle(mContext, DEVICE_ID);
-
-        ArgumentCaptor<WindowManager.KeyboardShortcutsReceiver> callbackCaptor =
-                ArgumentCaptor.forClass(WindowManager.KeyboardShortcutsReceiver.class);
-        ArgumentCaptor<Runnable> handlerRunnableCaptor = ArgumentCaptor.forClass(Runnable.class);
-        verify(mWindowManager).requestImeKeyboardShortcuts(callbackCaptor.capture(), anyInt());
-        callbackCaptor.getValue().onKeyboardShortcutsReceived(Collections.singletonList(group));
-        verify(mHandler).post(handlerRunnableCaptor.capture());
-        handlerRunnableCaptor.getValue().run();
+        emitImeShortcuts(singletonList(group), DEVICE_ID);
 
         verify(group.getItems().get(0)).clearIcon();
         verify(group.getItems().get(1)).clearIcon();
+    }
 
+    @Test
+    public void onImeAndAppShortcutsReceived_appShortcutsNull_doesNotCrash() {
+        KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
+
+        emitImeShortcuts(singletonList(group), DEVICE_ID);
+        emitAppShortcuts(/* groups= */ null, DEVICE_ID);
+    }
+
+    @Test
+    public void onImeAndAppShortcutsReceived_imeShortcutsNull_doesNotCrash() {
+        KeyboardShortcutGroup group = createKeyboardShortcutGroupForIconTests();
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
+
+        emitAppShortcuts(singletonList(group), DEVICE_ID);
+        emitImeShortcuts(/* groups= */ null, DEVICE_ID);
+    }
+
+    @Test
+    public void onImeAndAppShortcutsReceived_bothNull_doesNotCrash() {
+        KeyboardShortcuts.toggle(mContext, DEVICE_ID);
+
+        emitImeShortcuts(/* groups= */ null, DEVICE_ID);
+        emitAppShortcuts(/* groups= */ null, DEVICE_ID);
     }
 
     private KeyboardShortcutGroup createKeyboardShortcutGroupForIconTests() {
@@ -159,9 +185,23 @@
         when(info1.getIcon()).thenReturn(icon);
         when(info2.getIcon()).thenReturn(icon);
 
-        KeyboardShortcutGroup group = new KeyboardShortcutGroup("label",
-                Arrays.asList(new KeyboardShortcutInfo[]{ info1, info2}));
+        KeyboardShortcutGroup group =
+                new KeyboardShortcutGroup("label", Arrays.asList(info1, info2));
         group.setPackageName("com.example");
         return group;
     }
+
+    private void emitImeShortcuts(@Nullable List<KeyboardShortcutGroup> groups, int deviceId) {
+        ArgumentCaptor<WindowManager.KeyboardShortcutsReceiver> callbackCaptor =
+                ArgumentCaptor.forClass(WindowManager.KeyboardShortcutsReceiver.class);
+        verify(mWindowManager).requestImeKeyboardShortcuts(callbackCaptor.capture(), eq(deviceId));
+        callbackCaptor.getValue().onKeyboardShortcutsReceived(groups);
+    }
+
+    private void emitAppShortcuts(@Nullable List<KeyboardShortcutGroup> groups, int deviceId) {
+        ArgumentCaptor<WindowManager.KeyboardShortcutsReceiver> callbackCaptor =
+                ArgumentCaptor.forClass(WindowManager.KeyboardShortcutsReceiver.class);
+        verify(mWindowManager).requestAppKeyboardShortcuts(callbackCaptor.capture(), eq(deviceId));
+        callbackCaptor.getValue().onKeyboardShortcutsReceived(groups);
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
index b6ee46d..50131cb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
@@ -97,7 +97,8 @@
 
         mIconView = new StatusBarIconView(mContext, "test_slot", null);
         mStatusBarIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
-                Icon.createWithResource(mContext, R.drawable.ic_android), 0, 0, "");
+                Icon.createWithResource(mContext, R.drawable.ic_android), 0, 0, "",
+                StatusBarIcon.Type.SystemIcon);
     }
 
     @Test
@@ -138,7 +139,7 @@
         Bitmap largeBitmap = Bitmap.createBitmap(6000, 6000, Bitmap.Config.ARGB_8888);
         Icon icon = Icon.createWithBitmap(largeBitmap);
         StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
-                icon, 0, 0, "");
+                icon, 0, 0, "", StatusBarIcon.Type.SystemIcon);
         assertTrue(mIconView.set(largeIcon));
 
         // The view should downscale the bitmap.
@@ -152,7 +153,7 @@
         Bitmap bitmap = Bitmap.createBitmap(60, 60, Bitmap.Config.ARGB_8888);
         Icon icon = Icon.createWithBitmap(bitmap);
         StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
-                icon, 0, 0, "");
+                icon, 0, 0, "", StatusBarIcon.Type.SystemIcon);
         mIconView.setNotification(getMockSbn());
         mIconView.getIcon(largeIcon);
         // no crash? good
@@ -172,7 +173,7 @@
         Bitmap bitmap = Bitmap.createBitmap(60, 60, Bitmap.Config.ARGB_8888);
         Icon icon = Icon.createWithBitmap(bitmap);
         StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
-                icon, 0, 0, "");
+                icon, 0, 0, "", StatusBarIcon.Type.SystemIcon);
         mIconView.getIcon(largeIcon);
         // No crash? good
     }
@@ -430,7 +431,7 @@
                 width, height, Bitmap.Config.ARGB_8888);
         Icon icon = Icon.createWithBitmap(bitmap);
         mStatusBarIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
-                icon, 0, 0, "");
+                icon, 0, 0, "", StatusBarIcon.Type.SystemIcon);
         // Since we only want to verify icon scale logic here, we directly use
         // {@link StatusBarIconView#setImageDrawable(Drawable)} to set the image drawable
         // to iconView instead of call {@link StatusBarIconView#set(StatusBarIcon)}. It's to prevent
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManagerTest.kt
index 9e733be..acb005f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationSectionsFeatureManagerTest.kt
@@ -19,71 +19,86 @@
 import android.platform.test.annotations.DisableFlags
 import android.provider.DeviceConfig
 import android.provider.Settings
-
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.dx.mockito.inline.extended.ExtendedMockito
-
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NOTIFICATIONS_USE_PEOPLE_FILTERING
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.statusbar.notification.shared.NotificationMinimalismPrototype
 import com.android.systemui.statusbar.notification.shared.PriorityPeopleSection
 import com.android.systemui.util.DeviceConfigProxyFake
 import com.android.systemui.util.Utils
 import com.android.systemui.util.mockito.any
-
 import org.junit.After
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.MockitoSession
+import org.mockito.kotlin.whenever
 import org.mockito.quality.Strictness
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
-@DisableFlags(PriorityPeopleSection.FLAG_NAME)  // this class has no logic with the flag enabled
+// this class has no testable logic with either of these flags enabled
+@DisableFlags(PriorityPeopleSection.FLAG_NAME, NotificationMinimalismPrototype.V2.FLAG_NAME)
 class NotificationSectionsFeatureManagerTest : SysuiTestCase() {
-    var manager: NotificationSectionsFeatureManager? = null
-    val proxyFake = DeviceConfigProxyFake()
+    lateinit var manager: NotificationSectionsFeatureManager
+    private val proxyFake = DeviceConfigProxyFake()
     private lateinit var staticMockSession: MockitoSession
 
     @Before
-    public fun setup() {
+    fun setup() {
         manager = NotificationSectionsFeatureManager(proxyFake, mContext)
-        manager!!.clearCache()
-        staticMockSession = ExtendedMockito.mockitoSession()
-            .mockStatic<Utils>(Utils::class.java)
-            .strictness(Strictness.LENIENT)
-            .startMocking()
-        `when`(Utils.useQsMediaPlayer(any())).thenReturn(false)
-        Settings.Global.putInt(context.getContentResolver(),
-                Settings.Global.SHOW_MEDIA_ON_QUICK_SETTINGS, 0)
+        manager.clearCache()
+        staticMockSession =
+            ExtendedMockito.mockitoSession()
+                .mockStatic(Utils::class.java)
+                .strictness(Strictness.LENIENT)
+                .startMocking()
+        whenever(Utils.useQsMediaPlayer(any())).thenReturn(false)
+        Settings.Global.putInt(
+            context.getContentResolver(),
+            Settings.Global.SHOW_MEDIA_ON_QUICK_SETTINGS,
+            0
+        )
     }
 
     @After
-    public fun teardown() {
+    fun teardown() {
         staticMockSession.finishMocking()
     }
 
     @Test
-    public fun testPeopleFilteringOff_newInterruptionModelOn() {
+    fun testPeopleFilteringOff_newInterruptionModelOn() {
         proxyFake.setProperty(
-                DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_USE_PEOPLE_FILTERING, "false", false)
+            DeviceConfig.NAMESPACE_SYSTEMUI,
+            NOTIFICATIONS_USE_PEOPLE_FILTERING,
+            "false",
+            false
+        )
 
-        assertFalse("People filtering should be disabled", manager!!.isFilteringEnabled())
-        assertTrue("Expecting 2 buckets when people filtering is disabled",
-                manager!!.getNumberOfBuckets() == 2)
+        assertFalse("People filtering should be disabled", manager.isFilteringEnabled())
+        assertTrue(
+            "Expecting 2 buckets when people filtering is disabled",
+            manager.getNumberOfBuckets() == 2
+        )
     }
 
     @Test
-    public fun testPeopleFilteringOn_newInterruptionModelOn() {
+    fun testPeopleFilteringOn_newInterruptionModelOn() {
         proxyFake.setProperty(
-                DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_USE_PEOPLE_FILTERING, "true", false)
+            DeviceConfig.NAMESPACE_SYSTEMUI,
+            NOTIFICATIONS_USE_PEOPLE_FILTERING,
+            "true",
+            false
+        )
 
-        assertTrue("People filtering should be enabled", manager!!.isFilteringEnabled())
-        assertTrue("Expecting 5 buckets when people filtering is enabled",
-                manager!!.getNumberOfBuckets() == 5)
+        assertTrue("People filtering should be enabled", manager.isFilteringEnabled())
+        assertTrue(
+            "Expecting 5 buckets when people filtering is enabled",
+            manager.getNumberOfBuckets() == 5
+        )
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
index 0d3ab86..b278f1a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
@@ -41,6 +41,7 @@
 import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.Looper;
+import android.platform.test.annotations.DisableFlags;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.util.TypedValue;
@@ -60,6 +61,7 @@
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
 import com.android.systemui.statusbar.policy.InflatedSmartReplyState;
 import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder;
 import com.android.systemui.statusbar.policy.SmartReplyStateInflater;
@@ -81,6 +83,7 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @RunWithLooper(setAsMainLooper = true)
+@DisableFlags(NotificationRowContentBinderRefactor.FLAG_NAME)
 public class NotificationContentInflaterTest extends SysuiTestCase {
 
     private NotificationContentInflater mNotificationInflater;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt
new file mode 100644
index 0000000..e6cba1c
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt
@@ -0,0 +1,572 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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
+ */
+package com.android.systemui.statusbar.notification.row
+
+import android.app.Notification
+import android.content.Context
+import android.os.AsyncTask
+import android.os.Build
+import android.os.CancellationSignal
+import android.platform.test.annotations.EnableFlags
+import android.testing.TestableLooper.RunWithLooper
+import android.util.TypedValue
+import android.view.View
+import android.view.ViewGroup
+import android.widget.RemoteViews
+import android.widget.TextView
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.notification.ConversationNotificationProcessor
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag
+import com.android.systemui.statusbar.notification.row.shared.HeadsUpStatusBarModel
+import com.android.systemui.statusbar.notification.row.shared.NewRemoteViews
+import com.android.systemui.statusbar.notification.row.shared.NotificationContentModel
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor
+import com.android.systemui.statusbar.policy.InflatedSmartReplyState
+import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder
+import com.android.systemui.statusbar.policy.SmartReplyStateInflater
+import com.android.systemui.util.concurrency.mockExecutorHandler
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executor
+import java.util.concurrent.TimeUnit
+import org.junit.Assert
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@RunWithLooper
+@EnableFlags(NotificationRowContentBinderRefactor.FLAG_NAME)
+class NotificationRowContentBinderImplTest : SysuiTestCase() {
+    private lateinit var mNotificationInflater: NotificationRowContentBinderImpl
+    private lateinit var mBuilder: Notification.Builder
+    private lateinit var mRow: ExpandableNotificationRow
+    private lateinit var mHelper: NotificationTestHelper
+
+    private var mCache: NotifRemoteViewCache = mock()
+    private var mConversationNotificationProcessor: ConversationNotificationProcessor = mock()
+    private var mInflatedSmartReplyState: InflatedSmartReplyState = mock()
+    private var mInflatedSmartReplies: InflatedSmartReplyViewHolder = mock()
+    private var mNotifLayoutInflaterFactoryProvider: NotifLayoutInflaterFactory.Provider = mock()
+    private var mHeadsUpStyleProvider: HeadsUpStyleProvider = mock()
+    private var mNotifLayoutInflaterFactory: NotifLayoutInflaterFactory = mock()
+    private val mSmartReplyStateInflater: SmartReplyStateInflater =
+        object : SmartReplyStateInflater {
+            override fun inflateSmartReplyViewHolder(
+                sysuiContext: Context,
+                notifPackageContext: Context,
+                entry: NotificationEntry,
+                existingSmartReplyState: InflatedSmartReplyState?,
+                newSmartReplyState: InflatedSmartReplyState
+            ): InflatedSmartReplyViewHolder {
+                return mInflatedSmartReplies
+            }
+
+            override fun inflateSmartReplyState(entry: NotificationEntry): InflatedSmartReplyState {
+                return mInflatedSmartReplyState
+            }
+        }
+
+    @Before
+    fun setUp() {
+        allowTestableLooperAsMainThread()
+        mBuilder =
+            Notification.Builder(mContext, "no-id")
+                .setSmallIcon(R.drawable.ic_person)
+                .setContentTitle("Title")
+                .setContentText("Text")
+                .setStyle(Notification.BigTextStyle().bigText("big text"))
+        mHelper = NotificationTestHelper(mContext, mDependency)
+        val row = mHelper.createRow(mBuilder.build())
+        mRow = spy(row)
+        whenever(mNotifLayoutInflaterFactoryProvider.provide(any(), any()))
+            .thenReturn(mNotifLayoutInflaterFactory)
+        mNotificationInflater =
+            NotificationRowContentBinderImpl(
+                mCache,
+                mock(),
+                mConversationNotificationProcessor,
+                mock(),
+                mSmartReplyStateInflater,
+                mNotifLayoutInflaterFactoryProvider,
+                mHeadsUpStyleProvider,
+                mock()
+            )
+    }
+
+    @Test
+    fun testIncreasedHeadsUpBeingUsed() {
+        val params = BindParams()
+        params.usesIncreasedHeadsUpHeight = true
+        val builder = spy(mBuilder)
+        mNotificationInflater.inflateNotificationViews(
+            mRow.entry,
+            mRow,
+            params,
+            true /* inflateSynchronously */,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            builder,
+            mContext,
+            mSmartReplyStateInflater
+        )
+        verify(builder).createHeadsUpContentView(true)
+    }
+
+    @Test
+    fun testIncreasedHeightBeingUsed() {
+        val params = BindParams()
+        params.usesIncreasedHeight = true
+        val builder = spy(mBuilder)
+        mNotificationInflater.inflateNotificationViews(
+            mRow.entry,
+            mRow,
+            params,
+            true /* inflateSynchronously */,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            builder,
+            mContext,
+            mSmartReplyStateInflater
+        )
+        verify(builder).createContentView(true)
+    }
+
+    @Test
+    fun testInflationCallsUpdated() {
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            mRow
+        )
+        verify(mRow).onNotificationUpdated()
+    }
+
+    @Test
+    fun testInflationOnlyInflatesSetFlags() {
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP,
+            mRow
+        )
+        Assert.assertNotNull(mRow.privateLayout.headsUpChild)
+        verify(mRow).onNotificationUpdated()
+    }
+
+    @Test
+    fun testInflationThrowsErrorDoesntCallUpdated() {
+        mRow.privateLayout.removeAllViews()
+        mRow.entry.sbn.notification.contentView =
+            RemoteViews(mContext.packageName, R.layout.status_bar)
+        inflateAndWait(
+            true /* expectingException */,
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            mRow
+        )
+        Assert.assertTrue(mRow.privateLayout.childCount == 0)
+        verify(mRow, times(0)).onNotificationUpdated()
+    }
+
+    @Test
+    fun testAsyncTaskRemoved() {
+        mRow.entry.abortTask()
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            mRow
+        )
+        verify(mRow).onNotificationUpdated()
+    }
+
+    @Test
+    fun testRemovedNotInflated() {
+        mRow.setRemoved()
+        mNotificationInflater.setInflateSynchronously(true)
+        mNotificationInflater.bindContent(
+            mRow.entry,
+            mRow,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            BindParams(),
+            false /* forceInflate */,
+            null /* callback */
+        )
+        Assert.assertNull(mRow.entry.runningTask)
+    }
+
+    @Test
+    @Ignore("b/345418902")
+    fun testInflationIsRetriedIfAsyncFails() {
+        val headsUpStatusBarModel = HeadsUpStatusBarModel("private", "public")
+        val result =
+            NotificationRowContentBinderImpl.InflationProgress(
+                packageContext = mContext,
+                remoteViews = NewRemoteViews(),
+                contentModel = NotificationContentModel(headsUpStatusBarModel)
+            )
+        val countDownLatch = CountDownLatch(1)
+        NotificationRowContentBinderImpl.applyRemoteView(
+            AsyncTask.SERIAL_EXECUTOR,
+            inflateSynchronously = false,
+            isMinimized = false,
+            result = result,
+            reInflateFlags = NotificationRowContentBinder.FLAG_CONTENT_VIEW_EXPANDED,
+            inflationId = 0,
+            remoteViewCache = mock(),
+            entry = mRow.entry,
+            row = mRow,
+            isNewView = true, /* isNewView */
+            remoteViewClickHandler = { _, _, _ -> true },
+            callback =
+                object : InflationCallback {
+                    override fun handleInflationException(entry: NotificationEntry, e: Exception) {
+                        countDownLatch.countDown()
+                        throw RuntimeException("No Exception expected")
+                    }
+
+                    override fun onAsyncInflationFinished(entry: NotificationEntry) {
+                        countDownLatch.countDown()
+                    }
+                },
+            parentLayout = mRow.privateLayout,
+            existingView = null,
+            existingWrapper = null,
+            runningInflations = HashMap(),
+            applyCallback =
+                object : NotificationRowContentBinderImpl.ApplyCallback() {
+                    override fun setResultView(v: View) {}
+
+                    override val remoteView: RemoteViews
+                        get() =
+                            AsyncFailRemoteView(
+                                mContext.packageName,
+                                com.android.systemui.tests.R.layout.custom_view_dark
+                            )
+                },
+            logger = mock(),
+        )
+        Assert.assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS))
+    }
+
+    @Test
+    fun doesntReapplyDisallowedRemoteView() {
+        mBuilder.setStyle(Notification.MediaStyle())
+        val mediaView = mBuilder.createContentView()
+        mBuilder.setStyle(Notification.DecoratedCustomViewStyle())
+        mBuilder.setCustomContentView(
+            RemoteViews(context.packageName, com.android.systemui.tests.R.layout.custom_view_dark)
+        )
+        val decoratedMediaView = mBuilder.createContentView()
+        Assert.assertFalse(
+            "The decorated media style doesn't allow a view to be reapplied!",
+            NotificationRowContentBinderImpl.canReapplyRemoteView(mediaView, decoratedMediaView)
+        )
+    }
+
+    @Test
+    @Ignore("b/345418902")
+    fun testUsesSameViewWhenCachedPossibleToReuse() {
+        // GIVEN a cached view.
+        val contractedRemoteView = mBuilder.createContentView()
+        whenever(
+                mCache.hasCachedView(
+                    mRow.entry,
+                    NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED
+                )
+            )
+            .thenReturn(true)
+        whenever(
+                mCache.getCachedView(
+                    mRow.entry,
+                    NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED
+                )
+            )
+            .thenReturn(contractedRemoteView)
+
+        // GIVEN existing bound view with same layout id.
+        val view = contractedRemoteView.apply(mContext, null /* parent */)
+        mRow.privateLayout.setContractedChild(view)
+
+        // WHEN inflater inflates
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED,
+            mRow
+        )
+
+        // THEN the view should be re-used
+        Assert.assertEquals(
+            "Binder inflated a new view even though the old one was cached and usable.",
+            view,
+            mRow.privateLayout.contractedChild
+        )
+    }
+
+    @Test
+    fun testInflatesNewViewWhenCachedNotPossibleToReuse() {
+        // GIVEN a cached remote view.
+        val contractedRemoteView = mBuilder.createHeadsUpContentView()
+        whenever(
+                mCache.hasCachedView(
+                    mRow.entry,
+                    NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED
+                )
+            )
+            .thenReturn(true)
+        whenever(
+                mCache.getCachedView(
+                    mRow.entry,
+                    NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED
+                )
+            )
+            .thenReturn(contractedRemoteView)
+
+        // GIVEN existing bound view with different layout id.
+        val view: View = TextView(mContext)
+        mRow.privateLayout.setContractedChild(view)
+
+        // WHEN inflater inflates
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED,
+            mRow
+        )
+
+        // THEN the view should be a new view
+        Assert.assertNotEquals(
+            "Binder (somehow) used the same view when inflating.",
+            view,
+            mRow.privateLayout.contractedChild
+        )
+    }
+
+    @Test
+    fun testInflationCachesCreatedRemoteView() {
+        // WHEN inflater inflates
+        inflateAndWait(
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED,
+            mRow
+        )
+
+        // THEN inflater informs cache of the new remote view
+        verify(mCache)
+            .putCachedView(
+                eq(mRow.entry),
+                eq(NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED),
+                any()
+            )
+    }
+
+    @Test
+    fun testUnbindRemovesCachedRemoteView() {
+        // WHEN inflated unbinds content
+        mNotificationInflater.unbindContent(
+            mRow.entry,
+            mRow,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP
+        )
+
+        // THEN inflated informs cache to remove remote view
+        verify(mCache)
+            .removeCachedView(
+                eq(mRow.entry),
+                eq(NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP)
+            )
+    }
+
+    @Test
+    fun testNotificationViewHeightTooSmallFailsValidation() {
+        val validationError =
+            getValidationError(
+                measuredHeightDp = 5f,
+                targetSdk = Build.VERSION_CODES.R,
+                contentView = mock(),
+            )
+        Assert.assertNotNull(validationError)
+    }
+
+    @Test
+    fun testNotificationViewHeightPassesForNewerSDK() {
+        val validationError =
+            getValidationError(
+                measuredHeightDp = 5f,
+                targetSdk = Build.VERSION_CODES.S,
+                contentView = mock(),
+            )
+        Assert.assertNull(validationError)
+    }
+
+    @Test
+    fun testNotificationViewHeightPassesForTemplatedViews() {
+        val validationError =
+            getValidationError(
+                measuredHeightDp = 5f,
+                targetSdk = Build.VERSION_CODES.R,
+                contentView = null,
+            )
+        Assert.assertNull(validationError)
+    }
+
+    @Test
+    fun testNotificationViewPassesValidation() {
+        val validationError =
+            getValidationError(
+                measuredHeightDp = 20f,
+                targetSdk = Build.VERSION_CODES.R,
+                contentView = mock(),
+            )
+        Assert.assertNull(validationError)
+    }
+
+    private fun getValidationError(
+        measuredHeightDp: Float,
+        targetSdk: Int,
+        contentView: RemoteViews?
+    ): String? {
+        val view: View = mock()
+        whenever(view.measuredHeight)
+            .thenReturn(
+                TypedValue.applyDimension(
+                        TypedValue.COMPLEX_UNIT_SP,
+                        measuredHeightDp,
+                        mContext.resources.displayMetrics
+                    )
+                    .toInt()
+            )
+        mRow.entry.targetSdk = targetSdk
+        mRow.entry.sbn.notification.contentView = contentView
+        return NotificationRowContentBinderImpl.isValidView(view, mRow.entry, mContext.resources)
+    }
+
+    @Test
+    fun testInvalidNotificationDoesNotInvokeCallback() {
+        mRow.privateLayout.removeAllViews()
+        mRow.entry.sbn.notification.contentView =
+            RemoteViews(
+                mContext.packageName,
+                com.android.systemui.tests.R.layout.invalid_notification_height
+            )
+        inflateAndWait(
+            true,
+            mNotificationInflater,
+            NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL,
+            mRow
+        )
+        Assert.assertEquals(0, mRow.privateLayout.childCount.toLong())
+        verify(mRow, times(0)).onNotificationUpdated()
+    }
+
+    private class ExceptionHolder {
+        var mException: Exception? = null
+
+        fun setException(exception: Exception?) {
+            mException = exception
+        }
+    }
+
+    private class AsyncFailRemoteView(packageName: String?, layoutId: Int) :
+        RemoteViews(packageName, layoutId) {
+        var mHandler = mockExecutorHandler { p0 -> p0.run() }
+
+        override fun apply(context: Context, parent: ViewGroup): View {
+            return super.apply(context, parent)
+        }
+
+        override fun applyAsync(
+            context: Context,
+            parent: ViewGroup,
+            executor: Executor,
+            listener: OnViewAppliedListener,
+            handler: InteractionHandler?
+        ): CancellationSignal {
+            mHandler.post { listener.onError(RuntimeException("Failed to inflate async")) }
+            return CancellationSignal()
+        }
+
+        override fun applyAsync(
+            context: Context,
+            parent: ViewGroup,
+            executor: Executor,
+            listener: OnViewAppliedListener
+        ): CancellationSignal {
+            return applyAsync(context, parent, executor, listener, null)
+        }
+    }
+
+    companion object {
+        private fun inflateAndWait(
+            inflater: NotificationRowContentBinderImpl,
+            @InflationFlag contentToInflate: Int,
+            row: ExpandableNotificationRow
+        ) {
+            inflateAndWait(false /* expectingException */, inflater, contentToInflate, row)
+        }
+
+        private fun inflateAndWait(
+            expectingException: Boolean,
+            inflater: NotificationRowContentBinderImpl,
+            @InflationFlag contentToInflate: Int,
+            row: ExpandableNotificationRow,
+        ) {
+            val countDownLatch = CountDownLatch(1)
+            val exceptionHolder = ExceptionHolder()
+            inflater.setInflateSynchronously(true)
+            val callback: InflationCallback =
+                object : InflationCallback {
+                    override fun handleInflationException(entry: NotificationEntry, e: Exception) {
+                        if (!expectingException) {
+                            exceptionHolder.setException(e)
+                        }
+                        countDownLatch.countDown()
+                    }
+
+                    override fun onAsyncInflationFinished(entry: NotificationEntry) {
+                        if (expectingException) {
+                            exceptionHolder.setException(
+                                RuntimeException(
+                                    "Inflation finished even though there should be an error"
+                                )
+                            )
+                        }
+                        countDownLatch.countDown()
+                    }
+                }
+            inflater.bindContent(
+                row.entry,
+                row,
+                contentToInflate,
+                BindParams(),
+                false /* forceInflate */,
+                callback /* callback */
+            )
+            Assert.assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS))
+            exceptionHolder.mException?.let { throw it }
+        }
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
index 65941ad..21d586b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
@@ -84,6 +84,7 @@
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpandableNotificationRowLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
 import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainerLogger;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
@@ -192,16 +193,27 @@
                 mBgCoroutineContext,
                 mMainCoroutineContext);
 
-        NotificationRowContentBinder contentBinder = new NotificationContentInflater(
-                mock(NotifRemoteViewCache.class),
-                mock(NotificationRemoteInputManager.class),
-                mock(ConversationNotificationProcessor.class),
-                mock(MediaFeatureFlag.class),
-                mock(Executor.class),
-                new MockSmartReplyInflater(),
-                mock(NotifLayoutInflaterFactory.Provider.class),
-                mock(HeadsUpStyleProvider.class),
-                mock(NotificationRowContentBinderLogger.class));
+        NotificationRowContentBinder contentBinder =
+                NotificationRowContentBinderRefactor.isEnabled()
+                        ? new NotificationRowContentBinderImpl(
+                                mock(NotifRemoteViewCache.class),
+                                mock(NotificationRemoteInputManager.class),
+                                mock(ConversationNotificationProcessor.class),
+                                mock(Executor.class),
+                                new MockSmartReplyInflater(),
+                                mock(NotifLayoutInflaterFactory.Provider.class),
+                                mock(HeadsUpStyleProvider.class),
+                                mock(NotificationRowContentBinderLogger.class))
+                        : new NotificationContentInflater(
+                                mock(NotifRemoteViewCache.class),
+                                mock(NotificationRemoteInputManager.class),
+                                mock(ConversationNotificationProcessor.class),
+                                mock(MediaFeatureFlag.class),
+                                mock(Executor.class),
+                                new MockSmartReplyInflater(),
+                                mock(NotifLayoutInflaterFactory.Provider.class),
+                                mock(HeadsUpStyleProvider.class),
+                                mock(NotificationRowContentBinderLogger.class));
         contentBinder.setInflateSynchronously(true);
         mBindStage = new RowContentBindStage(contentBinder,
                 mock(NotifInflationErrorManager.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
index cb9790b..7ea85a1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
@@ -133,6 +133,7 @@
 import com.android.systemui.power.domain.interactor.PowerInteractor;
 import com.android.systemui.res.R;
 import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor;
+import com.android.systemui.scene.domain.startable.ScrimStartable;
 import com.android.systemui.scene.shared.flag.SceneContainerFlag;
 import com.android.systemui.settings.UserTracker;
 import com.android.systemui.settings.brightness.BrightnessSliderController;
@@ -254,7 +255,6 @@
     @Mock private IDreamManager mDreamManager;
     @Mock private LightRevealScrimViewModel mLightRevealScrimViewModel;
     @Mock private LightRevealScrim mLightRevealScrim;
-    @Mock private ScrimController mScrimController;
     @Mock private DozeScrimController mDozeScrimController;
     @Mock private Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
     @Mock private BiometricUnlockController mBiometricUnlockController;
@@ -355,6 +355,7 @@
 
     private final BrightnessMirrorShowingInteractor mBrightnessMirrorShowingInteractor =
             mKosmos.getBrightnessMirrorShowingInteractor();
+    private ScrimController mScrimController;
 
     @Before
     public void setup() throws Exception {
@@ -472,6 +473,8 @@
         when(mUserTracker.getUserHandle()).thenReturn(
                 UserHandle.of(ActivityManager.getCurrentUser()));
 
+        mScrimController = mKosmos.getScrimController();
+
         createCentralSurfaces();
     }
 
@@ -733,7 +736,7 @@
     @Test
     public void testFingerprintNotification_UpdatesScrims() {
         mCentralSurfaces.notifyBiometricAuthModeChanged();
-        verify(mScrimController).transitionTo(any(), any());
+        verify(mScrimController).legacyTransitionTo(any(), any());
     }
 
     @Test
@@ -742,7 +745,7 @@
         when(mBiometricUnlockController.getMode())
                 .thenReturn(BiometricUnlockController.MODE_WAKE_AND_UNLOCK);
         mCentralSurfaces.updateScrimController();
-        verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any());
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.UNLOCKED), any());
     }
 
     @Test
@@ -753,7 +756,7 @@
         // Starting a pulse should change the scrim controller to the pulsing state
         when(mCameraLauncher.isLaunchingAffordance()).thenReturn(true);
         mCentralSurfaces.updateScrimController();
-        verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any());
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.UNLOCKED), any());
     }
 
     @Test
@@ -789,7 +792,7 @@
         // Starting a pulse should change the scrim controller to the pulsing state
         when(mCameraLauncher.isLaunchingAffordance()).thenReturn(false);
         mCentralSurfaces.updateScrimController();
-        verify(mScrimController).transitionTo(eq(ScrimState.KEYGUARD));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.KEYGUARD));
     }
 
     @Test
@@ -817,12 +820,12 @@
         // Starting a pulse should change the scrim controller to the pulsing state
         when(mDozeServiceHost.isPulsing()).thenReturn(true);
         mCentralSurfaces.updateScrimController();
-        verify(mScrimController).transitionTo(eq(ScrimState.PULSING), any());
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.PULSING), any());
 
         // Ending a pulse should take it back to keyguard state
         when(mDozeServiceHost.isPulsing()).thenReturn(false);
         mCentralSurfaces.updateScrimController();
-        verify(mScrimController).transitionTo(eq(ScrimState.KEYGUARD));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.KEYGUARD));
     }
 
     @Test
@@ -833,7 +836,7 @@
 
         mCentralSurfaces.updateScrimController();
 
-        verify(mScrimController, times(2)).transitionTo(eq(ScrimState.AOD));
+        verify(mScrimController, times(2)).legacyTransitionTo(eq(ScrimState.AOD));
         verify(mStatusBarKeyguardViewManager).onKeyguardFadedAway();
     }
 
@@ -845,7 +848,7 @@
 
         mCentralSurfaces.updateScrimController();
 
-        verify(mScrimController).transitionTo(eq(ScrimState.AUTH_SCRIMMED_SHADE));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.AUTH_SCRIMMED_SHADE));
         verify(mStatusBarKeyguardViewManager).onKeyguardFadedAway();
     }
 
@@ -861,7 +864,7 @@
 
         mCentralSurfaces.updateScrimController();
 
-        verify(mScrimController).transitionTo(eq(ScrimState.AUTH_SCRIMMED));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.AUTH_SCRIMMED));
     }
 
     @Test
@@ -877,7 +880,7 @@
         mCentralSurfaces.updateScrimController();
 
         // Tests the safeguard to reset the scrimstate
-        verify(mScrimController, never()).transitionTo(any());
+        verify(mScrimController, never()).legacyTransitionTo(any());
     }
 
     @Test
@@ -893,7 +896,7 @@
         mCentralSurfaces.updateScrimController();
 
         // Tests the safeguard to reset the scrimstate
-        verify(mScrimController, never()).transitionTo(eq(ScrimState.KEYGUARD));
+        verify(mScrimController, never()).legacyTransitionTo(eq(ScrimState.KEYGUARD));
     }
 
     @Test
@@ -908,7 +911,7 @@
 
         mCentralSurfaces.updateScrimController();
 
-        verify(mScrimController).transitionTo(eq(ScrimState.AUTH_SCRIMMED_SHADE));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.AUTH_SCRIMMED_SHADE));
     }
 
     @Test
@@ -920,7 +923,7 @@
         mTestScope.getTestScheduler().runCurrent();
 
         // ScrimState also transitions.
-        verify(mScrimController).transitionTo(ScrimState.GLANCEABLE_HUB);
+        verify(mScrimController).legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
 
         // Transition away from the glanceable hub.
         mKosmos.getCommunalRepository()
@@ -929,7 +932,7 @@
         mTestScope.getTestScheduler().runCurrent();
 
         // ScrimState goes back to UNLOCKED.
-        verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any());
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.UNLOCKED), any());
     }
 
     @Test
@@ -945,7 +948,7 @@
         mTestScope.getTestScheduler().runCurrent();
 
         // ScrimState also transitions.
-        verify(mScrimController).transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+        verify(mScrimController).legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
 
         // Transition away from the glanceable hub.
         mKosmos.getCommunalRepository()
@@ -954,7 +957,7 @@
         mTestScope.getTestScheduler().runCurrent();
 
         // ScrimState goes back to UNLOCKED.
-        verify(mScrimController).transitionTo(eq(ScrimState.DREAMING));
+        verify(mScrimController).legacyTransitionTo(eq(ScrimState.DREAMING));
     }
 
     @Test
@@ -1164,6 +1167,8 @@
     @EnableSceneContainer
     public void brightnesShowingChanged_flagEnabled_ScrimControllerNotified() {
         mCentralSurfaces.registerCallbacks();
+        final ScrimStartable scrimStartable = mKosmos.getScrimStartable();
+        scrimStartable.start();
 
         mBrightnessMirrorShowingInteractor.setMirrorShowing(true);
         mTestScope.getTestScheduler().runCurrent();
@@ -1173,7 +1178,7 @@
         mTestScope.getTestScheduler().runCurrent();
         ArgumentCaptor<ScrimState> captor = ArgumentCaptor.forClass(ScrimState.class);
         // The default is to call the one with the callback argument
-        verify(mScrimController, atLeastOnce()).transitionTo(captor.capture(), any());
+        verify(mScrimController, atLeastOnce()).transitionTo(captor.capture());
         assertThat(captor.getValue()).isNotEqualTo(ScrimState.BRIGHTNESS_MIRROR);
     }
 
@@ -1184,8 +1189,9 @@
 
         mBrightnessMirrorShowingInteractor.setMirrorShowing(true);
         mTestScope.getTestScheduler().runCurrent();
-        verify(mScrimController, never()).transitionTo(ScrimState.BRIGHTNESS_MIRROR);
-        verify(mScrimController, never()).transitionTo(eq(ScrimState.BRIGHTNESS_MIRROR), any());
+        verify(mScrimController, never()).legacyTransitionTo(ScrimState.BRIGHTNESS_MIRROR);
+        verify(mScrimController, never())
+                .legacyTransitionTo(eq(ScrimState.BRIGHTNESS_MIRROR), any());
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 416a869..4590071 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -309,7 +309,7 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(false);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
     }
 
@@ -327,7 +327,7 @@
 
     @Test
     public void transitionToKeyguard() {
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -342,7 +342,7 @@
 
     @Test
     public void transitionToShadeLocked() {
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         mScrimController.setQsPosition(1f, 0);
         finishAnimationsImmediately();
 
@@ -360,7 +360,7 @@
     @Test
     public void transitionToShadeLocked_clippingQs() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         mScrimController.setQsPosition(1f, 0);
         finishAnimationsImmediately();
 
@@ -377,7 +377,7 @@
 
     @Test
     public void transitionToOff() {
-        mScrimController.transitionTo(ScrimState.OFF);
+        mScrimController.legacyTransitionTo(ScrimState.OFF);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -394,7 +394,7 @@
 
     @Test
     public void transitionToAod_withRegularWallpaper() {
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -414,7 +414,7 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -423,7 +423,7 @@
         assertEquals(0f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
 
         // Pulsing notification should conserve AOD wallpaper.
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -438,7 +438,7 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -457,7 +457,7 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         mScrimController.setHasBackdrop(true);
         finishAnimationsImmediately();
@@ -476,7 +476,7 @@
     @Test
     public void transitionToAod_withFrontAlphaUpdates() {
         // Assert that setting the AOD front scrim alpha doesn't take effect in a non-AOD state.
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setAodFrontScrimAlpha(0.5f);
         finishAnimationsImmediately();
 
@@ -485,7 +485,7 @@
                 mScrimBehind, SEMI_TRANSPARENT));
 
         // ... but that it does take effect once we enter the AOD state.
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, SEMI_TRANSPARENT,
@@ -501,8 +501,8 @@
 
         // ... and make sure we recall the previous front scrim alpha even if we transition away
         // for a bit.
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, OPAQUE,
@@ -512,8 +512,8 @@
         // ... and alpha updates should be completely ignored if always_on is off.
         // Passing it forward would mess up the wake-up transition.
         mAlwaysOnEnabled = false;
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         mScrimController.setAodFrontScrimAlpha(0.3f);
         assertEquals(ScrimState.AOD.getFrontAlpha(), mScrimInFront.getViewAlpha(), 0.001f);
@@ -523,7 +523,7 @@
     @Test
     public void transitionToAod_afterDocked_ignoresAlwaysOnAndUpdatesFrontAlpha() {
         // Assert that setting the AOD front scrim alpha doesn't take effect in a non-AOD state.
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setAodFrontScrimAlpha(0.5f);
         finishAnimationsImmediately();
 
@@ -533,7 +533,7 @@
 
         // ... and doesn't take effect when disabled always_on
         mAlwaysOnEnabled = false;
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, OPAQUE,
@@ -542,9 +542,9 @@
 
         // ... but will take effect after docked
         when(mDockManager.isDocked()).thenReturn(true);
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setAodFrontScrimAlpha(0.5f);
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -572,14 +572,14 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(false);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
                 mScrimBehind, TRANSPARENT));
         assertEquals(1f, mScrimController.getState().getMaxLightRevealScrimAlpha(), 0f);
 
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         finishAnimationsImmediately();
         // Front scrim should be transparent, but tinted
         // Back scrim should be semi-transparent so the user can see the wallpaper
@@ -617,7 +617,7 @@
 
     @Test
     public void transitionToKeyguardBouncer() {
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
         finishAnimationsImmediately();
         // Front scrim should be transparent
         // Back scrim should be visible and tinted to the surface color
@@ -638,7 +638,7 @@
     @Test
     public void lockscreenToHubTransition_setsBehindScrimAlpha() {
         // Start on lockscreen.
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
 
         // Behind scrim starts at default alpha.
@@ -684,7 +684,7 @@
     @Test
     public void hubToLockscreenTransition_setsViewAlpha() {
         // Start on glanceable hub.
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
         finishAnimationsImmediately();
 
         // Behind scrim starts at 0 alpha.
@@ -731,7 +731,7 @@
     public void transitionToHub() {
         mScrimController.setRawPanelExpansionFraction(0f);
         mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
         finishAnimationsImmediately();
 
         // All scrims transparent on the hub.
@@ -743,7 +743,7 @@
 
     @Test
     public void openBouncerOnHub() {
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
 
         // Open the bouncer.
         mScrimController.setRawPanelExpansionFraction(0f);
@@ -760,7 +760,7 @@
 
         // Bouncer is closed.
         mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
         finishAnimationsImmediately();
 
         // All scrims are transparent.
@@ -772,7 +772,7 @@
 
     @Test
     public void openShadeOnHub() {
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB);
 
         // Open the shade.
         mScrimController.setQsPosition(1f, 0);
@@ -802,7 +802,7 @@
     public void transitionToHubOverDream() {
         mScrimController.setRawPanelExpansionFraction(0f);
         mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
         finishAnimationsImmediately();
 
         // All scrims transparent on the hub.
@@ -814,7 +814,7 @@
 
     @Test
     public void openBouncerOnHubOverDream() {
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
 
         // Open the bouncer.
         mScrimController.setRawPanelExpansionFraction(0f);
@@ -831,7 +831,7 @@
 
         // Bouncer is closed.
         mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
         finishAnimationsImmediately();
 
         // All scrims are transparent.
@@ -843,7 +843,7 @@
 
     @Test
     public void openShadeOnHubOverDream() {
-        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
+        mScrimController.legacyTransitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
 
         // Open the shade.
         mScrimController.setQsPosition(1f, 0);
@@ -880,7 +880,7 @@
     @Test
     public void onThemeChangeWhileClipQsScrim_bouncerBehindTint_remainsBlack() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
         finishAnimationsImmediately();
 
         assertEquals(BOUNCER.getBehindTint(), Color.BLACK);
@@ -892,7 +892,7 @@
     @Test
     public void transitionToKeyguardBouncer_clippingQs() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
         finishAnimationsImmediately();
         // Front scrim should be transparent
         // Back scrim should be clipping QS
@@ -912,7 +912,7 @@
     @Test
     public void disableClipQsScrimWithoutStateTransition_updatesTintAndAlpha() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
 
         mScrimController.setClipsQsScrim(false);
 
@@ -934,7 +934,7 @@
     @Test
     public void enableClipQsScrimWithoutStateTransition_updatesTintAndAlpha() {
         mScrimController.setClipsQsScrim(false);
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
 
         mScrimController.setClipsQsScrim(true);
 
@@ -955,7 +955,7 @@
 
     @Test
     public void transitionToBouncer() {
-        mScrimController.transitionTo(ScrimState.BOUNCER_SCRIMMED);
+        mScrimController.legacyTransitionTo(ScrimState.BOUNCER_SCRIMMED);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, OPAQUE,
@@ -970,7 +970,7 @@
     public void transitionToUnlocked_clippedQs() {
         mScrimController.setClipsQsScrim(true);
         mScrimController.setRawPanelExpansionFraction(0f);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
 
         assertScrimTinted(Map.of(
@@ -1000,7 +1000,7 @@
     public void transitionToUnlocked_nonClippedQs_followsLargeScreensInterpolator() {
         mScrimController.setClipsQsScrim(false);
         mScrimController.setRawPanelExpansionFraction(0f);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
 
         assertScrimTinted(Map.of(
@@ -1037,15 +1037,15 @@
 
     @Test
     public void scrimStateCallback() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
         assertEquals(mScrimState, ScrimState.UNLOCKED);
 
-        mScrimController.transitionTo(BOUNCER);
+        mScrimController.legacyTransitionTo(BOUNCER);
         finishAnimationsImmediately();
         assertEquals(mScrimState, BOUNCER);
 
-        mScrimController.transitionTo(ScrimState.BOUNCER_SCRIMMED);
+        mScrimController.legacyTransitionTo(ScrimState.BOUNCER_SCRIMMED);
         finishAnimationsImmediately();
         assertEquals(mScrimState, ScrimState.BOUNCER_SCRIMMED);
     }
@@ -1054,7 +1054,7 @@
     public void panelExpansion() {
         mScrimController.setRawPanelExpansionFraction(0f);
         mScrimController.setRawPanelExpansionFraction(0.5f);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
 
         reset(mScrimBehind);
@@ -1114,7 +1114,7 @@
     public void panelExpansionAffectsAlpha() {
         mScrimController.setRawPanelExpansionFraction(0f);
         mScrimController.setRawPanelExpansionFraction(0.5f);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
 
         final float scrimAlpha = mScrimBehind.getViewAlpha();
@@ -1135,10 +1135,10 @@
     @Test
     public void transitionToUnlockedFromOff() {
         // Simulate unlock with fingerprint without AOD
-        mScrimController.transitionTo(ScrimState.OFF);
+        mScrimController.legacyTransitionTo(ScrimState.OFF);
         mScrimController.setRawPanelExpansionFraction(0f);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
 
         finishAnimationsImmediately();
 
@@ -1157,10 +1157,10 @@
     @Test
     public void transitionToUnlockedFromAod() {
         // Simulate unlock with fingerprint
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         mScrimController.setRawPanelExpansionFraction(0f);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
 
         finishAnimationsImmediately();
 
@@ -1179,9 +1179,9 @@
     @Test
     public void scrimBlanksBeforeLeavingAod() {
         // Simulate unlock with fingerprint
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.UNLOCKED,
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED,
                 new ScrimController.Callback() {
                     @Override
                     public void onDisplayBlanked() {
@@ -1203,9 +1203,9 @@
     public void scrimBlankCallbackWhenUnlockingFromPulse() {
         boolean[] blanked = {false};
         // Simulate unlock with fingerprint
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.UNLOCKED,
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED,
                 new ScrimController.Callback() {
                     @Override
                     public void onDisplayBlanked() {
@@ -1251,16 +1251,16 @@
         mScrimController.setHasBackdrop(false);
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(false);
         mTestScope.getTestScheduler().runCurrent();
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
 
         // WHEN Simulate unlock with fingerprint
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
 
         // WHEN transitioning to UNLOCKED, onDisplayCallbackBlanked callback called to continue
         // the transition but the scrim was not actually blanked
-        mScrimController.transitionTo(ScrimState.UNLOCKED,
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED,
                 new ScrimController.Callback() {
                     @Override
                     public void onDisplayBlanked() {
@@ -1279,7 +1279,7 @@
     public void testScrimCallback() {
         int[] callOrder = {0, 0, 0};
         int[] currentCall = {0};
-        mScrimController.transitionTo(ScrimState.AOD, new ScrimController.Callback() {
+        mScrimController.legacyTransitionTo(ScrimState.AOD, new ScrimController.Callback() {
             @Override
             public void onStart() {
                 callOrder[0] = ++currentCall[0];
@@ -1310,19 +1310,19 @@
     @Test
     public void testScrimCallbackCancelled() {
         boolean[] cancelledCalled = {false};
-        mScrimController.transitionTo(ScrimState.AOD, new ScrimController.Callback() {
+        mScrimController.legacyTransitionTo(ScrimState.AOD, new ScrimController.Callback() {
             @Override
             public void onCancelled() {
                 cancelledCalled[0] = true;
             }
         });
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         Assert.assertTrue("onCancelled should have been called", cancelledCalled[0]);
     }
 
     @Test
     public void testHoldsWakeLock_whenAOD() {
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         verify(mWakeLock).acquire(anyString());
         verify(mWakeLock, never()).release(anyString());
         finishAnimationsImmediately();
@@ -1331,24 +1331,24 @@
 
     @Test
     public void testDoesNotHoldWakeLock_whenUnlocking() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
         verifyZeroInteractions(mWakeLock);
     }
 
     @Test
     public void testCallbackInvokedOnSameStateTransition() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
         ScrimController.Callback callback = mock(ScrimController.Callback.class);
-        mScrimController.transitionTo(ScrimState.UNLOCKED, callback);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED, callback);
         verify(callback).onFinished();
     }
 
     @Test
     public void testHoldsAodWallpaperAnimationLock() {
         // Pre-conditions
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         reset(mWakeLock);
 
@@ -1362,7 +1362,7 @@
     @Test
     public void testHoldsPulsingWallpaperAnimationLock() {
         // Pre-conditions
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         finishAnimationsImmediately();
         reset(mWakeLock);
 
@@ -1378,9 +1378,9 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any());
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         verify(mAlarmManager).cancel(any(AlarmManager.OnAlarmListener.class));
     }
 
@@ -1391,22 +1391,22 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
 
         verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any());
     }
 
     @Test
     public void testConservesExpansionOpacityAfterTransition() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setRawPanelExpansionFraction(0.5f);
         finishAnimationsImmediately();
 
         final float expandedAlpha = mScrimBehind.getViewAlpha();
 
-        mScrimController.transitionTo(ScrimState.BRIGHTNESS_MIRROR);
+        mScrimController.legacyTransitionTo(ScrimState.BRIGHTNESS_MIRROR);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         finishAnimationsImmediately();
 
         assertEquals("Scrim expansion opacity wasn't conserved when transitioning back",
@@ -1415,12 +1415,12 @@
 
     @Test
     public void testCancelsOldAnimationBeforeBlanking() {
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         // Consume whatever value we had before
         mAnimatorListener.reset();
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
         Assert.assertTrue("Animators not canceled", mAnimatorListener.getNumCancels() != 0);
     }
@@ -1439,13 +1439,13 @@
         mTestScope.getTestScheduler().runCurrent();
 
         mScrimController.setKeyguardOccluded(true);
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
                 mScrimBehind, OPAQUE));
 
-        mScrimController.transitionTo(ScrimState.PULSING);
+        mScrimController.legacyTransitionTo(ScrimState.PULSING);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
@@ -1457,7 +1457,7 @@
         mWallpaperRepository.getWallpaperSupportsAmbientMode().setValue(true);
         mTestScope.getTestScheduler().runCurrent();
 
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
@@ -1478,7 +1478,7 @@
             if (state == ScrimState.UNINITIALIZED) {
                 continue;
             }
-            mScrimController.transitionTo(state);
+            mScrimController.legacyTransitionTo(state);
             finishAnimationsImmediately();
             assertEquals("Should be clickable unless AOD or PULSING, was: " + state,
                     mScrimBehind.getViewAlpha() != 0 && !eatsTouches.contains(state),
@@ -1520,7 +1520,7 @@
 
     @Test
     public void testScrimsOpaque_whenShadeFullyExpanded() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setRawPanelExpansionFraction(1);
         // notifications scrim alpha change require calling setQsPosition
         mScrimController.setQsPosition(0, 300);
@@ -1536,7 +1536,7 @@
     public void testAuthScrim_setClipQSScrimTrue_notifScrimOpaque_whenShadeFullyExpanded() {
         // GIVEN device has an activity showing ('UNLOCKED' state can occur on the lock screen
         // with the camera app occluding the keyguard)
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setClipsQsScrim(true);
         mScrimController.setRawPanelExpansionFraction(1);
         // notifications scrim alpha change require calling setQsPosition
@@ -1544,7 +1544,7 @@
         finishAnimationsImmediately();
 
         // WHEN the user triggers the auth bouncer
-        mScrimController.transitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
+        mScrimController.legacyTransitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
         finishAnimationsImmediately();
 
         assertEquals("Behind scrim should be opaque",
@@ -1564,7 +1564,7 @@
     public void testAuthScrim_setClipQSScrimFalse_notifScrimOpaque_whenShadeFullyExpanded() {
         // GIVEN device has an activity showing ('UNLOCKED' state can occur on the lock screen
         // with the camera app occluding the keyguard)
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setClipsQsScrim(false);
         mScrimController.setRawPanelExpansionFraction(1);
         // notifications scrim alpha change require calling setQsPosition
@@ -1572,7 +1572,7 @@
         finishAnimationsImmediately();
 
         // WHEN the user triggers the auth bouncer
-        mScrimController.transitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
+        mScrimController.legacyTransitionTo(ScrimState.AUTH_SCRIMMED_SHADE);
         finishAnimationsImmediately();
 
         assertEquals("Behind scrim should be opaque",
@@ -1590,11 +1590,11 @@
     @Test
     public void testAuthScrimKeyguard() {
         // GIVEN device is on the keyguard
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
 
         // WHEN the user triggers the auth bouncer
-        mScrimController.transitionTo(ScrimState.AUTH_SCRIMMED);
+        mScrimController.legacyTransitionTo(ScrimState.AUTH_SCRIMMED);
         finishAnimationsImmediately();
 
         // THEN the front scrim is updated and the KEYGUARD scrims are the same as the
@@ -1608,7 +1608,7 @@
     @Test
     public void testScrimsVisible_whenShadeVisible() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setRawPanelExpansionFraction(0.3f);
         // notifications scrim alpha change require calling setQsPosition
         mScrimController.setQsPosition(0, 300);
@@ -1643,7 +1643,7 @@
     @Test
     public void testScrimsVisible_whenShadeVisible_clippingQs() {
         mScrimController.setClipsQsScrim(true);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setRawPanelExpansionFraction(0.3f);
         // notifications scrim alpha change require calling setQsPosition
         mScrimController.setQsPosition(0.5f, 300);
@@ -1657,7 +1657,7 @@
 
     @Test
     public void testScrimsVisible_whenShadeVisibleOnLockscreen() {
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setQsPosition(0.25f, 300);
 
         assertScrimAlpha(Map.of(
@@ -1668,7 +1668,7 @@
 
     @Test
     public void testNotificationScrimTransparent_whenOnLockscreen() {
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         // even if shade is not pulled down, panel has expansion of 1 on the lockscreen
         mScrimController.setRawPanelExpansionFraction(1);
         mScrimController.setQsPosition(0f, /*qs panel bottom*/ 0);
@@ -1681,7 +1681,7 @@
     @Test
     public void testNotificationScrimVisible_afterOpeningShadeFromLockscreen() {
         mScrimController.setRawPanelExpansionFraction(1);
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -1695,7 +1695,7 @@
         // clipping doesn't change tested logic but allows to assert scrims more in line with
         // their expected large screen behaviour
         mScrimController.setClipsQsScrim(false);
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
 
         mScrimController.setQsPosition(1f, 100 /* value doesn't matter */);
         assertTintAfterExpansion(mScrimBehind, SHADE_LOCKED.getBehindTint(), /* expansion= */ 1f);
@@ -1709,7 +1709,7 @@
     public void expansionNotificationAlpha_shadeLocked_bouncerActive_usesBouncerInterpolator() {
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(true);
 
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
 
         float expansion = 0.8f;
         float expectedAlpha =
@@ -1725,7 +1725,7 @@
     public void expansionNotificationAlpha_shadeLocked_bouncerNotActive_usesShadeInterpolator() {
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false);
 
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
 
         float expansion = 0.8f;
         float expectedAlpha = ShadeInterpolation.getNotificationScrimAlpha(expansion);
@@ -1740,7 +1740,7 @@
     public void notificationAlpha_unnocclusionAnimating_bouncerNotActive_usesKeyguardNotifAlpha() {
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false);
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
 
         assertAlphaAfterExpansion(
                 mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 0f);
@@ -1760,7 +1760,7 @@
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(true);
         mScrimController.setClipsQsScrim(true);
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
 
         float expansion = 0.8f;
         float alpha = 1 - BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(expansion);
@@ -1780,7 +1780,7 @@
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false);
         mScrimController.setClipsQsScrim(true);
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
 
         float expansion = 0.8f;
         float alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion);
@@ -1800,7 +1800,7 @@
         when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false);
         mScrimController.setClipsQsScrim(false);
 
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
         assertThat(mScrimBehind.getTint())
                 .isEqualTo(ScrimState.KEYGUARD.getBehindTint());
@@ -1810,7 +1810,7 @@
     public void testNotificationTransparency_followsTransitionToFullShade() {
         mScrimController.setClipsQsScrim(true);
 
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         mScrimController.setRawPanelExpansionFraction(1.0f);
         finishAnimationsImmediately();
 
@@ -1821,7 +1821,7 @@
         ));
 
         float shadeLockedAlpha = mNotificationsScrim.getViewAlpha();
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setRawPanelExpansionFraction(1.0f);
         finishAnimationsImmediately();
         float keyguardAlpha = mNotificationsScrim.getViewAlpha();
@@ -1849,10 +1849,10 @@
 
     @Test
     public void notificationTransparency_followsNotificationScrimProgress() {
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         mScrimController.setRawPanelExpansionFraction(1.0f);
         finishAnimationsImmediately();
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         mScrimController.setRawPanelExpansionFraction(1.0f);
         finishAnimationsImmediately();
 
@@ -1866,7 +1866,7 @@
     @Test
     public void notificationAlpha_qsNotClipped_alphaMatchesNotificationExpansionProgress() {
         mScrimController.setClipsQsScrim(false);
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         // RawPanelExpansion and QsExpansion are usually used for the notification alpha
         // calculation.
         // Here we set them to non-zero values explicitly to make sure that in not clipped mode,
@@ -1927,7 +1927,7 @@
 
     @Test
     public void notificationBoundsTopGetsPassedToKeyguard() {
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         mScrimController.setQsPosition(1f, 0);
         finishAnimationsImmediately();
 
@@ -1938,7 +1938,7 @@
     @Test
     public void notificationBoundsTopDoesNotGetPassedToKeyguardWhenNotifScrimIsNotVisible() {
         mScrimController.setKeyguardOccluded(true);
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
 
         mScrimController.setNotificationsBounds(0f, 100f, 0f, 0f);
@@ -1949,7 +1949,7 @@
     public void transitionToDreaming() {
         mScrimController.setRawPanelExpansionFraction(0f);
         mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
-        mScrimController.transitionTo(ScrimState.DREAMING);
+        mScrimController.legacyTransitionTo(ScrimState.DREAMING);
         finishAnimationsImmediately();
 
         assertScrimAlpha(Map.of(
@@ -1975,7 +1975,7 @@
 
     @Test
     public void setUnOccludingAnimationKeyguard() {
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
         assertThat(mNotificationsScrim.getViewAlpha())
                 .isWithin(0.01f).of(ScrimState.KEYGUARD.getNotifAlpha());
@@ -1990,14 +1990,14 @@
     @Test
     public void testHidesScrimFlickerInActivity() {
         mScrimController.setKeyguardOccluded(true);
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
                 mScrimBehind, TRANSPARENT,
                 mNotificationsScrim, TRANSPARENT));
 
-        mScrimController.transitionTo(SHADE_LOCKED);
+        mScrimController.legacyTransitionTo(SHADE_LOCKED);
         finishAnimationsImmediately();
         assertScrimAlpha(Map.of(
                 mScrimInFront, TRANSPARENT,
@@ -2008,7 +2008,7 @@
     @Test
     public void notificationAlpha_inKeyguardState_bouncerNotActive_clipsQsScrimFalse() {
         mScrimController.setClipsQsScrim(false);
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
 
         float expansion = 0.8f;
         assertAlphaAfterExpansion(mNotificationsScrim, 0f, expansion);
@@ -2016,14 +2016,14 @@
 
     @Test
     public void aodStateSetsFrontScrimToNotBlend() {
-        mScrimController.transitionTo(ScrimState.AOD);
+        mScrimController.legacyTransitionTo(ScrimState.AOD);
         assertFalse("Front scrim should not blend with main color",
                 mScrimInFront.shouldBlendWithMainColor());
     }
 
     @Test
     public void applyState_unlocked_bouncerShowing() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.setBouncerHiddenFraction(0.99f);
         mScrimController.setRawPanelExpansionFraction(0f);
         finishAnimationsImmediately();
@@ -2032,13 +2032,13 @@
 
     @Test
     public void ignoreTransitionRequestWhileKeyguardTransitionRunning() {
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.mBouncerToGoneTransition.accept(
                 new TransitionStep(KeyguardState.PRIMARY_BOUNCER, KeyguardState.GONE, 0f,
                         TransitionState.RUNNING, "ScrimControllerTest"));
 
         // This request should not happen
-        mScrimController.transitionTo(ScrimState.BOUNCER);
+        mScrimController.legacyTransitionTo(ScrimState.BOUNCER);
         assertThat(mScrimController.getState()).isEqualTo(ScrimState.UNLOCKED);
     }
 
@@ -2055,16 +2055,16 @@
     @Test
     public void testDoNotAnimateChangeIfOccludeAnimationPlaying() {
         mScrimController.setOccludeAnimationPlaying(true);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
 
         assertFalse(ScrimState.UNLOCKED.mAnimateChange);
     }
 
     @Test
     public void testNotifScrimAlpha_1f_afterUnlockFinishedAndExpanded() {
-        mScrimController.transitionTo(ScrimState.KEYGUARD);
+        mScrimController.legacyTransitionTo(ScrimState.KEYGUARD);
         when(mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()).thenReturn(true);
-        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.legacyTransitionTo(ScrimState.UNLOCKED);
         mScrimController.onUnlockAnimationFinished();
         assertAlphaAfterExpansion(mNotificationsScrim, 1f, 1f);
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt
index 617c553..7e523fb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt
@@ -86,6 +86,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "contentDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         underTest.setIconFromTile(slotName, externalIcon)
 
@@ -114,6 +115,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "contentDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         commandQueueCallbacks.setIcon(slotName, externalIcon)
 
@@ -240,6 +242,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "externalDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         underTest.setIconFromTile(slotName, startingExternalIcon)
 
@@ -278,6 +281,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "externalDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         underTest.setIconFromTile(slotName, startingExternalIcon)
 
@@ -290,6 +294,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "newExternalDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         underTest.setIconFromTile(slotName, newExternalIcon)
 
@@ -325,6 +330,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "externalDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         commandQueueCallbacks.setIcon(slotName, startingExternalIcon)
 
@@ -337,6 +343,7 @@
                 /* iconLevel= */ 0,
                 /* number= */ 0,
                 "newExternalDescription",
+                StatusBarIcon.Type.SystemIcon,
             )
         commandQueueCallbacks.setIcon(slotName, newExternalIcon)
 
@@ -404,6 +411,7 @@
             /* iconLevel= */ 0,
             /* number= */ 0,
             "contentDescription",
+            StatusBarIcon.Type.SystemIcon,
         )
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
index 1466d24..664f2df 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
@@ -19,7 +19,6 @@
 import android.os.PowerManager
 import android.os.VibrationAttributes
 import android.os.VibrationEffect
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.MotionEvent
 import android.view.View
@@ -29,6 +28,7 @@
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.core.animation.doOnCancel
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.InstanceId
 import com.android.internal.logging.testing.UiEventLoggerFake
@@ -68,7 +68,7 @@
 import org.mockito.MockitoAnnotations
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
 class ChipbarCoordinatorTest : SysuiTestCase() {
     private lateinit var underTest: ChipbarCoordinator
diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayApplierTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayApplierTest.java
index 8f4cbaf..31ee858 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayApplierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayApplierTest.java
@@ -45,9 +45,9 @@
 import android.content.om.OverlayManager;
 import android.content.om.OverlayManagerTransaction;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -69,7 +69,7 @@
 import java.util.Set;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class ThemeOverlayApplierTest extends SysuiTestCase {
     private static final String TEST_DISABLED_PREFIX = "com.example.";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
index d2c1dd5..53e033e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
@@ -52,9 +52,9 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -88,7 +88,7 @@
 import java.util.concurrent.Executor;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ThemeOverlayControllerTest extends SysuiTestCase {
 
     private static final int USER_SYSTEM = UserHandle.USER_SYSTEM;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java b/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java
index 0581e0e..8df37ce 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java
@@ -46,7 +46,6 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 import android.os.UserHandle;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Display;
 import android.view.LayoutInflater;
@@ -59,6 +58,7 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.util.IntPair;
@@ -80,7 +80,7 @@
 import java.util.Arrays;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class ToastUITest extends SysuiTestCase {
     private static final int ANDROID_UID = 1000;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/touch/TouchInsetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/touch/TouchInsetManagerTest.java
index eb932d2..ce5899a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/touch/TouchInsetManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/touch/TouchInsetManagerTest.java
@@ -25,11 +25,11 @@
 
 import android.graphics.Rect;
 import android.graphics.Region;
-import android.testing.AndroidTestingRunner;
 import android.view.AttachedSurfaceControl;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -45,7 +45,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TouchInsetManagerTest extends SysuiTestCase {
     @Mock
     private AttachedSurfaceControl mAttachedSurfaceControl;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/tracing/TraceUtilsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/tracing/TraceUtilsTest.kt
index bda339f..eef4e3b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/tracing/TraceUtilsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/tracing/TraceUtilsTest.kt
@@ -17,8 +17,8 @@
 import android.os.Handler
 import android.os.Looper
 import android.os.Trace.TRACE_TAG_APP
-import android.testing.AndroidTestingRunner
 import android.util.Log
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.app.tracing.TraceUtils.traceRunnable
 import com.android.app.tracing.namedRunnable
@@ -30,7 +30,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 class TraceUtilsTest : SysuiTestCase() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/CsdWarningDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/CsdWarningDialogTest.java
index 741b2e2..c81623e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/volume/CsdWarningDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/volume/CsdWarningDialogTest.java
@@ -27,9 +27,9 @@
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.media.AudioManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.messages.nano.SystemMessageProto;
@@ -42,7 +42,7 @@
 import org.junit.runner.RunWith;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class CsdWarningDialogTest extends SysuiTestCase {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java
index 69d7586..f737148 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java
@@ -37,10 +37,10 @@
 import android.media.session.MediaSession;
 import android.os.Handler;
 import android.os.Process;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -65,7 +65,7 @@
 
 import java.util.concurrent.Executor;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SmallTest
 @TestableLooper.RunWithLooper
 public class VolumeDialogControllerImplTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
index 9864439..dbdbe65 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
@@ -52,7 +52,6 @@
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.provider.Settings;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.util.Log;
 import android.view.Gravity;
@@ -65,6 +64,7 @@
 import android.widget.SeekBar;
 
 import androidx.test.core.view.MotionEventBuilder;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.jank.InteractionJankMonitor;
@@ -87,6 +87,7 @@
 import com.android.systemui.util.settings.SecureSettings;
 import com.android.systemui.util.time.FakeSystemClock;
 import com.android.systemui.volume.domain.interactor.VolumePanelNavigationInteractor;
+import com.android.systemui.volume.ui.binder.VolumeDialogMenuIconBinder;
 import com.android.systemui.volume.ui.navigation.VolumeNavigator;
 
 import dagger.Lazy;
@@ -107,7 +108,7 @@
 import java.util.function.Predicate;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 public class VolumeDialogImplTest extends SysuiTestCase {
     VolumeDialogImpl mDialog;
@@ -148,6 +149,8 @@
     private VolumePanelNavigationInteractor mVolumePanelNavigationInteractor;
     @Mock
     private VolumeNavigator mVolumeNavigator;
+    @Mock
+    private VolumeDialogMenuIconBinder mVolumeDialogMenuIconBinder;
 
     private final CsdWarningDialog.Factory mCsdWarningDialogFactory =
             new CsdWarningDialog.Factory() {
@@ -211,6 +214,7 @@
                 mDumpManager,
                 mLazySecureSettings,
                 mVibratorHelper,
+                mVolumeDialogMenuIconBinder,
                 new FakeSystemClock());
         mDialog.init(0, null);
         State state = createShellState();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
index dc5597a..40094e5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
@@ -33,9 +33,9 @@
 import android.content.Intent;
 import android.service.quickaccesswallet.GetWalletCardsRequest;
 import android.service.quickaccesswallet.QuickAccessWalletClient;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -57,7 +57,7 @@
 
 import java.util.List;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class QuickAccessWalletControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
index d2387e8..6f99cd9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
@@ -6,6 +6,7 @@
 import android.graphics.drawable.Icon
 import android.os.Looper
 import android.service.quickaccesswallet.WalletCard
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.flags.FakeFeatureFlags
@@ -22,7 +23,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.Mock
 import org.mockito.Mockito.anySet
 import org.mockito.Mockito.doNothing
@@ -31,7 +31,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 @SmallTest
 @kotlinx.coroutines.ExperimentalCoroutinesApi
 class WalletContextualLocationsServiceTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
index d5bdb59..4e44c4a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
@@ -22,6 +22,7 @@
 import android.service.quickaccesswallet.GetWalletCardsResponse
 import android.service.quickaccesswallet.QuickAccessWalletClient
 import android.service.quickaccesswallet.WalletCard
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.broadcast.BroadcastDispatcher
@@ -42,7 +43,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mock
@@ -53,7 +53,7 @@
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
-@RunWith(JUnit4::class)
+@RunWith(AndroidJUnit4::class)
 class WalletContextualSuggestionsControllerTest : SysuiTestCase() {
 
     @Mock private lateinit var walletController: QuickAccessWalletController
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
index c1d11aa..38a61fe 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
@@ -42,9 +42,9 @@
 import android.service.quickaccesswallet.QuickAccessWalletClient;
 import android.service.quickaccesswallet.QuickAccessWalletService;
 import android.service.quickaccesswallet.WalletCard;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.logging.UiEventLogger;
@@ -68,7 +68,7 @@
 import java.util.Collections;
 import java.util.List;
 
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class WalletScreenControllerTest extends SysuiTestCase {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/util/WalletCardUtilsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/wallet/util/WalletCardUtilsTest.kt
index e46c1f5..1df781f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/util/WalletCardUtilsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/util/WalletCardUtilsTest.kt
@@ -17,8 +17,8 @@
 package com.android.systemui.wallet.util
 
 import android.service.quickaccesswallet.WalletCard
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.mockito.mock
@@ -27,7 +27,7 @@
 import org.junit.runner.RunWith
 
 /** Test class for WalletCardUtils */
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @RunWithLooper
 @SmallTest
 class WalletCardUtilsTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/ImageWallpaperTest.java
index fc2030f..6fb70de 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/ImageWallpaperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/ImageWallpaperTest.java
@@ -44,13 +44,13 @@
 import android.graphics.ColorSpace;
 import android.graphics.Rect;
 import android.hardware.display.DisplayManager;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.WindowManager;
 import android.view.WindowMetrics;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -65,7 +65,7 @@
 import org.mockito.MockitoAnnotations;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class ImageWallpaperTest extends SysuiTestCase {
     private static final int LOW_BMP_WIDTH = 128;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java
index 33d09c1..75e027e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java
@@ -36,9 +36,9 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.platform.test.annotations.EnableFlags;
-import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
@@ -56,7 +56,7 @@
 import java.util.concurrent.Executor;
 
 @SmallTest
-@RunWith(AndroidTestingRunner.class)
+@RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 public class WallpaperLocalColorExtractorTest extends SysuiTestCase {
     private static final int LOW_BMP_WIDTH = 112;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubbleEducationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubbleEducationControllerTest.kt
index 7801684..2021f02 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubbleEducationControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubbleEducationControllerTest.kt
@@ -21,9 +21,9 @@
 import android.content.pm.ShortcutInfo
 import android.content.res.Resources
 import android.os.UserHandle
-import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import androidx.core.content.edit
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.model.SysUiStateTest
 import com.android.wm.shell.bubbles.Bubble
@@ -38,7 +38,7 @@
 import org.junit.runner.RunWith
 
 @SmallTest
-@RunWith(AndroidTestingRunner::class)
+@RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
 class BubbleEducationControllerTest : SysUiStateTest() {
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 0f89dcc..fabb9b7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -169,6 +169,7 @@
 import com.android.wm.shell.bubbles.BubbleViewProvider;
 import com.android.wm.shell.bubbles.Bubbles;
 import com.android.wm.shell.bubbles.StackEducationView;
+import com.android.wm.shell.bubbles.bar.BubbleBarLayerView;
 import com.android.wm.shell.bubbles.properties.BubbleProperties;
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.common.FloatingContentCoordinator;
@@ -2109,6 +2110,33 @@
     }
 
     @Test
+    public void registerBubbleBarListener_switchToBarWhileExpanded() {
+        mBubbleProperties.mIsBubbleBarEnabled = true;
+        mPositioner.setIsLargeScreen(true);
+
+        mEntryListener.onEntryAdded(mRow);
+        mBubbleController.updateBubble(mBubbleEntry);
+        BubbleStackView stackView = mBubbleController.getStackView();
+        spyOn(stackView);
+
+        mBubbleData.setExpanded(true);
+
+        assertStackMode();
+        assertThat(mBubbleData.isExpanded()).isTrue();
+        assertThat(stackView.isExpanded()).isTrue();
+
+        FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
+        mBubbleController.registerBubbleStateListener(bubbleStateListener);
+
+        BubbleBarLayerView layerView = mBubbleController.getLayerView();
+        spyOn(layerView);
+
+        assertBarMode();
+        assertThat(mBubbleData.isExpanded()).isTrue();
+        assertThat(layerView.isExpanded()).isTrue();
+    }
+
+    @Test
     public void switchBetweenBarAndStack_noBubbles_shouldBeIgnored() {
         mBubbleProperties.mIsBubbleBarEnabled = false;
         mPositioner.setIsLargeScreen(true);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt
new file mode 100644
index 0000000..d208465
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.systemui.brightness.ui.viewmodel
+
+import com.android.systemui.brightness.domain.interactor.brightnessPolicyEnforcementInteractor
+import com.android.systemui.brightness.domain.interactor.screenBrightnessInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+
+val Kosmos.brightnessSliderViewModel: BrightnessSliderViewModel by
+    Kosmos.Fixture {
+        BrightnessSliderViewModel(
+            screenBrightnessInteractor = screenBrightnessInteractor,
+            brightnessPolicyEnforcementInteractor = brightnessPolicyEnforcementInteractor,
+            applicationScope = applicationCoroutineScope,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
index a7bf87d..d280be2 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
@@ -6,6 +6,7 @@
 import com.android.systemui.communal.shared.model.CommunalScenes
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.SharingStarted
@@ -13,20 +14,25 @@
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.launch
 
 /** Fake implementation of [CommunalSceneRepository]. */
 @OptIn(ExperimentalCoroutinesApi::class)
 class FakeCommunalSceneRepository(
-    applicationScope: CoroutineScope,
+    private val applicationScope: CoroutineScope,
     override val currentScene: MutableStateFlow<SceneKey> =
         MutableStateFlow(CommunalScenes.Default),
 ) : CommunalSceneRepository {
-    override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) =
-        snapToScene(toScene)
 
-    override fun snapToScene(toScene: SceneKey) {
-        this.currentScene.value = toScene
-        this._transitionState.value = flowOf(ObservableTransitionState.Idle(toScene))
+    override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) =
+        snapToScene(toScene, 0)
+
+    override fun snapToScene(toScene: SceneKey, delayMillis: Long) {
+        applicationScope.launch {
+            delay(delayMillis)
+            currentScene.value = toScene
+            _transitionState.value = flowOf(ObservableTransitionState.Idle(toScene))
+        }
     }
 
     private val defaultTransitionState = ObservableTransitionState.Idle(CommunalScenes.Default)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
index 1a45c42..22b8c8db 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
@@ -104,7 +104,8 @@
 
     private val _biometricUnlockState =
         MutableStateFlow(BiometricUnlockModel(BiometricUnlockMode.NONE, null))
-    override val biometricUnlockState: Flow<BiometricUnlockModel> = _biometricUnlockState
+    override val biometricUnlockState: StateFlow<BiometricUnlockModel> =
+        _biometricUnlockState.asStateFlow()
 
     private val _fingerprintSensorLocation = MutableStateFlow<Point?>(null)
     override val fingerprintSensorLocation: Flow<Point?> = _fingerprintSensorLocation
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardTransitionRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardTransitionRepository.kt
index 2fe7438..b5ea619 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardTransitionRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardTransitionRepository.kt
@@ -54,6 +54,7 @@
     private val _transitions =
         MutableSharedFlow<TransitionStep>(replay = 3, onBufferOverflow = BufferOverflow.DROP_OLDEST)
     override val transitions: SharedFlow<TransitionStep> = _transitions
+
     @Inject constructor() : this(initInLockscreen = true)
 
     private val _currentTransitionInfo: MutableStateFlow<TransitionInfo> =
@@ -137,6 +138,17 @@
                     )
             )
             testScheduler.runCurrent()
+
+            sendTransitionStep(
+                step =
+                    TransitionStep(
+                        transitionState = TransitionState.RUNNING,
+                        from = from,
+                        to = to,
+                        value = 1f
+                    )
+            )
+            testScheduler.runCurrent()
         }
 
         if (throughTransitionState == TransitionState.FINISHED) {
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractorKosmos.kt
similarity index 62%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractorKosmos.kt
index bb3b654..7a3f925 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/BiometricUnlockInteractorKosmos.kt
@@ -14,6 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+package com.android.systemui.keyguard.domain.interactor
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+import com.android.systemui.keyguard.data.repository.keyguardRepository
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.biometricUnlockInteractor by Fixture {
+    BiometricUnlockInteractor(
+        keyguardRepository = keyguardRepository,
+    )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
index 0b28e3f..6d2d04a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
@@ -50,6 +50,7 @@
 import com.android.systemui.power.data.repository.fakePowerRepository
 import com.android.systemui.power.domain.interactor.powerInteractor
 import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.domain.startable.scrimStartable
 import com.android.systemui.scene.sceneContainerConfig
 import com.android.systemui.scene.shared.model.sceneDataSource
 import com.android.systemui.settings.brightness.domain.interactor.brightnessMirrorShowingInteractor
@@ -59,6 +60,7 @@
 import com.android.systemui.statusbar.chips.ui.viewmodel.ongoingActivityChipsViewModel
 import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor
 import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor
+import com.android.systemui.statusbar.phone.scrimController
 import com.android.systemui.statusbar.pipeline.mobile.data.repository.fakeMobileConnectionsRepository
 import com.android.systemui.statusbar.policy.data.repository.fakeDeviceProvisioningRepository
 import com.android.systemui.statusbar.policy.domain.interactor.deviceProvisioningInteractor
@@ -130,4 +132,6 @@
     val shadeInteractor by lazy { kosmos.shadeInteractor }
 
     val ongoingActivityChipsViewModel by lazy { kosmos.ongoingActivityChipsViewModel }
+    val scrimController by lazy { kosmos.scrimController }
+    val scrimStartable by lazy { kosmos.scrimStartable }
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
index ef7aa63..d1fbb5e 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
@@ -16,11 +16,16 @@
 
 package com.android.systemui.scene.domain.interactor
 
+import com.android.compose.animation.scene.SceneKey
+import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
 import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.scene.data.repository.sceneContainerRepository
+import com.android.systemui.scene.domain.resolver.HomeSceneFamilyResolver
+import com.android.systemui.scene.domain.resolver.SceneResolver
 import com.android.systemui.scene.shared.logger.sceneLogger
+import com.android.systemui.scene.shared.model.SceneFamilies
 
 val Kosmos.sceneInteractor by
     Kosmos.Fixture {
@@ -28,6 +33,18 @@
             applicationScope = applicationCoroutineScope,
             repository = sceneContainerRepository,
             logger = sceneLogger,
+            sceneFamilyResolvers = { sceneFamilyResolvers },
             deviceUnlockedInteractor = deviceUnlockedInteractor,
         )
     }
+
+val Kosmos.sceneFamilyResolvers: Map<SceneKey, SceneResolver>
+    get() = mapOf(SceneFamilies.Home to homeSceneFamilyResolver)
+
+val Kosmos.homeSceneFamilyResolver by
+    Kosmos.Fixture {
+        HomeSceneFamilyResolver(
+            applicationScope = applicationCoroutineScope,
+            deviceEntryInteractor = deviceEntryInteractor,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/ScrimStartableKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/ScrimStartableKosmos.kt
new file mode 100644
index 0000000..b64c840
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/ScrimStartableKosmos.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.domain.startable
+
+import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
+import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
+import com.android.systemui.keyguard.domain.interactor.biometricUnlockInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor
+import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.settings.brightness.domain.interactor.brightnessMirrorShowingInteractor
+import com.android.systemui.statusbar.phone.dozeServiceHost
+import com.android.systemui.statusbar.phone.scrimController
+import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+val Kosmos.scrimStartable by Fixture {
+    ScrimStartable(
+        applicationScope = applicationCoroutineScope,
+        scrimController = scrimController,
+        sceneInteractor = sceneInteractor,
+        deviceEntryInteractor = deviceEntryInteractor,
+        keyguardInteractor = keyguardInteractor,
+        occlusionInteractor = sceneContainerOcclusionInteractor,
+        biometricUnlockInteractor = biometricUnlockInteractor,
+        statusBarKeyguardViewManager = statusBarKeyguardViewManager,
+        alternateBouncerInteractor = alternateBouncerInteractor,
+        brightnessMirrorShowingInteractor = brightnessMirrorShowingInteractor,
+        dozeServiceHost = dozeServiceHost,
+    )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeControllerKosmos.kt
index d08855f..cc836ac 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeControllerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeControllerKosmos.kt
@@ -20,8 +20,6 @@
 
 import com.android.systemui.assist.AssistManager
 import com.android.systemui.concurrency.fakeExecutor
-import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
-import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.kosmos.testDispatcher
@@ -52,15 +50,14 @@
             shadeInteractor = shadeInteractor,
             sceneInteractor = sceneInteractor,
             notificationStackScrollLayout = mock<NotificationStackScrollLayout>(),
-            deviceEntryInteractor = deviceEntryInteractor,
             touchLog = mock<LogBuffer>(),
             vibratorHelper = mock<VibratorHelper>(),
             commandQueue = mock<CommandQueue>(),
             statusBarKeyguardViewManager = mock<StatusBarKeyguardViewManager>(),
             notificationShadeWindowController = mock<NotificationShadeWindowController>(),
-            assistManagerLazy = { mock<AssistManager>() },
-            deviceUnlockedInteractor = deviceUnlockedInteractor,
-        )
+        ) {
+            mock<AssistManager>()
+        }
     }
 
 val Kosmos.shadeControllerImpl by
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/NotificationsShadeSceneViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/NotificationsShadeSceneViewModelKosmos.kt
index 872eba06..1ca3509 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/NotificationsShadeSceneViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/NotificationsShadeSceneViewModelKosmos.kt
@@ -17,13 +17,7 @@
 package com.android.systemui.shade.ui.viewmodel
 
 import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.notifications.ui.viewmodel.NotificationsShadeSceneViewModel
 
 val Kosmos.notificationsShadeSceneViewModel: NotificationsShadeSceneViewModel by
-    Kosmos.Fixture {
-        NotificationsShadeSceneViewModel(
-            applicationScope = applicationCoroutineScope,
-            overlayShadeViewModel = overlayShadeViewModel,
-        )
-    }
+    Kosmos.Fixture { NotificationsShadeSceneViewModel() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModelKosmos.kt
index 45ec032..fec1028 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModelKosmos.kt
@@ -14,21 +14,16 @@
  * limitations under the License.
  */
 
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
 package com.android.systemui.shade.ui.viewmodel
 
-import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.scene.domain.interactor.sceneInteractor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 
 val Kosmos.overlayShadeViewModel: OverlayShadeViewModel by
     Kosmos.Fixture {
         OverlayShadeViewModel(
             applicationScope = applicationCoroutineScope,
             sceneInteractor = sceneInteractor,
-            deviceEntryInteractor = deviceEntryInteractor,
         )
     }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/QuickSettingsShadeSceneViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/QuickSettingsShadeSceneViewModelKosmos.kt
index 8c5ff1d..4d81ea1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/QuickSettingsShadeSceneViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/QuickSettingsShadeSceneViewModelKosmos.kt
@@ -16,14 +16,20 @@
 
 package com.android.systemui.shade.ui.viewmodel
 
+import com.android.systemui.brightness.ui.viewmodel.brightnessSliderViewModel
 import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.qs.panels.ui.viewmodel.editModeViewModel
+import com.android.systemui.qs.panels.ui.viewmodel.tileGridViewModel
+import com.android.systemui.qs.ui.adapter.qsSceneAdapter
 import com.android.systemui.qs.ui.viewmodel.QuickSettingsShadeSceneViewModel
 
 val Kosmos.quickSettingsShadeSceneViewModel: QuickSettingsShadeSceneViewModel by
     Kosmos.Fixture {
         QuickSettingsShadeSceneViewModel(
-            applicationScope = applicationCoroutineScope,
             overlayShadeViewModel = overlayShadeViewModel,
+            brightnessSliderViewModel = brightnessSliderViewModel,
+            tileGridViewModel = tileGridViewModel,
+            editModeViewModel = editModeViewModel,
+            qsSceneAdapter = qsSceneAdapter,
         )
     }
diff --git a/ravenwood/OWNERS b/ravenwood/OWNERS
index a90328c..badfca0 100644
--- a/ravenwood/OWNERS
+++ b/ravenwood/OWNERS
@@ -2,6 +2,7 @@
 
 jsharkey@google.com
 omakoto@google.com
+dplotnikov@google.com
 
 per-file ravenwood-annotation-allowed-classes.txt = dplotnikov@google.com
 per-file texts/ravenwood-annotation-allowed-classes.txt = dplotnikov@google.com
diff --git a/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
index 61ec7b4..22e11e1 100644
--- a/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
@@ -164,6 +164,9 @@
         p.mPos = pos;
     }
     public static void nativeSetDataCapacity(long nativePtr, int size) {
+        if (size < 0) {
+            throw new IllegalArgumentException("size < 0: size=" + size);
+        }
         var p = getInstance(nativePtr);
         if (p.getCapacity() < size) {
             p.forceSetCapacity(size);
diff --git a/ravenwood/test-authors.md b/ravenwood/test-authors.md
index 2ab43bb..0a0b200 100644
--- a/ravenwood/test-authors.md
+++ b/ravenwood/test-authors.md
@@ -6,6 +6,20 @@
 
 When writing tests under Ravenwood, all Android API symbols associated with your declared `sdk_version` are available to link against using, but unsupported APIs will throw an exception.  This design choice enables mocking of unsupported APIs, and supports sharing of test code to build “bivalent” test suites that run against either Ravenwood or a traditional device.
 
+## Manually running tests
+
+To run all Ravenwood tests, use:
+
+```
+./frameworks/base/ravenwood/scripts/run-ravenwood-tests.sh
+```
+
+To run a specific test, use "atest" as normal, selecting the test from a Ravenwood suite such as:
+
+```
+atest CtsOsTestCasesRavenwood:ParcelTest\#testSetDataCapacityNegative
+```
+
 ## Typical test structure
 
 Below are the typical steps needed to add a straightforward “small” unit test:
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
index 7342b00..edb6390 100644
--- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
@@ -1379,30 +1379,6 @@
         }
     }
 
-    @RequiresNoPermission
-    @Override
-    public boolean isMagnificationSystemUIConnected() {
-        if (svcConnTracingEnabled()) {
-            logTraceSvcConn("isMagnificationSystemUIConnected", "");
-        }
-        synchronized (mLock) {
-            if (!hasRightsToCurrentUserLocked()) {
-                return false;
-            }
-            if (!mSecurityPolicy.canControlMagnification(this)) {
-                return false;
-            }
-            final long identity = Binder.clearCallingIdentity();
-            try {
-                MagnificationProcessor magnificationProcessor =
-                        mSystemSupport.getMagnificationProcessor();
-                return magnificationProcessor.isMagnificationSystemUIConnected();
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-    }
-
     public boolean isMagnificationCallbackEnabled(int displayId) {
         return mInvocationHandler.isMagnificationCallbackEnabled(displayId);
     }
@@ -1947,11 +1923,6 @@
                 InvocationHandler.MSG_CLEAR_ACCESSIBILITY_CACHE);
     }
 
-    public void notifyMagnificationSystemUIConnectionChangedLocked(boolean connected) {
-        mInvocationHandler
-                .notifyMagnificationSystemUIConnectionChangedLocked(connected);
-    }
-
     public void notifyMagnificationChangedLocked(int displayId, @NonNull Region region,
             @NonNull MagnificationConfig config) {
         mInvocationHandler
@@ -2003,21 +1974,6 @@
         return (mGenericMotionEventSources & eventSourceWithoutClass) != 0;
     }
 
-    /**
-     * Called by the invocation handler to notify the service that the
-     * magnification systemui connection has changed.
-     */
-    private void notifyMagnificationSystemUIConnectionChangedInternal(boolean connected) {
-        final IAccessibilityServiceClient listener = getServiceInterfaceSafely();
-        if (listener != null) {
-            try {
-                listener.onMagnificationSystemUIConnectionChanged(connected);
-            } catch (RemoteException re) {
-                Slog.e(LOG_TAG,
-                        "Error sending magnification sysui connection changes to " + mService, re);
-            }
-        }
-    }
 
     /**
      * Called by the invocation handler to notify the service that the
@@ -2414,7 +2370,6 @@
         private static final int MSG_BIND_INPUT = 12;
         private static final int MSG_UNBIND_INPUT = 13;
         private static final int MSG_START_INPUT = 14;
-        private static final int MSG_ON_MAGNIFICATION_SYSTEM_UI_CONNECTION_CHANGED = 15;
 
         /** List of magnification callback states, mapping from displayId -> Boolean */
         @GuardedBy("mlock")
@@ -2441,13 +2396,6 @@
                     notifyClearAccessibilityCacheInternal();
                 } break;
 
-                case MSG_ON_MAGNIFICATION_SYSTEM_UI_CONNECTION_CHANGED: {
-                    final SomeArgs args = (SomeArgs) message.obj;
-                    final boolean connected = args.argi1 == 1;
-                    notifyMagnificationSystemUIConnectionChangedInternal(connected);
-                    args.recycle();
-                } break;
-
                 case MSG_ON_MAGNIFICATION_CHANGED: {
                     final SomeArgs args = (SomeArgs) message.obj;
                     final Region region = (Region) args.arg1;
@@ -2505,15 +2453,6 @@
             }
         }
 
-        public void notifyMagnificationSystemUIConnectionChangedLocked(boolean connected) {
-            final SomeArgs args = SomeArgs.obtain();
-            args.argi1 = connected ? 1 : 0;
-
-            final Message msg =
-                    obtainMessage(MSG_ON_MAGNIFICATION_SYSTEM_UI_CONNECTION_CHANGED, args);
-            msg.sendToTarget();
-        }
-
         public void notifyMagnificationChangedLocked(int displayId, @NonNull Region region,
                 @NonNull MagnificationConfig config) {
             synchronized (mLock) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index d09cb3e..4f9db8b 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -1812,17 +1812,6 @@
     }
 
     /**
-     * Called by the MagnificationController when the magnification systemui connection changes.
-     *
-     * @param connected Whether the connection is ready.
-     */
-    public void notifyMagnificationSystemUIConnectionChanged(boolean connected) {
-        synchronized (mLock) {
-            notifyMagnificationSystemUIConnectionChangedLocked(connected);
-        }
-    }
-
-    /**
      * Called by the MagnificationController when the state of display
      * magnification changes.
      *
@@ -2254,14 +2243,6 @@
         mProxyManager.clearCacheLocked();
     }
 
-    private void notifyMagnificationSystemUIConnectionChangedLocked(boolean connected) {
-        final AccessibilityUserState state = getCurrentUserStateLocked();
-        for (int i = state.mBoundServices.size() - 1; i >= 0; i--) {
-            final AccessibilityServiceConnection service = state.mBoundServices.get(i);
-            service.notifyMagnificationSystemUIConnectionChangedLocked(connected);
-        }
-    }
-
     private void notifyMagnificationChangedLocked(int displayId, @NonNull Region region,
             @NonNull MagnificationConfig config) {
         final AccessibilityUserState state = getCurrentUserStateLocked();
diff --git a/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
index 420bac7..4cb3d24 100644
--- a/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
@@ -489,14 +489,6 @@
     /** @throws UnsupportedOperationException since a proxy does not need magnification */
     @RequiresNoPermission
     @Override
-    public boolean isMagnificationSystemUIConnected() throws UnsupportedOperationException {
-        throw new UnsupportedOperationException("isMagnificationSystemUIConnected is not"
-                + " supported");
-    }
-
-    /** @throws UnsupportedOperationException since a proxy does not need magnification */
-    @RequiresNoPermission
-    @Override
     public boolean isMagnificationCallbackEnabled(int displayId) {
         throw new UnsupportedOperationException("isMagnificationCallbackEnabled is not supported");
     }
diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
index 63a183d..f85d786 100644
--- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
@@ -101,8 +101,10 @@
             SystemActionPerformer systemActionPerformer,
             AccessibilityWindowManager awm, int flags) {
         accessibilityServiceInfo.setComponentName(COMPONENT_NAME);
-        Slogf.i(LOG_TAG, "Registering UiTestAutomationService (id=%s) when called by user %d",
-                accessibilityServiceInfo.getId(), Binder.getCallingUserHandle().getIdentifier());
+        Slogf.i(LOG_TAG, "Registering UiTestAutomationService (id=%s, flags=0x%x) when"
+                        + " called by user %d",
+                accessibilityServiceInfo.getId(), flags,
+                Binder.getCallingUserHandle().getIdentifier());
         if (mUiAutomationService != null) {
             throw new IllegalStateException(
                     "UiAutomationService " + mUiAutomationService.mServiceInterface
@@ -272,8 +274,10 @@
             mMainHandler.post(() -> {
                 try {
                     final IAccessibilityServiceClient serviceInterface;
+                    final UiAutomationService uiAutomationService;
                     synchronized (mLock) {
                         serviceInterface = mServiceInterface;
+                        uiAutomationService = mUiAutomationService;
                         if (serviceInterface == null) {
                             mService = null;
                         } else {
@@ -283,8 +287,8 @@
                     }
                     // If the serviceInterface is null, the UiAutomation has been shut down on
                     // another thread.
-                    if (serviceInterface != null) {
-                        mUiAutomationService.addWindowTokensForAllDisplays();
+                    if (serviceInterface != null && uiAutomationService != null) {
+                        uiAutomationService.addWindowTokensForAllDisplays();
                         if (mTrace.isA11yTracingEnabledForTypes(
                                 AccessibilityTrace.FLAGS_ACCESSIBILITY_SERVICE_CLIENT)) {
                             mTrace.logTrace("UiAutomationService.connectServiceUnknownThread",
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationConnectionManager.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationConnectionManager.java
index 7f4c808..19e3e69 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationConnectionManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationConnectionManager.java
@@ -18,6 +18,7 @@
 
 import static android.accessibilityservice.AccessibilityTrace.FLAGS_MAGNIFICATION_CONNECTION;
 import static android.accessibilityservice.AccessibilityTrace.FLAGS_MAGNIFICATION_CONNECTION_CALLBACK;
+import static android.os.Build.HW_TIMEOUT_MULTIPLIER;
 import static android.view.accessibility.MagnificationAnimationCallback.STUB_ANIMATION_CALLBACK;
 
 import static com.android.server.accessibility.AccessibilityManagerService.INVALID_SERVICE_ID;
@@ -126,9 +127,8 @@
 
     @ConnectionState
     private int mConnectionState = DISCONNECTED;
-    ConnectionStateChangedCallback mConnectionStateChangedCallback = null;
 
-    private static final int WAIT_CONNECTION_TIMEOUT_MILLIS = 100;
+    private static final int WAIT_CONNECTION_TIMEOUT_MILLIS = 200 * HW_TIMEOUT_MULTIPLIER;
 
     private final Object mLock;
     private final Context mContext;
@@ -265,9 +265,6 @@
                 }
             }
         }
-        if (mConnectionStateChangedCallback != null) {
-            mConnectionStateChangedCallback.onConnectionStateChanged(connection != null);
-        }
     }
 
     /**
@@ -275,7 +272,7 @@
      */
     public boolean isConnected() {
         synchronized (mLock) {
-            return mConnectionWrapper != null && mConnectionState == CONNECTED;
+            return mConnectionWrapper != null;
         }
     }
 
@@ -683,8 +680,7 @@
      */
     public boolean onFullscreenMagnificationActivationChanged(int displayId, boolean activated) {
         synchronized (mLock) {
-            waitForConnectionIfNeeded();
-            if (mConnectionWrapper == null) {
+            if (!waitConnectionWithTimeoutIfNeeded()) {
                 Slog.w(TAG,
                         "onFullscreenMagnificationActivationChanged mConnectionWrapper is null. "
                                 + "mConnectionState=" + connectionStateToString(mConnectionState));
@@ -1294,8 +1290,7 @@
             float centerY, float magnificationFrameOffsetRatioX,
             float magnificationFrameOffsetRatioY,
             MagnificationAnimationCallback animationCallback) {
-        waitForConnectionIfNeeded();
-        if (mConnectionWrapper == null) {
+        if (!waitConnectionWithTimeoutIfNeeded()) {
             Slog.w(TAG,
                     "enableWindowMagnificationInternal mConnectionWrapper is null. "
                             + "mConnectionState=" + connectionStateToString(mConnectionState));
@@ -1337,7 +1332,7 @@
                 displayId, positionX, positionY, animationCallback);
     }
 
-    private void waitForConnectionIfNeeded() {
+    boolean waitConnectionWithTimeoutIfNeeded() {
         // Wait for the connection with a timeout.
         final long endMillis = SystemClock.uptimeMillis() + WAIT_CONNECTION_TIMEOUT_MILLIS;
         while (mConnectionState == CONNECTING && (SystemClock.uptimeMillis() < endMillis)) {
@@ -1347,9 +1342,6 @@
                 /* ignore */
             }
         }
-    }
-
-    interface ConnectionStateChangedCallback {
-        void onConnectionStateChanged(boolean connected);
+        return isConnected();
     }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
index 9b78847..1489d16 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
@@ -799,14 +799,18 @@
                         this,
                         mScaleProvider,
                         mBackgroundExecutor,
-                        () -> (isMagnificationConnectionManagerInitialized()
-                                && getMagnificationConnectionManager().isConnected())
+                        () -> isMagnificationSystemUIConnectionReady()
                 );
             }
         }
         return mFullScreenMagnificationController;
     }
 
+    private boolean isMagnificationSystemUIConnectionReady() {
+        return isMagnificationConnectionManagerInitialized()
+                && getMagnificationConnectionManager().waitConnectionWithTimeoutIfNeeded();
+    }
+
     /**
      * Is {@link #mFullScreenMagnificationController} is initialized.
      * @return {code true} if {@link #mFullScreenMagnificationController} is initialized.
@@ -828,8 +832,6 @@
                 mMagnificationConnectionManager = new MagnificationConnectionManager(mContext,
                         mLock, this, mAms.getTraceManager(),
                         mScaleProvider);
-                mMagnificationConnectionManager.mConnectionStateChangedCallback =
-                        mAms::notifyMagnificationSystemUIConnectionChanged;
             }
             return mMagnificationConnectionManager;
         }
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
index 6036839..ed8f1ab 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
@@ -147,10 +147,6 @@
         return false;
     }
 
-    public boolean isMagnificationSystemUIConnected() {
-        return mController.getMagnificationConnectionManager().isConnected();
-    }
-
     private boolean setScaleAndCenterForFullScreenMagnification(int displayId, float scale,
             float centerX, float centerY, boolean animate, int id) {
 
diff --git a/services/art-profile b/services/art-profile
index f86d2d7..755f8a5 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -20,16 +20,15 @@
 HSPLandroid/hardware/health/HealthInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/health/HealthInfo;+]Landroid/hardware/health/HealthInfo;Landroid/hardware/health/HealthInfo;
 HSPLandroid/hardware/health/HealthInfo;-><init>()V
 HSPLandroid/hardware/health/HealthInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
-HPLandroid/hardware/health/IHealth$Stub$Proxy;->getCapacity()I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;
-HPLandroid/hardware/health/IHealth$Stub$Proxy;->getChargeCounterUah()I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;
-HPLandroid/hardware/health/IHealth$Stub$Proxy;->getChargeStatus()I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;
+HPLandroid/hardware/health/IHealth$Stub$Proxy;->getCapacity()I+]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
+HPLandroid/hardware/health/IHealth$Stub$Proxy;->getChargeCounterUah()I+]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
 HSPLandroid/hardware/health/IHealthInfoCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/hardware/health/IHealthInfoCallback;Lcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/hardware/health/StorageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/health/StorageInfo;+]Landroid/hardware/health/StorageInfo;Landroid/hardware/health/StorageInfo;
 HSPLandroid/hardware/health/StorageInfo;-><init>()V
 HSPLandroid/hardware/health/StorageInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
 HSPLandroid/hardware/power/stats/EnergyConsumerResult;->readFromParcel(Landroid/os/Parcel;)V
 HPLandroid/hardware/power/stats/EnergyMeasurement;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
-HPLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;
+HPLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;+]Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
 HPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/power/stats/StateResidency;+]Landroid/hardware/power/stats/StateResidency;Landroid/hardware/power/stats/StateResidency;
 HPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/hardware/power/stats/StateResidency$1;Landroid/hardware/power/stats/StateResidency$1;
 HPLandroid/hardware/power/stats/StateResidency;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
@@ -48,239 +47,188 @@
 HSPLcom/android/internal/util/jobs/StatLogger;->getTime()J
 HSPLcom/android/internal/util/jobs/StatLogger;->logDurationStat(IJ)J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;
 HSPLcom/android/server/AppSchedulingModuleThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/AppStateTrackerImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;
-HSPLcom/android/server/AppStateTrackerImpl$Listener;->onUidActiveStateChanged(Lcom/android/server/AppStateTrackerImpl;I)V+]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2;,Lcom/android/server/AppStateTrackerImpl$1;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;
+HSPLcom/android/server/AppStateTrackerImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
 HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidActive(I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V+]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2;,Lcom/android/server/AppStateTrackerImpl$1;
+HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V+]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl$1;,Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2;
 HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->removeUid(IZ)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HSPLcom/android/server/AppStateTrackerImpl$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HSPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+HPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
 HSPLcom/android/server/AppStateTrackerImpl;->cloneListeners()[Lcom/android/server/AppStateTrackerImpl$Listener;
 HSPLcom/android/server/AppStateTrackerImpl;->findForcedAppStandbyUidPackageIndexLocked(ILjava/lang/String;)I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/AppStateTrackerImpl;->isAppBackgroundRestricted(ILjava/lang/String;)Z+]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/Collections$EmptySet;
+HSPLcom/android/server/AppStateTrackerImpl;->isAppBackgroundRestricted(ILjava/lang/String;)Z+]Ljava/util/Set;Ljava/util/Collections$EmptySet;,Ljava/util/Collections$UnmodifiableSet;
 HSPLcom/android/server/AppStateTrackerImpl;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;
 HSPLcom/android/server/AppStateTrackerImpl;->isRunAnyRestrictedLocked(ILjava/lang/String;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;
 HSPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
-HPLcom/android/server/AppStateTrackerImpl;->isUidActiveSynced(I)Z+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HSPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z
+HPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z
 HSPLcom/android/server/AppStateTrackerImpl;->setPowerSaveExemptionListAppIds([I[I[I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HSPLcom/android/server/BatteryService$$ExternalSyntheticLambda4;->update(Landroid/hardware/health/HealthInfo;)V
-HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I+]Lcom/android/server/health/HealthServiceWrapper;Lcom/android/server/health/HealthServiceWrapperAidl;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/health/HealthServiceWrapper;Lcom/android/server/health/HealthServiceWrapperAidl;
 HSPLcom/android/server/BatteryService$Led;->updateLightsLocked()V+]Lcom/android/server/lights/LogicalLight;Lcom/android/server/lights/LightsService$LightImpl;
-HSPLcom/android/server/BatteryService;->plugType(Landroid/hardware/health/HealthInfo;)I
-HSPLcom/android/server/BatteryService;->processValuesLocked(Z)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/MetricsLogger;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/BatteryService$Led;Lcom/android/server/BatteryService$Led;]Lcom/android/server/BatteryService;Lcom/android/server/BatteryService;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/BatteryService;->processValuesLocked(Z)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/MetricsLogger;]Lcom/android/server/BatteryService$Led;Lcom/android/server/BatteryService$Led;]Lcom/android/server/BatteryService;Lcom/android/server/BatteryService;
 HSPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked()V
-HSPLcom/android/server/BatteryService;->sendBatteryLevelChangedIntentLocked()V
-HSPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
-HSPLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V
-HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V+]Ljava/lang/Object;Ljava/lang/Object;]Lcom/android/server/BatteryService;Lcom/android/server/BatteryService;
+HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V+]Lcom/android/server/BatteryService;Lcom/android/server/BatteryService;]Ljava/lang/Object;Ljava/lang/Object;
 HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I
-HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I+]Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Lcom/android/internal/os/CachedDeviceState;Lcom/android/internal/os/CachedDeviceState;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;
-HPLcom/android/server/DeviceIdleController$LocalService;->isAppOnWhitelist(I)Z+]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;
-HSPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/net/INetworkPolicyManager;Lcom/android/server/net/NetworkPolicyManagerService;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/DeviceIdleInternal$StationaryListener;Lcom/android/server/location/provider/StationaryThrottlingLocationProvider;]Lcom/android/server/SystemService;Lcom/android/server/DeviceIdleController;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;
-HSPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V+]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;
+HSPLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/CachedDeviceState;Lcom/android/internal/os/CachedDeviceState;
+HSPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;
+HSPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/INetworkPolicyManager;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Lcom/android/server/DeviceIdleInternal$StationaryListener;Lcom/android/server/location/provider/StationaryThrottlingLocationProvider;]Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;]Lcom/android/server/SystemService;Lcom/android/server/DeviceIdleController;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
+HSPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/Handler;Lcom/android/server/DeviceIdleController$MyHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
 HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/DeviceIdleController;->isAppOnWhitelistInternal(I)Z
 HSPLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked(IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;
-HSPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
+HSPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I+]Ljava/lang/Object;Lcom/android/server/DropBoxManagerService$EntryFile;
-HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I+]Lcom/android/server/DropBoxManagerService$EntryFile;Lcom/android/server/DropBoxManagerService$EntryFile;
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
 HSPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V
-HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
+HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V+]Ljava/util/TreeSet;Ljava/util/TreeSet;
-HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;+]Ljava/util/SortedSet;Ljava/util/TreeSet;]Ljava/util/TreeSet;Ljava/util/TreeSet;]Ljava/util/Iterator;Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;
-HSPLcom/android/server/DropBoxManagerService;->init()V
+HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;+]Ljava/util/Iterator;Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;]Ljava/util/SortedSet;Ljava/util/TreeSet;]Ljava/util/TreeSet;Ljava/util/TreeSet;
 HSPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/DropBoxManagerService;->trimToFit()J+]Ljava/io/File;Ljava/io/File;]Ljava/util/TreeSet;Ljava/util/TreeSet;]Landroid/os/StatFs;Landroid/os/StatFs;
+HSPLcom/android/server/DropBoxManagerService;->trimToFit()J+]Landroid/os/StatFs;Landroid/os/StatFs;]Ljava/io/File;Ljava/io/File;]Ljava/util/TreeSet;Ljava/util/TreeSet;
 HSPLcom/android/server/FgThread;->ensureThreadLocked()V
 HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
+HPLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Landroid/content/IntentFilter;Lcom/android/server/am/BroadcastFilter;
 HSPLcom/android/server/IntentResolver;-><init>()V
-HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/IntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;,Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;
-HSPLcom/android/server/IntentResolver;->buildResolveList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/util/List;IJ)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;
-HSPLcom/android/server/IntentResolver;->collectFilters([Ljava/lang/Object;Landroid/content/IntentFilter;)Ljava/util/ArrayList;+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/lang/Object;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;,Lcom/android/server/am/BroadcastFilter;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->buildResolveList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/util/List;IJ)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/IntentResolver;->copyFrom(Lcom/android/server/IntentResolver;)V+]Lcom/android/server/IntentResolver;megamorphic_types
-HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArraySet;Landroid/util/ArraySet;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;,Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
-HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;+]Ljava/util/Set;Landroid/util/ArraySet;]Landroid/content/Intent;Landroid/content/Intent;
-HPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;+]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;,Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;,Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/CrossProfileIntentResolver;
-HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/IntentResolver;->register_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Lcom/android/server/IntentResolver;megamorphic_types
-HSPLcom/android/server/IntentResolver;->register_mime_types(Ljava/lang/Object;Ljava/lang/String;)I+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;,Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;
+HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArraySet;Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;,Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Landroid/util/ArraySet;
+HPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
+HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;+]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;,Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;,Lcom/android/server/pm/CrossProfileIntentResolver;,Lcom/android/server/pm/PreferredIntentResolver;
+HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/IntentResolver;->register_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I+]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/IntentResolver;->register_mime_types(Ljava/lang/Object;Ljava/lang/String;)I+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;,Lcom/android/server/am/BroadcastFilter;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLcom/android/server/IntentResolver;->removeFilter(Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types
-HSPLcom/android/server/IntentResolver;->removeFilterInternal(Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;
-HSPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/IntentResolver;->removeFilterInternal(Ljava/lang/Object;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/IntentResolver;megamorphic_types
 HSPLcom/android/server/IntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
-HSPLcom/android/server/IntentResolver;->unregister_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Lcom/android/server/IntentResolver;megamorphic_types
-HSPLcom/android/server/IntentResolver;->unregister_mime_types(Ljava/lang/Object;Ljava/lang/String;)I+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;
-HSPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/IntentResolver;->unregister_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I+]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/IntentResolver;->unregister_mime_types(Ljava/lang/Object;Ljava/lang/String;)I+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLcom/android/server/LocalManagerRegistry;->getManager(Ljava/lang/Class;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;
 HSPLcom/android/server/LockGuard;->guard(I)V
 HSPLcom/android/server/NetworkScoreService;->enforceSystemOrHasScoreNetworks()V+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;+]Lcom/android/server/NetworkScorerAppManager;Lcom/android/server/NetworkScorerAppManager;
-HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
-HSPLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/NetworkScorerAppManager;Lcom/android/server/NetworkScorerAppManager;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I
 HSPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String;
-HSPLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;+]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/server/NetworkScorerAppManager;Lcom/android/server/NetworkScorerAppManager;
-HSPLcom/android/server/PackageWatchdog$MonitoredPackage;->updateHealthCheckStateLocked()I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/PackageWatchdog$MonitoredPackage;Lcom/android/server/PackageWatchdog$MonitoredPackage;
-HSPLcom/android/server/PackageWatchdog;->onSupportedPackages(Ljava/util/List;)V+]Lcom/android/server/PackageWatchdog$ObserverInternal;Lcom/android/server/PackageWatchdog$ObserverInternal;]Lcom/android/server/PackageWatchdog$MonitoredPackage;Lcom/android/server/PackageWatchdog$MonitoredPackage;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/service/watchdog/ExplicitHealthCheckService$PackageConfig;Landroid/service/watchdog/ExplicitHealthCheckService$PackageConfig;]Ljava/lang/Long;Ljava/lang/Long;]Lcom/android/server/PackageWatchdog;Lcom/android/server/PackageWatchdog;]Ljava/util/Map;Landroid/util/ArrayMap;
-HSPLcom/android/server/PinnerService$4;->onUidActive(I)V
-HSPLcom/android/server/PinnerService;->updateActiveState(IZ)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;+]Lcom/android/server/NetworkScorerAppManager;Lcom/android/server/NetworkScorerAppManager;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/PackageWatchdog$MonitoredPackage;->updateHealthCheckStateLocked()I+]Lcom/android/server/PackageWatchdog$MonitoredPackage;Lcom/android/server/PackageWatchdog$MonitoredPackage;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
-HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorageAccess(ILjava/lang/String;)Z+]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isExternalStorageService(I)Z
 HSPLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->contains(I)Z
-HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J+]Ljava/io/File;Ljava/io/File;]Landroid/app/usage/StorageStatsManager;Landroid/app/usage/StorageStatsManager;]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;
-HSPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I+]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;
-HSPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/os/storage/VolumeRecord;Landroid/os/storage/VolumeRecord;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/storage/StorageVolume;Landroid/os/storage/StorageVolume;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;
+HSPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;
+HSPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/storage/StorageVolume;Landroid/os/storage/StorageVolume;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Landroid/os/storage/VolumeRecord;Landroid/os/storage/VolumeRecord;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/StorageManagerService;->isCeStorageUnlocked(I)Z+]Lcom/android/server/StorageManagerService$WatchedUnlockedUsers;Lcom/android/server/StorageManagerService$WatchedUnlockedUsers;
-HSPLcom/android/server/StorageManagerService;->isSystemUnlocked(I)Z
 HSPLcom/android/server/StorageManagerService;->isUidOwnerOfPackageOrSystem(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HPLcom/android/server/StorageManagerService;->monitor()V+]Landroid/os/IVold;Landroid/os/IVold$Stub$Proxy;
-HSPLcom/android/server/StorageManagerService;->snapshotAndMonitorLegacyStorageAppOp(Landroid/os/UserHandle;)V+]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/StorageManagerService;->updateLegacyStorageApps(Ljava/lang/String;IZ)V+]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig;
 HSPLcom/android/server/SystemConfig;->readPermissionAllowlist(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Ljava/lang/String;)V
 HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
 HSPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V+]Lcom/android/server/SystemService;megamorphic_types]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;
 HSPLcom/android/server/SystemServiceManager;->startBootPhase(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
-HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService;
 HPLcom/android/server/TelephonyRegistry$Record;->matchTelephonyCallbackEvent(I)Z+]Ljava/util/Set;Ljava/util/HashSet;
-HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/TelephonyRegistry$ConfigurationProvider;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V+]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;megamorphic_types]Lcom/android/server/TelephonyRegistry$ConfigurationProvider;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLcom/android/server/ThreadPriorityBooster;->boost()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
 HSPLcom/android/server/ThreadPriorityBooster;->reset()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
 HSPLcom/android/server/UiModeManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V+]Lcom/android/server/UiModeManagerService$NightMode;Lcom/android/server/UiModeManagerService$1;]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1;
-HSPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V+]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1;]Lcom/android/server/UiModeManagerService$NightMode;Lcom/android/server/UiModeManagerService$1;
+HSPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V+]Lcom/android/server/UiModeManagerService$NightMode;Lcom/android/server/UiModeManagerService$1;]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1;
 HSPLcom/android/server/UiModeManagerService;->updateLocked(II)V+]Landroid/content/Context;Landroid/app/ContextImpl;
 HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I+]Ljava/time/Clock;Landroid/os/SystemClock$1;
 HSPLcom/android/server/Watchdog$HandlerChecker;->isHandlerPolling()Z
 HSPLcom/android/server/Watchdog$HandlerChecker;->run()V+]Lcom/android/server/Watchdog$Monitor;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked(J)V+]Ljava/time/Clock;Landroid/os/SystemClock$1;]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/pm/PackageHandler;,Lcom/android/server/am/ActivityManagerService$MainHandler;
-HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I+]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
-HSPLcom/android/server/Watchdog;->isInterestingJavaProcess(Ljava/lang/String;)Z
+HSPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked(J)V+]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/am/ActivityManagerService$MainHandler;,Lcom/android/server/pm/PackageHandler;]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Ljava/time/Clock;Landroid/os/SystemClock$1;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I+]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/Watchdog;->run()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;]Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/AccessibilityTraceManager;]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/UiAutomationManager;]Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/AccessibilityTraceManager;]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Lcom/android/server/accessibility/AccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityServiceConnection;]Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;]Lcom/android/server/accessibility/AccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityServiceConnection;]Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/AccessibilityTraceManager;]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/UiAutomationManager;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityUserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Lcom/android/server/accessibility/AccessibilityManagerService;]Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;
-HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Lcom/android/server/accessibility/AccessibilityManagerService;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HSPLcom/android/server/accessibility/AccessibilityTraceManager;->isA11yTracingEnabledForTypes(J)Z
-HSPLcom/android/server/accessibility/ProxyManager;->getFirstDeviceIdForUidLocked(I)I+]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Ljava/util/Set;Landroid/util/ArraySet;
-HPLcom/android/server/accounts/AccountManagerService$8;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZLjava/lang/String;IZ[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HSPLcom/android/server/accessibility/ProxyManager;->getFirstDeviceIdForUidLocked(I)I+]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/ArraySet;
 HPLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V+]Landroid/accounts/IAccountAuthenticator;Landroid/accounts/IAccountAuthenticator$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V+]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V+]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/accounts/AccountManager$BaseFutureTask$Response;]Ljava/lang/Object;megamorphic_types]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;,Landroid/accounts/AccountManager$BaseFutureTask$Response;
-HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V+]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$TestFeaturesSession;
-HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z+]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/accounts/AccountManagerService$Session;->checkKeyIntentParceledCorrectly(Landroid/os/Bundle;)Z+]Landroid/content/Intent;Landroid/content/Intent;
-HPLcom/android/server/accounts/AccountManagerService$Session;->close()V+]Lcom/android/server/accounts/AccountManagerService$Session;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Object;megamorphic_types]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/accounts/AccountManager$BaseFutureTask$Response;]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;,Landroid/accounts/AccountManager$BaseFutureTask$Response;
-HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
-HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V+]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$RemoveAccountSession;,Lcom/android/server/accounts/AccountManagerService$8;,Lcom/android/server/accounts/AccountManagerService$13;,Lcom/android/server/accounts/AccountManagerService$9;]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
-HPLcom/android/server/accounts/AccountManagerService$Session;->scheduleTimeout()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Landroid/os/IBinder;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/os/BinderProxy;]Ljava/lang/Object;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;
+HPLcom/android/server/accounts/AccountManagerService$Session;->close()V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Landroid/os/IBinder;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/os/BinderProxy;]Lcom/android/server/accounts/AccountManagerService$Session;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$13;,Lcom/android/server/accounts/AccountManagerService$8;,Lcom/android/server/accounts/AccountManagerService$9;,Lcom/android/server/accounts/AccountManagerService$RemoveAccountSession;
 HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z+]Ljava/util/HashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Object;Ljava/lang/String;
-HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;I)[B+]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
-HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V+]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;]Landroid/app/INotificationManager;Lcom/android/server/notification/NotificationManagerService$12;,Lcom/android/server/notification/NotificationManagerService$11;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HSPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I+]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
+HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z+]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/LinkedHashMap;
+HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;I)[B+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
+HSPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V+]Landroid/app/INotificationManager;Lcom/android/server/notification/NotificationManagerService$12;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;
+HSPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HSPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
 HSPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I+]Ljava/util/Map;Ljava/util/HashMap;
+HSPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I+]Ljava/util/Map;Ljava/util/HashMap;
 HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HSPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/HashMap;Ljava/util/LinkedHashMap;]Ljava/util/Collection;Ljava/util/LinkedHashMap$LinkedValues;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedValueIterator;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HSPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V+]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;+]Ljava/util/Map;Ljava/util/HashMap;
-HPLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/accounts/Account;Landroid/accounts/Account;
-HSPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;+]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
+HSPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/Collection;Ljava/util/LinkedHashMap$LinkedValues;]Ljava/util/HashMap;Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedValueIterator;
+HSPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;
+HSPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;+]Ljava/util/Map;Ljava/util/HashMap;
+HSPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HSPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;
+HSPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
 HSPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
 HSPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;
-HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;
-HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/TokenCache;Lcom/android/server/accounts/TokenCache;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;
-HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Lcom/android/server/accounts/TokenCache;Lcom/android/server/accounts/TokenCache;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
+HSPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z+]Landroid/app/admin/DevicePolicyManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;
-HSPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z+]Landroid/app/admin/DevicePolicyManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;
+HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
 HSPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
-HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
-HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
+HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap;
+HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap;
+HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
 HPLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
 HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
 HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
-HPLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap;
-HPLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/util/Map;Ljava/util/HashMap;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
-HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
-HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
 HPLcom/android/server/accounts/AccountsDb;->beginTransaction()V+]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
-HPLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z+]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
-HPLcom/android/server/accounts/AccountsDb;->endTransaction()V+]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
 HPLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
-HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J+]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;
+HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
 HPLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J+]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
 HSPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
 HPLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V+]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
 HPLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z+]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
-HPLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z
 HPLcom/android/server/accounts/TokenCache$Key;->hashCode()I+]Landroid/accounts/Account;Landroid/accounts/Account;
-HPLcom/android/server/accounts/TokenCache$TokenLruCache;->putToken(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)V
-HPLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Lcom/android/server/accounts/TokenCache$Value;+]Lcom/android/server/accounts/TokenCache;Lcom/android/server/accounts/TokenCache;
 HSPLcom/android/server/alarm/Alarm$Snapshot;-><init>(Lcom/android/server/alarm/Alarm;)V
 HSPLcom/android/server/alarm/Alarm;-><init>(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/PendingIntent;Landroid/app/PendingIntent;
-HSPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;
-HSPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z+]Landroid/app/IAlarmListener;Landroid/app/IAlarmListener$Stub$Proxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Ljava/lang/Object;Landroid/os/BinderProxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;
+HSPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;+]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Ljava/lang/Object;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;
 HSPLcom/android/server/alarm/Alarm;->setPolicyElapsed(IJ)Z+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;
 HSPLcom/android/server/alarm/Alarm;->updateWhenElapsed()Z
-HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
 HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
 HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService$2;->doAlarm(Landroid/app/IAlarmCompleteListener;)V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService$ClockReceiver;Lcom/android/server/alarm/AlarmManagerService$ClockReceiver;
-HPLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HPLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
 HSPLcom/android/server/alarm/AlarmManagerService$4;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
+HSPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/alarm/AlarmManagerService$AlarmThread;->run()V
-HSPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;
 HSPLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
 HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/IAlarmListener;Landroid/app/IAlarmListener$Stub$Proxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Landroid/content/Intent;Landroid/content/Intent;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/Handler;Lcom/android/server/alarm/AlarmManagerService$AlarmHandler;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/Message;Landroid/os/Message;]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$InFlight;Lcom/android/server/alarm/AlarmManagerService$InFlight;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Lcom/android/internal/util/LocalLog;Lcom/android/internal/util/LocalLog;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/IAlarmListener;Landroid/app/IAlarmListener$Stub$Proxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Lcom/android/internal/util/LocalLog;Lcom/android/internal/util/LocalLog;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Landroid/os/Handler;Lcom/android/server/alarm/AlarmManagerService$AlarmHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getCallingUid()I
 HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis()J
 HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J
@@ -289,19 +237,17 @@
 HPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V
 HSPLcom/android/server/alarm/AlarmManagerService$LocalService;->shouldGetBucketElevation(Ljava/lang/String;I)Z+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
 HSPLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;-><init>(Lcom/android/server/alarm/Alarm;IJJ)V
-HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmAppStateTracker(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/AppStateTrackerImpl;
 HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmInjector(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$Injector;
 HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/pm/PackageManagerInternal;
-HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smisExactAlarmChangeEnabled(Ljava/lang/String;I)Z
-HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/Alarm;)Z+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;
-HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnDeviceIdle(Lcom/android/server/alarm/Alarm;)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;
-HSPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/Alarm;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
+HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnDeviceIdle(Lcom/android/server/alarm/Alarm;)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
+HSPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/alarm/AlarmManagerService;->convertToElapsed(JI)J+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
 HSPLcom/android/server/alarm/AlarmManagerService;->decrementAlarmCount(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V+]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService;->getQuotaForBucketLocked(I)I
-HSPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(Ljava/lang/String;I)Z+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
+HSPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/alarm/AlarmManagerService;->getQuotaForBucketLocked(I)I
+HSPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(Ljava/lang/String;I)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
 HSPLcom/android/server/alarm/AlarmManagerService;->hasUseExactAlarmInternal(Ljava/lang/String;I)Z+]Lcom/android/server/SystemService;Lcom/android/server/alarm/AlarmManagerService;
 HSPLcom/android/server/alarm/AlarmManagerService;->increment(Landroid/util/SparseIntArray;I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/alarm/AlarmManagerService;->incrementAlarmCount(I)V
@@ -312,103 +258,98 @@
 HSPLcom/android/server/alarm/AlarmManagerService;->lambda$reorderAlarmsBasedOnStandbyBuckets$5(Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
 HSPLcom/android/server/alarm/AlarmManagerService;->logAlarmBatchDelivered(IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/alarm/AlarmManagerService;->maxTriggerTime(JJJ)J
-HSPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(Ljava/util/function/Predicate;I)V+]Landroid/app/IAlarmListener;Landroid/app/IAlarmListener$Stub$Proxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/function/Predicate;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HPLcom/android/server/alarm/AlarmManagerService;->removeExactListenerAlarms([I)V
+HSPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(Ljava/util/function/Predicate;I)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/function/Predicate;megamorphic_types
 HSPLcom/android/server/alarm/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;I)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
 HSPLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
-HSPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/IAlarmListener;Landroid/app/IAlarmListener$Stub$Proxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/app/AlarmManager$ListenerWrapper;,Lcom/android/server/alarm/AlarmManagerService$2;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(Lcom/android/server/alarm/Alarm;)V+]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;
+HSPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(Lcom/android/server/alarm/Alarm;)V+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
 HSPLcom/android/server/alarm/AlarmManagerService;->setLocked(IJ)V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
-HPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
-HSPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HSPLcom/android/server/alarm/AlarmManagerService;->updateNextAlarmClockLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/lang/Object;Landroid/app/AlarmManager$AlarmClockInfo;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Landroid/app/AlarmManager$AlarmClockInfo;Landroid/app/AlarmManager$AlarmClockInfo;
+HSPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V+]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;
+HSPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/alarm/AlarmManagerService;->updateNextAlarmClockLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/lang/Object;Landroid/app/AlarmManager$AlarmClockInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;->applyAsLong(Ljava/lang/Object;)J+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;
 HSPLcom/android/server/alarm/LazyAlarmStore;->add(Lcom/android/server/alarm/Alarm;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/alarm/LazyAlarmStore;->getNextDeliveryTime()J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/alarm/LazyAlarmStore;->getNextWakeupDeliveryTime()J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/function/Predicate;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Runnable;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda2;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;
+HSPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/lang/Runnable;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda4;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types
 HSPLcom/android/server/alarm/LazyAlarmStore;->removePendingAlarms(J)Ljava/util/ArrayList;+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/LazyAlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/alarm/LazyAlarmStore;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z+]Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLcom/android/server/alarm/MetricsHelper;->pushAlarmScheduled(Lcom/android/server/alarm/Alarm;I)V
 HSPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Landroid/content/ComponentName;)V
-HSPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/am/ActiveServices$ServiceMap;
-HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/os/Handler;Lcom/android/server/am/ActiveServices$ServiceMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter-IA;)V
-HSPLcom/android/server/am/ActiveServices;->applyForegroundServiceNotificationLocked(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Landroid/app/IServiceConnection;Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/IServiceConnection$Stub$Proxy;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZLjava/lang/String;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Landroid/app/IServiceConnection;Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/IServiceConnection$Stub$Proxy;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;
-HSPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppStartInfoTracker;Lcom/android/server/am/AppStartInfoTracker;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;
-HSPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZLjava/lang/String;)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppStartInfoTracker;Lcom/android/server/am/AppStartInfoTracker;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)V+]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
 HPLcom/android/server/am/ActiveServices;->canBindingClientStartFgsLocked(I)Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ActiveServices;->generateAdditionalSeInfoFromService(Landroid/content/Intent;)Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ActiveServices;->getHostingRecordTriggerType(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->getProcessNameForService(Landroid/content/pm/ServiceInfo;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/am/ActiveServices;->getProcessNameForService(Landroid/content/pm/ServiceInfo;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForAddLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForRemovalLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
 HSPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/ActiveServices;->getShortProcessNameForStats(ILjava/lang/String;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/String;Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->getShortServiceNameForStats(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;+]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/am/ActiveServices;->hasForegroundServiceNotificationLocked(Ljava/lang/String;ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActiveServices;->getShortServiceNameForStats(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
 HSPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z+]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
-HSPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;
-HPLcom/android/server/am/ActiveServices;->lambda$canBindingClientStartFgsLocked$6(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->lambda$canBindingClientStartFgsLocked$6(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsStartForegroundNoBindingCheckLocked$7(IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionByBindingsLocked$5(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
-HSPLcom/android/server/am/ActiveServices;->maybeLogBindCrossProfileService(ILjava/lang/String;I)V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;
-HSPLcom/android/server/am/ActiveServices;->maybeStopFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;]Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionByBindingsLocked$5(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->maybeLogBindCrossProfileService(ILjava/lang/String;I)V+]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ActiveServices;->maybeStopFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActiveServices;->notifyBindingServiceEventLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/os/Message;Landroid/os/Message;
-HSPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/app/IServiceConnection;Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/IServiceConnection$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;
-HSPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I+]Landroid/app/IServiceConnection;Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/IServiceConnection$Stub$Proxy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/Intent$FilterComparison;Landroid/content/Intent$FilterComparison;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;ZI)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActiveServices;->resetFgsRestrictionLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
-HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActiveServices$ProcessAnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
-HSPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V+]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;IIIZLandroid/content/Intent;)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ActiveServices$ProcessAnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
+HSPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;IIIZLandroid/content/Intent;)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;Z)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
 HSPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;ZZ)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;III)V+]Landroid/content/pm/ServiceInfo;Landroid/content/pm/ServiceInfo;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundWithBindingCheckLocked(ILjava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;Z)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundWithBindingCheckLocked(ILjava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;Z)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionByBindingsLocked(I)I
-HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;
-HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ActiveServices$ServiceMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
 HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
-HSPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/IServiceConnection$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;)V+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessServiceRecord;Z)V+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ActiveServices;->verifyPackage(Ljava/lang/String;I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessServiceRecord;Z)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
+HPLcom/android/server/am/ActiveServices;->verifyPackage(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
+HSPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/ActivityManagerConstants;->shouldDebugUidForProcState(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z+]Lcom/android/server/am/ActivityManagerService$3;Lcom/android/server/am/ActivityManagerService$3;
 HSPLcom/android/server/am/ActivityManagerService$3;->getIntentFilter(Lcom/android/server/am/BroadcastFilter;)Landroid/content/IntentFilter;
@@ -417,17 +358,12 @@
 HSPLcom/android/server/am/ActivityManagerService$3;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/am/ActivityManagerService$3;Lcom/android/server/am/ActivityManagerService$3;
 HSPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Lcom/android/server/am/BroadcastFilter;IIJ)Lcom/android/server/am/BroadcastFilter;
 HSPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/am/ActivityManagerService$3;Lcom/android/server/am/ActivityManagerService$3;
-HSPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
-HSPLcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;-><init>(JILjava/lang/String;I)V
 HSPLcom/android/server/am/ActivityManagerService$Injector;->clearCallingIdentity()J
 HSPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z
 HSPLcom/android/server/am/ActivityManagerService$Injector;->getCallingPid()I
 HSPLcom/android/server/am/ActivityManagerService$Injector;->getCallingUid()I
 HSPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z+]Lcom/android/server/net/NetworkManagementInternal;Lcom/android/server/net/NetworkManagementService$LocalService;
 HSPLcom/android/server/am/ActivityManagerService$Injector;->restoreCallingIdentity(J)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->applyForegroundServiceNotification(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;ZI[ILjava/util/function/BiFunction;Landroid/os/Bundle;)I
-HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/app/IApplicationThread;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTopUid(IJ)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
@@ -441,271 +377,233 @@
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isDeviceOwner(I)Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isPendingTopUid(I)Z+]Lcom/android/server/am/PendingStartActivityUids;Lcom/android/server/am/PendingStartActivityUids;
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isProfileOwner(I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isUidActive(I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmFinish(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->onUidBlockedReasonsChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
+HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
 HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
 HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Ljava/lang/Thread;Lcom/android/server/am/ActivityManagerService$MainHandler$1;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/IUiAutomationConnection;Landroid/app/IUiAutomationConnection$Stub$Proxy;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Thread;Lcom/android/server/am/ActivityManagerService$MainHandler$1;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$1(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V+]Landroid/app/ActivityManagerInternal$BroadcastEventListener;Lcom/android/server/am/AppBroadcastEventsTracker;
 HSPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$2(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V+]Landroid/app/ActivityManagerInternal$BindServiceEventListener;Lcom/android/server/am/AppBindServiceEventsTracker;
 HSPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IJILjava/lang/String;II)V
-HSPLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/am/ActivityManagerService$PidMap;->doRemoveInternal(ILcom/android/server/am/ProcessRecord;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/ActivityManagerService$PidMap;->valueAt(I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppErrors;Lcom/android/server/am/AppErrors;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmDeviceOwnerUid(Lcom/android/server/am/ActivityManagerService;)I
-HSPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V+]Lcom/android/server/am/BroadcastStats;Lcom/android/server/am/BroadcastStats;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V+]Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/os/DropBoxManager;Landroid/os/DropBoxManager;]Lcom/android/server/am/DropboxRateLimiter;Lcom/android/server/am/DropboxRateLimiter;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;
+HSPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V+]Landroid/os/DropBoxManager;Landroid/os/DropBoxManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;]Lcom/android/server/am/DropboxRateLimiter;Lcom/android/server/am/DropboxRateLimiter;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V
-HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/view/autofill/AutofillManagerInternal;Lcom/android/server/autofill/AutofillManagerService$LocalService;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/graphics/fonts/FontManagerInternal;Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;
+HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/autofill/AutofillManagerInternal;Lcom/android/server/autofill/AutofillManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/graphics/fonts/FontManagerInternal;Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
 HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
-HPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
 HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/content/IIntentReceiver;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Lcom/android/server/am/BroadcastFilter;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;megamorphic_types]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Lcom/android/server/am/BroadcastFilter;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;
-HSPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
 HSPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService;->checkPermissionForDevice(Ljava/lang/String;III)I
-HSPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I[I)Ljava/util/List;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/HashSet;Ljava/util/HashSet;
+HSPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I[I)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLcom/android/server/am/ActivityManagerService;->enforceAllowedToStartOrBindServiceIfSdkSandbox(Landroid/content/Intent;)V+]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;
-HSPLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
 HSPLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/os/Bundle;I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V+]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->enqueuePendingTopAppIfNecessaryLocked()V
+HSPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
 HSPLcom/android/server/am/ActivityManagerService;->ensureAllowedAssociations()V
-HSPLcom/android/server/am/ActivityManagerService;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActivityManagerService;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Ljava/lang/String;)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
-HSPLcom/android/server/am/ActivityManagerService;->getAppOpsManager()Landroid/app/AppOpsManager;
-HSPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
 HSPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
 HSPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
 HSPLcom/android/server/am/ActivityManagerService;->getCurrentUserId()I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
-HSPLcom/android/server/am/ActivityManagerService;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/am/ActivityManagerService;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ActivityManagerService;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HSPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
-HSPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
+HSPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
 HSPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-HSPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
 HSPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ActivityManagerService;->getRealProcessStateLocked(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;
-HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;
-HSPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService;->getRealProcessStateLocked(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
 HSPLcom/android/server/am/ActivityManagerService;->getShortAction(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/am/ActivityManagerService;->getTopApp()Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActivityManagerService;->getTopApp()Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->getUidProcessCapabilityLocked(I)I+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
 HSPLcom/android/server/am/ActivityManagerService;->getUidState(I)I+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
 HSPLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
 HSPLcom/android/server/am/ActivityManagerService;->grantImplicitAccess(ILandroid/content/Intent;II)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;IZZZ)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
-HSPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
-HSPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;II)Z+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;II)Z+]Landroid/app/SyncNotedAppOp;Landroid/app/SyncNotedAppOp;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/am/ActivityManagerService;->isAllowlistedForFgsStartLOSP(I)Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
+HSPLcom/android/server/am/ActivityManagerService;->isAppBad(Ljava/lang/String;I)Z+]Lcom/android/server/am/AppErrors;Lcom/android/server/am/AppErrors;
 HSPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z+]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/am/ActivityManagerService;->isSystemUserOnly(I)Z
-HSPLcom/android/server/am/ActivityManagerService;->isUidActive(ILjava/lang/String;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z+]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->lambda$getPackageProcessState$0([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
-HSPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;
-HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V+]Lcom/android/server/stats/pull/StatsPullAtomServiceInternal;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;
-HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
+HSPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
+HSPLcom/android/server/am/ActivityManagerService;->lambda$getPackageProcessState$0([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V+]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/stats/pull/StatsPullAtomServiceInternal;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;
+HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/os/WorkSource;Landroid/os/WorkSource;
 HSPLcom/android/server/am/ActivityManagerService;->notifyBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/os/Message;Landroid/os/Message;
 HSPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
 HSPLcom/android/server/am/ActivityManagerService;->pushTempAllowlist()V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/am/PendingTempAllowlists;Lcom/android/server/am/PendingTempAllowlists;
 HSPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HSPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Ljava/lang/Object;Ljava/lang/String;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;]Lcom/android/server/am/ReceiverList;Lcom/android/server/am/ReceiverList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Lcom/android/server/am/ReceiverList;,Ljava/util/ArrayList;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;,Lcom/android/server/am/BroadcastFilter;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ReceiverList;Lcom/android/server/am/ReceiverList;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Lcom/android/server/am/ReceiverList;,Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeatureTraced(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
 HSPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HSPLcom/android/server/am/ActivityManagerService;->removePidLocked(ILcom/android/server/am/ProcessRecord;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HSPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Ljava/util/ArrayList;Lcom/android/server/am/ReceiverList;
+HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/IntentResolver;Lcom/android/server/am/ActivityManagerService$3;]Ljava/util/ArrayList;Lcom/android/server/am/ReceiverList;]Ljava/util/HashMap;Ljava/util/HashMap;
 HPLcom/android/server/am/ActivityManagerService;->reportUidFrozenStateChanged([I[I)V+]Landroid/app/IUidFrozenStateChangedCallback;Landroid/app/ActivityManager$1;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/am/ActivityManagerService;->reportUidInfoMessageLocked(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
 HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
 HSPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V
 HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I+]Landroid/content/IIntentSender;Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;]Lcom/android/server/am/PendingIntentRecord;Lcom/android/server/am/PendingIntentRecord;
 HSPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
+HSPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/ActivityManagerService;->shouldIgnoreDeliveryGroupPolicy(Ljava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IIJLandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
 HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;IJLandroid/content/ComponentName;Ljava/lang/String;)V
 HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-HSPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IJILjava/lang/String;II)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
+HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HSPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IJILjava/lang/String;II)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$UiHandler;]Landroid/os/Message;Landroid/os/Message;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;]Lcom/android/server/am/PendingTempAllowlists;Lcom/android/server/am/PendingTempAllowlists;
 HSPLcom/android/server/am/ActivityManagerService;->traceBegin(JLjava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;
-HPLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z+]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
-HSPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V+]Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;Lcom/android/server/am/AppFGSTracker;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V+]Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;Lcom/android/server/am/AppFGSTracker;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(Ljava/lang/String;ILjava/lang/String;I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActivityManagerService$PackageAssociationInfo;Lcom/android/server/am/ActivityManagerService$PackageAssociationInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/AppBindServiceEventsTracker;->onBindingService(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;
-HSPLcom/android/server/am/AppBroadcastEventsTracker;->onSendingBroadcast(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;
+HSPLcom/android/server/am/AppBindServiceEventsTracker;->onBindingService(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
+HSPLcom/android/server/am/AppBroadcastEventsTracker;->onSendingBroadcast(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
 HSPLcom/android/server/am/AppErrors;->isBadProcess(Ljava/lang/String;I)Z+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
 HSPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addInfoLocked(Landroid/util/SparseArray;Landroid/app/ApplicationExitInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/io/File;Ljava/io/File;]Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addInfoLocked(Landroid/util/SparseArray;Landroid/app/ApplicationExitInfo;)V+]Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/io/File;Ljava/io/File;
 HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;]Lcom/android/server/am/AppExitInfoTracker;Lcom/android/server/am/AppExitInfoTracker;
-HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda8;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/ArrayList;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/AppExitInfoTracker;Lcom/android/server/am/AppExitInfoTracker;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;
+HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda8;
+HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/ArrayList;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;]Lcom/android/server/am/AppExitInfoTracker;Lcom/android/server/am/AppExitInfoTracker;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/AppExitInfoTracker;->handleNoteProcessDiedLocked(Landroid/app/ApplicationExitInfo;)V
-HSPLcom/android/server/am/AppExitInfoTracker;->lambda$getExitInfo$3(ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;
-HSPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;]Lcom/android/server/am/AppExitInfoTracker;Lcom/android/server/am/AppExitInfoTracker;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;
-HSPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecord(Lcom/android/server/am/ProcessRecord;J)Landroid/app/ApplicationExitInfo;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
-HSPLcom/android/server/am/AppExitInfoTracker;->performLogToStatsdLocked(Landroid/app/ApplicationExitInfo;)V
-HSPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteProcessDied(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/AppFGSTracker$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/am/AppExitInfoTracker;->lambda$getExitInfo$3(ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;]Lcom/android/server/am/AppExitInfoTracker;Lcom/android/server/am/AppExitInfoTracker;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecord(Lcom/android/server/am/ProcessRecord;J)Landroid/app/ApplicationExitInfo;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/AppFGSTracker;->hasForegroundServices(Ljava/lang/String;I)Z+]Lcom/android/server/am/AppFGSTracker$PackageDurations;Lcom/android/server/am/AppFGSTracker$PackageDurations;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap;
-HPLcom/android/server/am/AppPermissionTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
 HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;-><init>(Lcom/android/server/am/AppPermissionTracker;ILjava/lang/String;I)V+]Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updateAppOps()V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updatePermissionState()V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/am/AppPermissionTracker;->handleOpChanged(IILjava/lang/String;)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/am/AppPermissionTracker;Lcom/android/server/am/AppPermissionTracker;]Lcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;Lcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;
-HPLcom/android/server/am/AppPermissionTracker;->handlePermissionsChangedLocked(I[Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/BaseAppStateTracker;Lcom/android/server/am/AppPermissionTracker;
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updateAppOps()V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updatePermissionState()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
 HPLcom/android/server/am/AppPermissionTracker;->handlePermissionsInit()V
 HSPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/AppProfiler$BgHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
 HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsHighWatermarkIfNecessaryLocked(IJ)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/os/Message;Landroid/os/Message;
 HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/am/AppProfiler;->getCpuDelayTimeForPid(I)J+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;
-HPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z
 HPLcom/android/server/am/AppProfiler;->isProfilingPss()Z
-HSPLcom/android/server/am/AppProfiler;->lambda$updateLowMemStateLSP$3(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/AppProfiler;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/am/AppProfiler;->requestPssLPf(Lcom/android/server/am/ProcessProfileRecord;I)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/am/AppProfiler$BgHandler;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;+]Lcom/android/server/am/AppProfiler$ProfileData;Lcom/android/server/am/AppProfiler$ProfileData;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;
-HSPLcom/android/server/am/AppProfiler;->updateCpuStats()V
-HSPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
-HSPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;]Lcom/android/server/am/AppRestrictionController$RestrictionSettings;Lcom/android/server/am/AppRestrictionController$RestrictionSettings;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerService()Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
+HSPLcom/android/server/am/AppProfiler;->lambda$updateLowMemStateLSP$3(Lcom/android/server/am/ProcessRecord;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HPLcom/android/server/am/AppProfiler;->requestPssLPf(Lcom/android/server/am/ProcessProfileRecord;I)Z+]Landroid/os/Handler;Lcom/android/server/am/AppProfiler$BgHandler;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/AppProfiler$ProfileData;Lcom/android/server/am/AppProfiler$ProfileData;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
+HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController$RestrictionSettings;Lcom/android/server/am/AppRestrictionController$RestrictionSettings;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
 HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I
 HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/internal/util/function/TriConsumer;Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;
 HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;
-HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
-HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmSettingsLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
-HSPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/apphibernation/AppHibernationManagerInternal;Lcom/android/server/apphibernation/AppHibernationService$LocalService;
-HSPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HSPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/util/Set;Ljava/util/Collections$EmptySet;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HSPLcom/android/server/am/AppRestrictionController;->handleAppStandbyBucketChanged(ILjava/lang/String;I)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/am/AppRestrictionController;->handleUidInactive(IZ)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Runnable;Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda0;
-HSPLcom/android/server/am/AppRestrictionController;->handleUidProcStateChanged(II)V+]Lcom/android/server/am/BaseAppStateTracker;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/AppRestrictionController;->hasForegroundServices(Ljava/lang/String;I)Z+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppFGSTracker;Lcom/android/server/am/AppFGSTracker;
+HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;+]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/apphibernation/AppHibernationManagerInternal;Lcom/android/server/apphibernation/AppHibernationService$LocalService;
+HSPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
+HSPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
+HPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
 HSPLcom/android/server/am/AppRestrictionController;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z
 HPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z
 HSPLcom/android/server/am/AppRestrictionController;->isOnSystemDeviceIdleAllowlist(I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HPLcom/android/server/am/AppRestrictionController;->isRoleHeldByUid(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Ljava/io/File;Ljava/io/File;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Ljava/io/File;Ljava/io/File;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(III)V
+HSPLcom/android/server/am/AppStartInfoTracker;->addBaseFieldsFromProcessRecord(Landroid/app/ApplicationStartInfo;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/AppStartInfoTracker;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)Landroid/app/ApplicationStartInfo;+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
 HSPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getMaxTrackingDuration()J
 HSPLcom/android/server/am/BaseAppStateEventsTracker;->isUidOnTop(I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/BaseAppStatePolicy;->isEnabled()Z
 HSPLcom/android/server/am/BaseAppStatePolicy;->shouldExemptUid(I)I+]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/lang/Integer;Ljava/lang/Integer;
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I+]Ljava/util/LinkedList;Ljava/util/LinkedList;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/Iterator;Ljava/util/LinkedList$DescendingIterator;]Ljava/lang/Integer;Ljava/lang/Integer;
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V+]Ljava/util/LinkedList;Ljava/util/LinkedList;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Iterator;Ljava/util/LinkedList$DescendingIterator;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList;
 HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getNumOfEventsThreshold()I
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->shouldExempt(Ljava/lang/String;I)I+]Lcom/android/server/am/BaseAppStateEventsTracker;Lcom/android/server/am/AppBroadcastEventsTracker;,Lcom/android/server/am/AppBindServiceEventsTracker;]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;,Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBroadcastEventsTracker;,Lcom/android/server/am/AppBindServiceEventsTracker;
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;,Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;]Lcom/android/server/am/BaseAppStateEvents$Factory;Lcom/android/server/am/AppBroadcastEventsTracker;,Lcom/android/server/am/AppBindServiceEventsTracker;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap;
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onNewEvent(Ljava/lang/String;I)V+]Landroid/os/Handler;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;]Landroid/os/Message;Landroid/os/Message;
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->shouldExempt(Ljava/lang/String;I)I+]Lcom/android/server/am/AppRestrictionController;Lcom/android/server/am/AppRestrictionController;]Lcom/android/server/am/BaseAppStateEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateEvents$Factory;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap;
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;->run()V
 HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
 HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda35;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V
 HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
 HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda79;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda96;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda96;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;->run()V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
 HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;->run()V
 HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
-HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
 HPLcom/android/server/am/BatteryStatsService;->awaitCompletion()V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
-HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V+]Lcom/android/internal/os/RpmStats$PowerStateSubsystem;Lcom/android/internal/os/RpmStats$PowerStateSubsystem;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/Map;Ljava/util/HashMap;]Lcom/android/internal/os/RpmStats;Lcom/android/internal/os/RpmStats;
-HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$105(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
-HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$103(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
-HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$106(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Lcom/android/internal/os/RpmStats$PowerStateSubsystem;Lcom/android/internal/os/RpmStats$PowerStateSubsystem;]Lcom/android/internal/os/RpmStats;Lcom/android/internal/os/RpmStats;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$105(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$103(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$106(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelock$23(IILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelockFromSource$25(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelock$24(IILjava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelockFromSource$27(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/am/BatteryStatsService;->lambda$noteUidProcessState$13(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteWifiRadioPowerState$64(IJIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
-HSPLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$96(IIIIIIIIJJJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
 HPLcom/android/server/am/BatteryStatsService;->monitor()V
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/Handler;Landroid/os/Handler;
+HSPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/Handler;Landroid/os/Handler;
 HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
-HSPLcom/android/server/am/BatteryStatsService;->noteCpuWakingActivity(IJ[I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
 HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
 HSPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartLaunch(ILjava/lang/String;Ljava/lang/String;)V+]Landroid/os/Handler;Landroid/os/Handler;
 HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartRunning(ILjava/lang/String;Ljava/lang/String;)V+]Landroid/os/Handler;Landroid/os/Handler;
 HSPLcom/android/server/am/BatteryStatsService;->noteServiceStopLaunch(ILjava/lang/String;Ljava/lang/String;)V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V+]Landroid/os/Handler;Landroid/os/Handler;
 HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V+]Landroid/os/Handler;Landroid/os/Handler;
@@ -719,109 +617,107 @@
 HSPLcom/android/server/am/BroadcastHistory;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastHistory;->onBroadcastEnqueuedLocked(Lcom/android/server/am/BroadcastRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/BroadcastHistory;->onBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastLoopers;->addMyLooper()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Looper;Landroid/os/Looper;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/am/BroadcastLoopers;->addMyLooper()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/BroadcastProcessQueue;-><init>(Lcom/android/server/am/BroadcastConstants;Ljava/lang/String;I)V
-HSPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DescendingIterator;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DescendingIterator;
+HSPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcast(Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;megamorphic_types]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;megamorphic_types]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;
+HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;megamorphic_types]Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;megamorphic_types]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
 HSPLcom/android/server/am/BroadcastProcessQueue;->getActive()Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveAssumedDeliveryCountSinceIdle()I
 HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveCountSinceIdle()I
 HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveIndex()I
 HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveViaColdStart()Z
 HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveWasStopped()Z
 HSPLcom/android/server/am/BroadcastProcessQueue;->getPreferredSchedulingGroupLocked()I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;
+HSPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastProcessQueue;->getRunnableAt()J+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastProcessQueue;->insertIntoRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastProcessQueue;->invalidateRunnableAt()V
 HSPLcom/android/server/am/BroadcastProcessQueue;->isActive()Z
 HSPLcom/android/server/am/BroadcastProcessQueue;->isEmpty()Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastProcessQueue;->isPendingManifest()Z
-HSPLcom/android/server/am/BroadcastProcessQueue;->isPendingOrdered()Z
 HSPLcom/android/server/am/BroadcastProcessQueue;->isProcessWarm()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->isQueueEmpty(Ljava/util/ArrayDeque;)Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastProcessQueue;->isRunnable()Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastProcessQueue;->makeActiveIdle()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;
-HSPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastDequeued(Lcom/android/server/am/BroadcastRecord;I)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastEnqueued(Lcom/android/server/am/BroadcastRecord;I)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcast()Lcom/android/internal/os/SomeArgs;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcastRecord()Lcom/android/server/am/BroadcastRecord;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V+]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastDequeued(Lcom/android/server/am/BroadcastRecord;I)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastEnqueued(Lcom/android/server/am/BroadcastRecord;I)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcast()Lcom/android/internal/os/SomeArgs;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcastRecord()Lcom/android/server/am/BroadcastRecord;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast()Ljava/util/ArrayDeque;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;II)Ljava/util/ArrayDeque;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;II)Ljava/util/ArrayDeque;+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastProcessQueue;->removeFromRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->removeNextBroadcast()Lcom/android/internal/os/SomeArgs;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->setProcessAndUidState(Lcom/android/server/am/ProcessRecord;ZZ)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastProcessQueue;->removeNextBroadcast()Lcom/android/internal/os/SomeArgs;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/am/BroadcastProcessQueue;->setProcessAndUidState(Lcom/android/server/am/ProcessRecord;ZZ)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/BroadcastProcessQueue;->setTimeoutScheduled(Z)V
 HSPLcom/android/server/am/BroadcastProcessQueue;->shouldBeDeferred()Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastProcessQueue;->timeoutScheduled()Z
 HSPLcom/android/server/am/BroadcastProcessQueue;->toShortString()Ljava/lang/String;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/BroadcastProcessQueue;->traceActiveBegin()V+]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->traceActiveBegin()V+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/BroadcastProcessQueue;->traceActiveEnd()V+]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastProcessQueue;->traceProcessEnd()V+]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->traceProcessRunningBegin()V+]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/BroadcastProcessQueue;->traceProcessRunningBegin()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/Object;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/BroadcastProcessQueue;->updateDeferredStates(Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/am/BroadcastQueue;->traceBegin(Ljava/lang/String;)I+]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/BroadcastQueue;->traceEnd(I)V
 HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda19;->test(Lcom/android/server/am/BroadcastRecord;I)Z
 HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl$1;->onUidStateChanged(IIJI)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->cancelDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->checkAndRemoveWaitingFor()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->checkPendingColdStartValidityLocked()V+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->demoteFromRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/SameProcessApplicationThread;]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;,Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/SameProcessApplicationThread;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueUpdateRunningList()V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda5;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda5;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastProcessQueue;+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRecordsLookupCache()Landroid/util/ArrayMap;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningIndexOf(Lcom/android/server/am/BroadcastProcessQueue;)I
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningSize()I
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->handleProcessFreezableChanged(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->isPendingColdStartValid()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->isProcessFreezable(Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;,Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->logBootCompletedBroadcastCompletionLatencyIfPossible(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleRegisteredReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)V+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStoppedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationAttachedLocked(Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationCleanupLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/SameProcessApplicationThread;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/SameProcessApplicationThread;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->shouldRetire(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;+]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
 HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningList()V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
 HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;,Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;Z)[I+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;,Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;Z)[I+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
 HSPLcom/android/server/am/BroadcastRecord;->calculateDeferUntilActive(ILandroid/app/BroadcastOptions;Landroid/content/IIntentReceiver;ZZ)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
 HSPLcom/android/server/am/BroadcastRecord;->calculateTypeForLogging()I+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastRecord;->calculateUrgent(Landroid/content/Intent;Landroid/app/BroadcastOptions;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;
@@ -829,7 +725,7 @@
 HSPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingNamespaceFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
 HSPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupPolicy()I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
 HSPLcom/android/server/am/BroadcastRecord;->getDeliveryState(I)I
-HSPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;+]Ljava/util/function/BiFunction;Lcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda8;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Ljava/util/function/BiFunction;Lcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda8;
 HSPLcom/android/server/am/BroadcastRecord;->getReceiverPriority(Ljava/lang/Object;)I+]Landroid/content/IntentFilter;Lcom/android/server/am/BroadcastFilter;
 HSPLcom/android/server/am/BroadcastRecord;->getReceiverProcessName(Ljava/lang/Object;)Ljava/lang/String;
 HSPLcom/android/server/am/BroadcastRecord;->getReceiverUid(Ljava/lang/Object;)I
@@ -838,7 +734,6 @@
 HSPLcom/android/server/am/BroadcastRecord;->isDeliveryStateTerminal(I)Z
 HSPLcom/android/server/am/BroadcastRecord;->isForeground()Z+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/BroadcastRecord;->isMatchingKeyNull(Lcom/android/server/am/BroadcastRecord;)Z
-HPLcom/android/server/am/BroadcastRecord;->isNoAbort()Z+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/BroadcastRecord;->isOffload()Z+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/BroadcastRecord;->isReceiverEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLcom/android/server/am/BroadcastRecord;->isReplacePending()Z+]Landroid/content/Intent;Landroid/content/Intent;
@@ -847,49 +742,43 @@
 HSPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord;+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/BroadcastRecord;->setDeliveryState(IILjava/lang/String;)Z+]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastRecord;->toShortString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->createAttributionSourcesForResolveInfo(Landroid/content/pm/ResolveInfo;)[Landroid/content/AttributionSource;
 HSPLcom/android/server/am/BroadcastSkipPolicy;->disallowBackgroundStart(Lcom/android/server/am/BroadcastRecord;)Z+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/BroadcastSkipPolicy;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)Ljava/lang/String;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;+]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)Ljava/lang/String;+]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;
 HSPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;->addMemStats(JJJJJ)V
-HPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->performCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;I)V
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/Random;Ljava/util/Random;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/internal/os/ProcLocksReader;Lcom/android/internal/os/ProcLocksReader;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->reportUnfreeze(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;I)V+]Ljava/util/Random;Ljava/util/Random;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;,Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;]Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;]Ljava/util/LinkedList;Lcom/android/server/am/CachedAppOptimizer$4;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;]Ljava/lang/Enum;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;,Lcom/android/server/am/CachedAppOptimizer$CompactSource;]Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldRssThrottleCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;ILjava/lang/String;[J)Z+]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldTimeThrottleCompaction(Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Z
-HPLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;-><init>([JLcom/android/server/am/CachedAppOptimizer$CompactSource;Ljava/lang/String;JJJJJIIII)V
-HPLcom/android/server/am/CachedAppOptimizer;->binderError(ILcom/android/server/am/ProcessRecord;III)V
-HSPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V+]Ljava/util/EnumMap;Ljava/util/EnumMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
-HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Ljava/lang/Enum;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Random;Ljava/util/Random;
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/ProcLocksReader;Lcom/android/internal/os/ProcLocksReader;]Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Ljava/lang/Integer;Ljava/lang/Integer;
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->reportUnfreeze(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/Random;Ljava/util/Random;
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;,Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;]Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;]Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;]Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Enum;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;,Lcom/android/server/am/CachedAppOptimizer$CompactSource;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;]Ljava/util/LinkedList;Lcom/android/server/am/CachedAppOptimizer$4;
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldRssThrottleCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;ILjava/lang/String;[J)Z+]Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldTimeThrottleCompaction(Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Z+]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
+HSPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V+]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/EnumMap;Ljava/util/EnumMap;
+HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z+]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/lang/Enum;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/CachedAppOptimizer;->getUnfreezeReasonCodeFromOomAdjReason(I)I
-HPLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorInternal$3(Ljava/lang/Integer;Ljava/lang/Integer;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HPLcom/android/server/am/CachedAppOptimizer;->postUidFrozenMessage(IZ)V
 HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(Ljava/lang/String;II)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
-HSPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
+HSPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)V+]Landroid/os/Handler;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
 HSPLcom/android/server/am/CachedAppOptimizer;->updateEarliestFreezableTime(Lcom/android/server/am/ProcessRecord;J)J+]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
 HSPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
-HSPLcom/android/server/am/CachedAppOptimizer;->useFreezer()Z
 HSPLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda1;-><init>(Landroid/content/Intent;Ljava/lang/String;III)V
 HSPLcom/android/server/am/ComponentAliasResolver$Resolution;->getAlias()Ljava/lang/Object;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;
-HSPLcom/android/server/am/ComponentAliasResolver$Resolution;->getTarget()Ljava/lang/Object;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;
 HSPLcom/android/server/am/ComponentAliasResolver$Resolution;->isAlias()Z
 HSPLcom/android/server/am/ComponentAliasResolver;->resolveComponentAlias(Ljava/util/function/Supplier;)Lcom/android/server/am/ComponentAliasResolver$Resolution;
 HSPLcom/android/server/am/ComponentAliasResolver;->resolveReceiver(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Ljava/lang/String;JIIZ)Lcom/android/server/am/ComponentAliasResolver$Resolution;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;
 HSPLcom/android/server/am/ComponentAliasResolver;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ComponentAliasResolver$Resolution;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;
 HSPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Landroid/app/IServiceConnection;JILandroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;)V
+HSPLcom/android/server/am/ConnectionRecord;->computeHostOomAdjLSP(Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZII)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
 HSPLcom/android/server/am/ConnectionRecord;->hasFlag(I)Z
 HSPLcom/android/server/am/ConnectionRecord;->notHasFlag(I)Z+]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;
-HSPLcom/android/server/am/ConnectionRecord;->startAssociationIfNeeded()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/internal/app/procstats/ProcessStats$PackageState;Lcom/android/internal/app/procstats/ProcessStats$PackageState;]Lcom/android/internal/app/procstats/AssociationState;Lcom/android/internal/app/procstats/AssociationState;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;
+HSPLcom/android/server/am/ConnectionRecord;->startAssociationIfNeeded()V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/internal/app/procstats/AssociationState;Lcom/android/internal/app/procstats/AssociationState;]Lcom/android/internal/app/procstats/ProcessStats$PackageState;Lcom/android/internal/app/procstats/ProcessStats$PackageState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ConnectionRecord;->stopAssociation()V+]Lcom/android/internal/app/procstats/AssociationState$SourceState;Lcom/android/internal/app/procstats/AssociationState$SourceState;
 HSPLcom/android/server/am/ConnectionRecord;->trackProcState(II)V+]Lcom/android/internal/app/procstats/AssociationState$SourceState;Lcom/android/internal/app/procstats/AssociationState$SourceState;
 HSPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
@@ -897,49 +786,41 @@
 HPLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I
 HPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I
 HSPLcom/android/server/am/ContentProviderConnection;->initializeCount(Z)V
-HSPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/internal/app/procstats/ProcessStats$PackageState;Lcom/android/internal/app/procstats/ProcessStats$PackageState;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/internal/app/procstats/AssociationState;Lcom/android/internal/app/procstats/AssociationState;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;
-HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
+HSPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/internal/app/procstats/AssociationState;Lcom/android/internal/app/procstats/AssociationState;]Lcom/android/internal/app/procstats/ProcessStats$PackageState;Lcom/android/internal/app/procstats/ProcessStats$PackageState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V+]Lcom/android/internal/app/procstats/AssociationState$SourceState;Lcom/android/internal/app/procstats/AssociationState$SourceState;
 HSPLcom/android/server/am/ContentProviderConnection;->trackProcState(II)V+]Lcom/android/internal/app/procstats/AssociationState$SourceState;Lcom/android/internal/app/procstats/AssociationState$SourceState;
 HSPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;->run()V
 HSPLcom/android/server/am/ContentProviderHelper;->canAccessContentProviderFromSdkSandbox(Landroid/content/pm/ProviderInfo;I)Z+]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;
-HSPLcom/android/server/am/ContentProviderHelper;->checkAssociationAndPermissionLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;IIZLjava/lang/String;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;
-HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderPermission(Landroid/content/pm/ProviderInfo;IIIZLjava/lang/String;)Ljava/lang/String;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/content/pm/PathPermission;Landroid/content/pm/PathPermission;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/am/ContentProviderHelper;->checkAssociationAndPermissionLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;IIZLjava/lang/String;J)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderPermission(Landroid/content/pm/ProviderInfo;IIIZLjava/lang/String;)Ljava/lang/String;+]Landroid/content/pm/PathPermission;Landroid/content/pm/PathPermission;]Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ContentProviderHelper;->checkTime(JLjava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;
-HSPLcom/android/server/am/ContentProviderHelper;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;
-HSPLcom/android/server/am/ContentProviderHelper;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HSPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Landroid/content/pm/UserProperties;Landroid/content/pm/UserProperties;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;
-HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/ContentProviderHelper;->hasProviderConnectionLocked(Lcom/android/server/am/ProcessRecord;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;
-HSPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;
-HSPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
+HSPLcom/android/server/am/ContentProviderHelper;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/am/ContentProviderHelper;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserProperties;Landroid/content/pm/UserProperties;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderHelper;->hasProviderConnectionLocked(Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/Map;Ljava/util/HashMap;
 HSPLcom/android/server/am/ContentProviderHelper;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ContentProviderHelper;->isSingletonOrSystemUserOnly(Landroid/content/pm/ProviderInfo;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/ContentProviderHelper;->lambda$checkContentProviderAssociation$4(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ContentProviderHelper;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Long;Ljava/lang/Long;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ContentProviderHelper;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
+HSPLcom/android/server/am/ContentProviderHelper;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLcom/android/server/am/ContentProviderHelper;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ContentProviderHelper;->refContentProvider(Landroid/os/IBinder;II)Z+]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;
 HSPLcom/android/server/am/ContentProviderHelper;->removeContentProvider(Landroid/os/IBinder;Z)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z+]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;
-HSPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V+]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/lang/Object;Lcom/android/server/am/ContentProviderRecord;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z+]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
 HSPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;Z)Landroid/app/ContentProviderHolder;
-HSPLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;
-HSPLcom/android/server/am/ContentProviderRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;
-HSPLcom/android/server/am/DropboxRateLimiter;->shouldRateLimit(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;+]Lcom/android/server/am/DropboxRateLimiter$Clock;Lcom/android/server/am/DropboxRateLimiter$DefaultClock;]Lcom/android/server/am/DropboxRateLimiter$ErrorRecord;Lcom/android/server/am/DropboxRateLimiter$ErrorRecord;]Lcom/android/server/am/DropboxRateLimiter;Lcom/android/server/am/DropboxRateLimiter;
-HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJJIIJ)V
-HSPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Long;Ljava/lang/Long;
 HSPLcom/android/server/am/FgsTempAllowList;->get(I)Landroid/util/Pair;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
-HSPLcom/android/server/am/Flags;->newFgsRestrictionLogic()Z+]Lcom/android/server/am/FeatureFlags;Lcom/android/server/am/FeatureFlagsImpl;
+HPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
 HSPLcom/android/server/am/Flags;->serviceBindingOomAdjPolicy()Z+]Lcom/android/server/am/FeatureFlags;Lcom/android/server/am/FeatureFlagsImpl;
-HSPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventBegin(IIILjava/lang/String;)J+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
-HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writePkg(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pkg;)V+]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Lcom/android/server/am/HealthStatsBatteryStatsWriter;Lcom/android/server/am/HealthStatsBatteryStatsWriter;]Landroid/os/health/HealthStatsWriter;Landroid/os/health/HealthStatsWriter;]Landroid/os/BatteryStats$Uid$Pkg;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;]Landroid/os/BatteryStats$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
-HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V+]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Lcom/android/server/am/HealthStatsBatteryStatsWriter;Lcom/android/server/am/HealthStatsBatteryStatsWriter;]Landroid/os/health/HealthStatsWriter;Landroid/os/health/HealthStatsWriter;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V+]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/health/HealthStatsWriter;Landroid/os/health/HealthStatsWriter;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/HealthStatsBatteryStatsWriter;Lcom/android/server/am/HealthStatsBatteryStatsWriter;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
 HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;
 HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
@@ -947,68 +828,88 @@
 HSPLcom/android/server/am/LmkdConnection;->isConnected()Z
 HSPLcom/android/server/am/LmkdConnection;->write(Ljava/nio/ByteBuffer;)Z+]Ljava/io/OutputStream;Landroid/net/LocalSocketImpl$SocketOutputStream;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->initialize(Lcom/android/server/am/ProcessRecord;IZZIIIII)V
-HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJI)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/am/ActivityManagerService$MainHandler;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessReceiverRecord;Lcom/android/server/am/ProcessReceiverRecord;
-HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V
+HSPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJI)Z+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
+HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/OomAdjuster;->checkAndEnqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)Z
-HSPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;
-HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
+HSPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
+HSPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderConnection;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLcom/android/server/am/OomAdjuster;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/OomAdjuster;->enqueuePendingTopAppIfNecessaryLSP()I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/OomAdjuster;->evaluateConnectionPrelude(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjuster;->evaluateProviderConnectionAdd(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjuster;->evaluateServiceConnectionAdd(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/OomAdjuster;->getBfslCapabilityFromClient(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/OomAdjuster;->getDefaultCapability(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V+]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/OomAdjuster;->isScreenOnOrAnimatingLocked(Lcom/android/server/am/ProcessStateRecord;)Z+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
+HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
 HSPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessStateRecord;J)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/OomAdjuster;->oomAdjReasonToString(I)Ljava/lang/String;
-HSPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/OomAdjuster;->postUpdateOomAdjInnerLSP(ILcom/android/server/am/ActiveUids;JJJZ)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;III)I+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/OomAdjuster;->setIntermediateProcStateLSP(Lcom/android/server/am/ProcessRecord;II)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->setIntermediateSchedGroupLSP(Lcom/android/server/am/ProcessStateRecord;I)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/OomAdjuster;->setIntermediateSchedGroupLSP(Lcom/android/server/am/ProcessStateRecord;I)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLcom/android/server/am/OomAdjuster;->setUidTempAllowlistStateLSP(IZ)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
 HSPLcom/android/server/am/OomAdjuster;->shouldKillExcessiveProcesses(J)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
-HSPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
+HSPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjuster;->updateAndTrimProcessLSP(JJJLcom/android/server/am/ActiveUids;IZ)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZ)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecIfNecessaryLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
-HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
+HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecIfNecessaryLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
+HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
 HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(I)V
 HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V+]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterDebugLogger;->shouldLog(I)Z
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;->update(Lcom/android/server/am/ProcessRecord;JIILcom/android/server/am/ActiveUids;Z)V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;->unlink()V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->resetLastNodes()V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->adjToSlot(I)I
+HSPLcom/android/server/am/OomAdjusterModernImpl;->collectAndMarkReachableProcessesLSP(Ljava/util/ArrayList;)V+]Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->computeConnectionsLSP()V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->forEachClientConnectionLSP(Lcom/android/server/am/ProcessRecord;Ljava/util/function/BiConsumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/BiConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->forEachConnectionLSP(Lcom/android/server/am/ProcessRecord;Ljava/util/function/BiConsumer;)V+]Ljava/util/function/BiConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;,Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->fullUpdateLSP(I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->partialUpdateLSP(ILandroid/util/ArraySet;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjLSP(I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjusterModernImpl;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->updateAdjSlot(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->updateAdjSlotIfNecessary(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->updateProcStateSlot(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->updateProcStateSlotIfNecessary(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
 HSPLcom/android/server/am/PackageList;->containsKey(Ljava/lang/Object;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/BiConsumer;)V+]Ljava/util/function/BiConsumer;Lcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;
+HSPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/BiConsumer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/BiConsumer;Lcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;
 HSPLcom/android/server/am/PackageList;->getPackageList()[Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/PackageList;->put(Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;Lcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/Function;Lcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;
 HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;
-HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;
-HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;,Lcom/android/server/wm/ActivityRecord$Token;
+HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;
+HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Lcom/android/server/wm/ActivityRecord$Token;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V
-HSPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;
-HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I+]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;]Landroid/content/IIntentReceiver;Landroid/app/PendingIntent$FinishedDispatcher;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/PendingIntentRecord;Lcom/android/server/am/PendingIntentRecord;
-HPLcom/android/server/am/PendingIntentRecord;->setAllowBgActivityStarts(Landroid/os/IBinder;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/am/PendingIntentRecord;->setAllowlistDurationLocked(Landroid/os/IBinder;JIILjava/lang/String;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/IIntentReceiver;Landroid/app/PendingIntent$FinishedDispatcher;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/PendingIntentRecord;Lcom/android/server/am/PendingIntentRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/PendingStartActivityUids;->delete(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/am/PendingStartActivityUids;->enqueuePendingTopAppIfNecessaryLocked(Lcom/android/server/am/ActivityManagerService;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/PendingStartActivityUids;->isPendingTopUid(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Handler;Lcom/android/server/am/ProcessList$KillHandler;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/PhantomProcessRecord;Lcom/android/server/am/PhantomProcessRecord;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;
+HPLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;+]Landroid/os/Handler;Lcom/android/server/am/ProcessList$KillHandler;]Landroid/os/Looper;Landroid/os/Looper;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/PhantomProcessRecord;Lcom/android/server/am/PhantomProcessRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/am/PhantomProcessList;->isAppProcess(I)Z+]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$PidMap;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V+]Ljava/io/InputStream;Ljava/io/FileInputStream;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList$Injector;Lcom/android/server/am/PhantomProcessList$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;
-HSPLcom/android/server/am/PhantomProcessList;->onAppDied(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList$Injector;Lcom/android/server/am/PhantomProcessList$Injector;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/io/InputStream;Ljava/io/FileInputStream;
 HPLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;]Lcom/android/server/am/PhantomProcessList;Lcom/android/server/am/PhantomProcessList;]Lcom/android/server/am/PhantomProcessRecord;Lcom/android/server/am/PhantomProcessRecord;
 HSPLcom/android/server/am/PlatformCompatCache$CacheItem;->fetchLocked(Landroid/content/pm/ApplicationInfo;I)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Lcom/android/server/am/PlatformCompatCache$CacheItem;Lcom/android/server/am/PlatformCompatCache$CacheItem;
-HSPLcom/android/server/am/PlatformCompatCache;->invalidate(Landroid/content/pm/ApplicationInfo;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/PlatformCompatCache$CacheItem;Lcom/android/server/am/PlatformCompatCache$CacheItem;
-HSPLcom/android/server/am/PlatformCompatCache;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;Z)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/PlatformCompatCache$CacheItem;Lcom/android/server/am/PlatformCompatCache$CacheItem;
+HSPLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/am/PlatformCompatCache$CacheItem;Lcom/android/server/am/PlatformCompatCache$CacheItem;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(Z)V+]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
 HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZZ)Z
 HSPLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
@@ -1017,64 +918,56 @@
 HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->run()V
 HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
 HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->run()V
-HSPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
 HSPLcom/android/server/am/ProcessList$MyProcessMap;->remove(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
 HSPLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
-HSPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessList;->checkSlow(JLjava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ProcessList;->computeGidsForProcess(II[IZ)[I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessList;->computeNextPssTime(ILcom/android/server/am/ProcessList$ProcStateMemTracker;ZZJJ)J
-HSPLcom/android/server/am/ProcessList;->dispatchProcessesChanged()V+]Landroid/app/IProcessObserver;Lcom/android/server/app/GameServiceProviderInstanceImpl$5;,Lcom/android/server/devicestate/DeviceStateManagerService$1;,Lcom/android/server/am/AppFGSTracker$1;,Lcom/android/server/media/projection/MediaProjectionManagerService$1;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/am/ProcessList;->enqueueProcessChangeItemLocked(II)Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->fillInProcMemInfoLOSP(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(ZLjava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->fillInProcMemInfoLOSP(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(ZLjava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
 HSPLcom/android/server/am/ProcessList;->getBlockStateForUid(Lcom/android/server/am/UidRecord;)I
-HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;
+HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
-HSPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
-HSPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
-HSPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Map;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;
-HSPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;+]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;
+HSPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessList;->getUidProcStateLOSP(I)I+]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
 HSPLcom/android/server/am/ProcessList;->getUidProcessCapabilityLOSP(I)I+]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
 HSPLcom/android/server/am/ProcessList;->getUidRecordLOSP(I)Lcom/android/server/am/UidRecord;+]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;
-HSPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z+]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessList;->isProcStartValidLocked(Lcom/android/server/am/ProcessRecord;J)Ljava/lang/String;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/ProcessRecord;J)J+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessList;->killPackageProcessesLSP(Ljava/lang/String;IIIZZZZZZIILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList$SubList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/Iterator;Ljava/util/ArrayList$SubList$1;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
+HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessList;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
-HSPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->scheduleDispatchProcessDiedLocked(II)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda0;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/am/ProcessList;->setOomAdj(III)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/AppZygote;Landroid/os/AppZygote;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/ChildZygoteProcess;Landroid/os/ChildZygoteProcess;]Ljava/util/Set;Landroid/util/ArraySet;]Lcom/android/server/am/HostingRecord;Lcom/android/server/am/HostingRecord;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Landroid/os/storage/StorageManagerInternal;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZIZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/AppErrors;Lcom/android/server/am/AppErrors;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->updateClientActivitiesOrderingLSP(Lcom/android/server/am/ProcessRecord;III)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
+HSPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;]Lcom/android/server/am/ProcessList$IsolatedUidRange;Lcom/android/server/am/ProcessList$IsolatedUidRange;]Lcom/android/server/am/ProcessList$MyProcessMap;Lcom/android/server/am/ProcessList$MyProcessMap;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda0;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;
+HSPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->setOomAdj(III)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/AppZygote;Landroid/os/AppZygote;]Landroid/os/ChildZygoteProcess;Landroid/os/ChildZygoteProcess;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/HostingRecord;Lcom/android/server/am/HostingRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/storage/StorageManagerInternal;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZIZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/AppErrors;Lcom/android/server/am/AppErrors;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->updateClientActivitiesOrderingLSP(Lcom/android/server/am/ProcessRecord;III)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/am/ProcessList;->updateLruProcessInternalLSP(Lcom/android/server/am/ProcessRecord;JIILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->updateLruProcessLSP(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;ZZ)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;
-HSPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ProcessList;->updateLruProcessLSP(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;ZZ)V+]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessProviderRecord;Lcom/android/server/am/ProcessProviderRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
 HSPLcom/android/server/am/ProcessList;->updateSeInfo(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;+]Lcom/android/server/am/ProcessList$ProcessListSettingsListener;Lcom/android/server/am/ProcessList$ProcessListSettingsListener;
 HSPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z+]Lcom/android/server/am/LmkdConnection;Lcom/android/server/am/LmkdConnection;
 HSPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLcom/android/server/am/ProcessProfileRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessProfileRecord;->addHostingComponentType(I)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
-HPLcom/android/server/am/ProcessProfileRecord;->addPss(JJJZIJ)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessProfileRecord;->clearHostingComponentType(I)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLcom/android/server/am/ProcessProfileRecord;->computeNextPssTime(IZZJ)J
 HSPLcom/android/server/am/ProcessProfileRecord;->lambda$onProcessActive$0(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
 HSPLcom/android/server/am/ProcessProfileRecord;->onProcessActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessFrozen()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessProfileRecord;->onProcessFrozen()V+]Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessProfileRecord;->onProcessInactive(Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessUnfrozen()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessProfileRecord;->setProcessTrackerState(II)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;
+HSPLcom/android/server/am/ProcessProfileRecord;->setProcessTrackerState(II)V+]Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessProfileRecord;->updateProcState(Lcom/android/server/am/ProcessStateRecord;)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/ProcessProviderRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessProviderRecord;->addProviderConnection(Lcom/android/server/am/ContentProviderConnection;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -1082,24 +975,22 @@
 HSPLcom/android/server/am/ProcessProviderRecord;->getProviderConnectionAt(I)Lcom/android/server/am/ContentProviderConnection;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessProviderRecord;->numberOfProviderConnections()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessProviderRecord;->numberOfProviders()I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/ProcessProviderRecord;->onCleanupApplicationRecordLocked(Z)Z+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ProcessProviderRecord;->onCleanupApplicationRecordLocked(Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ContentProviderRecord;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessList;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessReceiverRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessReceiverRecord;->addReceiver(Lcom/android/server/am/ReceiverList;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessReceiverRecord;->numberOfReceivers()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/am/ProcessReceiverRecord;->onCleanupApplicationRecordLocked()V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z+]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessState;
+HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z+]Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessState;]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;
 HSPLcom/android/server/am/ProcessRecord;->getCpuDelayTime()J+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
 HSPLcom/android/server/am/ProcessRecord;->getHostingRecord()Lcom/android/server/am/HostingRecord;
 HSPLcom/android/server/am/ProcessRecord;->getLastActivityTime()J
 HSPLcom/android/server/am/ProcessRecord;->getLruSeq()I
-HSPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
+HSPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;+]Lcom/android/server/am/PackageList;Lcom/android/server/am/PackageList;
 HSPLcom/android/server/am/ProcessRecord;->getPid()I
 HSPLcom/android/server/am/ProcessRecord;->getPkgDeps()Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessRecord;->getPkgList()Lcom/android/server/am/PackageList;
 HSPLcom/android/server/am/ProcessRecord;->getSetAdj()I
 HSPLcom/android/server/am/ProcessRecord;->getSetProcState()I
-HSPLcom/android/server/am/ProcessRecord;->getStartTime()J
 HSPLcom/android/server/am/ProcessRecord;->getStartUid()I
 HSPLcom/android/server/am/ProcessRecord;->getThread()Landroid/app/IApplicationThread;
 HSPLcom/android/server/am/ProcessRecord;->getUidRecord()Lcom/android/server/am/UidRecord;
@@ -1114,30 +1005,24 @@
 HSPLcom/android/server/am/ProcessRecord;->isPersistent()Z
 HSPLcom/android/server/am/ProcessRecord;->isRemoved()Z
 HSPLcom/android/server/am/ProcessRecord;->isThreadReady()Z
-HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;
-HSPLcom/android/server/am/ProcessRecord;->killProcessGroupIfNecessaryLocked(Z)V
+HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessRecord;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
 HSPLcom/android/server/am/ProcessRecord;->setBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/am/ProcessRecord;->setLastActivityTime(J)V
 HSPLcom/android/server/am/ProcessRecord;->setLruSeq(I)V
-HSPLcom/android/server/am/ProcessRecord;->setPendingUiClean(Z)V+]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/ProcessRecord;->setPid(I)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessRecord;->setStartParams(ILcom/android/server/am/HostingRecord;Ljava/lang/String;JJ)V
-HSPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
+HSPLcom/android/server/am/ProcessRecord;->setPid(I)V+]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;
-HSPLcom/android/server/am/ProcessRecord;->updateProcessRecordNodes(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessServiceRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
-HSPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
 HSPLcom/android/server/am/ProcessServiceRecord;->addSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessServiceRecord;->areForegroundServiceTypesSame(IZ)Z
-HSPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V
 HSPLcom/android/server/am/ProcessServiceRecord;->getNumForegroundServices()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessServiceRecord;->getRunningServiceAt(I)Lcom/android/server/am/ServiceRecord;+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessServiceRecord;->hasNonShortForegroundServices()Z
@@ -1147,20 +1032,20 @@
 HSPLcom/android/server/am/ProcessServiceRecord;->numberOfExecutingServices()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessServiceRecord;->numberOfRunningServices()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/am/ProcessServiceRecord;->removeSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
-HSPLcom/android/server/am/ProcessServiceRecord;->startService(Lcom/android/server/am/ServiceRecord;)Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/am/ProcessServiceRecord;->stopService(Lcom/android/server/am/ServiceRecord;)Z+]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
-HSPLcom/android/server/am/ProcessServiceRecord;->updateHostingComonentTypeForBindingsLocked()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
+HSPLcom/android/server/am/ProcessServiceRecord;->startService(Lcom/android/server/am/ServiceRecord;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessServiceRecord;->stopService(Lcom/android/server/am/ServiceRecord;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;
+HSPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessServiceRecord;->updateHostingComonentTypeForBindingsLocked()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
 HSPLcom/android/server/am/ProcessStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessStateRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZZIIIII)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
-HSPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedCompatChange(I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;,Lcom/android/server/am/OomAdjuster;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasActivities()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasRecentTasks()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasVisibleActivities()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessStateRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZZIIIII)V+]Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedCompatChange(I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjuster;,Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasActivities()Z+]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasRecentTasks()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedHasVisibleActivities()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsReceivingBroadcast([I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
 HSPLcom/android/server/am/ProcessStateRecord;->getCurProcState()I
 HSPLcom/android/server/am/ProcessStateRecord;->getSetAdj()I
@@ -1168,70 +1053,70 @@
 HSPLcom/android/server/am/ProcessStateRecord;->isCached()Z
 HSPLcom/android/server/am/ProcessStateRecord;->onCleanupApplicationRecordLSP()V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/ProcessStateRecord;->resetCachedInfo()V
-HSPLcom/android/server/am/ProcessStateRecord;->setCurAdj(I)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->setCurProcState(I)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(I)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(IZ)Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessStateRecord;->setCurAdj(I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->setCurProcState(I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(IZ)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(I)V+]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(IZ)Z
-HSPLcom/android/server/am/ProcessStateRecord;->setCurrentSchedulingGroup(I)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessStateRecord;->setCurrentSchedulingGroup(I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessStateRecord;->setHasStartedServices(Z)V+]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
 HSPLcom/android/server/am/ProcessStateRecord;->setSetProcState(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setWhenUnimportant(J)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessStateRecord;->setWhenUnimportant(J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessStateRecord;->updateLastInvisibleTime(Z)V
 HSPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
 HSPLcom/android/server/am/ProcessStatsService;->getServiceState(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
-HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;
+HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;
 HSPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
 HSPLcom/android/server/am/ProcessStatsService;->updateProcessStateHolderLocked(Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;Ljava/lang/String;IJLjava/lang/String;)V
-HSPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;+]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;
-HSPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;+]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;
+HSPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;+]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;+]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;
+HSPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V+]Lcom/android/server/am/ProviderMap;Lcom/android/server/am/ProviderMap;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
 HSPLcom/android/server/am/ReceiverList;->containsFilter(Landroid/content/IntentFilter;)Z+]Ljava/util/ArrayList;Lcom/android/server/am/ReceiverList;
 HSPLcom/android/server/am/ReceiverList;->hashCode()I
 HSPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
 HSPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/am/SameProcessApplicationThread;->lambda$scheduleRegisteredReceiver$1(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;
 HSPLcom/android/server/am/SameProcessApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/am/ServiceRecord$1;->run()V+]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;,Lcom/android/server/notification/NotificationManagerService$12;
+HSPLcom/android/server/am/ServiceRecord$1;->run()V+]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$12;,Lcom/android/server/notification/NotificationManagerService$13;
 HSPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;ILjava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;Ljava/lang/String;ILjava/lang/String;Z)V+]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;
+HSPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;Ljava/lang/String;ILjava/lang/String;Z)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
+HSPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessProfileRecord;Lcom/android/server/am/ProcessProfileRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V+]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZZ)Lcom/android/server/am/ServiceRecord$StartItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->getBackgroundStartPrivilegesWithExclusiveToken()Landroid/app/BackgroundStartPrivileges;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_forStart()I+]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
 HSPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_legacy()I
-HSPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;+]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;
-HSPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;
+HSPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;+]Lcom/android/internal/app/procstats/ServiceState;Lcom/android/internal/app/procstats/ServiceState;]Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService;
+HSPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->isShortFgs()Z
-HSPLcom/android/server/am/ServiceRecord;->postNotification(Z)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;
+HSPLcom/android/server/am/ServiceRecord;->postNotification(Z)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ServiceRecord;->removeConnection(Landroid/os/IBinder;)V
 HSPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;
+HSPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ConnectionRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ProcessServiceRecord;]Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ServiceRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/ServiceRecord;->updateFgsHasNotificationPermission()V
-HSPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ServiceRecord;->updateOomAdjSeq()V
 HSPLcom/android/server/am/ServiceRecord;->updateProcessStateOnRequest()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateRecord;Lcom/android/server/am/ProcessStateRecord;
 HSPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forStart()Z
+HSPLcom/android/server/am/ServiceRecord;->wasOomAdjUpdated()Z
 HSPLcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;->run()V+]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;
 HSPLcom/android/server/am/UidObserverController$ChangeRecord;->copyTo(Lcom/android/server/am/UidObserverController$ChangeRecord;)V
-HSPLcom/android/server/am/UidObserverController;->dispatchUidsChanged()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/UidObserverController$ChangeRecord;Lcom/android/server/am/UidObserverController$ChangeRecord;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;
+HSPLcom/android/server/am/UidObserverController;->dispatchUidsChanged()V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Lcom/android/server/am/ActiveUids;Lcom/android/server/am/ActiveUids;]Lcom/android/server/am/UidObserverController$ChangeRecord;Lcom/android/server/am/UidObserverController$ChangeRecord;]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;]Lcom/android/server/am/UidRecord;Lcom/android/server/am/UidRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/am/UidObserverController;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/UidObserverController$UidObserverRegistration;I)V+]Landroid/app/IUidObserver;megamorphic_types]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/am/UidObserverController$UidObserverRegistration;Lcom/android/server/am/UidObserverController$UidObserverRegistration;
-HSPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/server/am/UidObserverController$ChangeRecord;IIIIJIZ)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$UiHandler;
-HSPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/server/am/UidObserverController$ChangeRecord;IIIIJIZ)I+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$UiHandler;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/UidRecord;-><init>(ILcom/android/server/am/ActivityManagerService;)V
 HPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessCachedOptimizerRecord;Lcom/android/server/am/ProcessCachedOptimizerRecord;
-HSPLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/function/Consumer;Lcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda2;,Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;,Lcom/android/server/am/ActiveUids$$ExternalSyntheticLambda0;,Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;
-HSPLcom/android/server/am/UidRecord;->getMinProcAdj()I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/am/UidRecord;->getMinProcAdj()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
 HSPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/am/UserController;->checkGetCurrentUserPermissions()V+]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;
-HSPLcom/android/server/am/UserController;->exists(I)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;
+HSPLcom/android/server/am/UserController;->exists(I)Z+]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/am/UserController;->getCurrentUserId()I
 HSPLcom/android/server/am/UserController;->getCurrentUserIdChecked()I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
 HSPLcom/android/server/am/UserController;->getLastUserUnlockingUptime()J
@@ -1240,108 +1125,95 @@
 HSPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/am/UserController;->hasStartedUserState(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HSPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
 HSPLcom/android/server/am/UserController;->isUserRunning(II)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
 HSPLcom/android/server/am/UserController;->unsafeConvertIncomingUser(I)I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
-HSPLcom/android/server/app/GameManagerService$LocalService;->getResolutionScalingFactor(Ljava/lang/String;I)F
-HSPLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedOffTop(I)V+]Ljava/util/Set;Ljava/util/HashSet;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;
+HSPLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedOffTop(I)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLcom/android/server/app/GameManagerService;->getConfig(Ljava/lang/String;I)Lcom/android/server/app/GameManagerService$GamePackageConfiguration;+]Lcom/android/server/app/GameManagerSettings;Lcom/android/server/app/GameManagerSettings;
 HSPLcom/android/server/app/GameManagerService;->getGameModeFromSettingsUnchecked(Ljava/lang/String;I)I+]Lcom/android/server/app/GameManagerSettings;Lcom/android/server/app/GameManagerSettings;
-HPLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
-HSPLcom/android/server/apphibernation/AppHibernationService$LocalService;->isHibernatingForUser(Ljava/lang/String;I)Z+]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;
-HSPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExist(ILjava/lang/String;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/UserManager;Landroid/os/UserManager;
+HSPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExist(ILjava/lang/String;Z)Z+]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/apphibernation/AppHibernationService;->handleIncomingUser(ILjava/lang/String;)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Map;Landroid/util/ArrayMap;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;
-HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Map;Landroid/util/ArrayMap;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Landroid/util/ArrayMap;
+HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Map;Landroid/util/ArrayMap;
 HPLcom/android/server/apphibernation/AppHibernationService;->lambda$new$6(ILandroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;
-HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V+]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Map;Landroid/util/ArrayMap;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;
-HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V+]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Ljava/util/Map;Landroid/util/ArrayMap;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/SystemService;Lcom/android/server/apphibernation/AppHibernationService;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
 HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
-HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
-HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(Ljava/lang/String;II)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;,Lcom/android/server/appop/AppOpsCheckingServiceImpl;
-HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(ILjava/lang/String;I)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;,Lcom/android/server/appop/AppOpsCheckingServiceImpl;
-HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;II)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Z)Z+]Lcom/android/server/appop/AppOpsRestrictionsImpl;Lcom/android/server/appop/AppOpsRestrictionsImpl;]Landroid/os/PackageTagsList;Landroid/os/PackageTagsList;
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;->onUidStateChanged(IIZ)V
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(Ljava/lang/String;II)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceImpl;,Lcom/android/server/permission/access/appop/AppOpService;
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(ILjava/lang/String;I)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceImpl;,Lcom/android/server/permission/access/appop/AppOpService;
+HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;II)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Z)Z+]Landroid/os/PackageTagsList;Landroid/os/PackageTagsList;]Lcom/android/server/appop/AppOpsRestrictionsImpl;Lcom/android/server/appop/AppOpsRestrictionsImpl;
 HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;-><init>(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda9;->execute(Ljava/lang/Runnable;)V
 HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;
-HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;
-HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZ)I+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->hasRestriction(ILjava/lang/String;Ljava/lang/String;IZ)Z+]Lcom/android/server/appop/AppOpsRestrictions;Lcom/android/server/appop/AppOpsRestrictionsImpl;
-HSPLcom/android/server/appop/AppOpsService$Op;->-$$Nest$mgetOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;+]Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;
-HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;II)V
-HSPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked(Ljava/lang/String;)Landroid/app/AppOpsManager$OpEntry;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
+HSPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked(Ljava/lang/String;)Landroid/app/AppOpsManager$OpEntry;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
 HSPLcom/android/server/appop/AppOpsService$Op;->getOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/appop/AppOpsService$Op;->isRunning()Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
-HSPLcom/android/server/appop/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/appop/AppOpsService$UidState;)V
-HSPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService$UidState;->getState()I+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HSPLcom/android/server/appop/AppOpsService$UidState;->getState()I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HSPLcom/android/server/appop/AppOpsService;->checkOperation(IILjava/lang/String;)I+]Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
 HSPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/String;Ljava/lang/String;IZ)I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->checkOperationRaw(IILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
 HSPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IZ)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AppOpsService$UidState;Lcom/android/server/appop/AppOpsService$UidState;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/RemoteCallbackList;Lcom/android/server/appop/AppOpsService$8;,Lcom/android/server/appop/AppOpsService$9;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)V+]Landroid/os/RemoteCallbackList;Lcom/android/server/appop/AppOpsService$8;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[ILjava/lang/String;)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Lcom/android/server/appop/AppOpsService$Ops;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/appop/AppOpsService;->filterAppAccessUnlocked(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
 HSPLcom/android/server/appop/AppOpsService;->finishOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/appop/AppOpsService;->getAsyncNotedOpsKey(Ljava/lang/String;I)Landroid/util/Pair;
-HSPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Op;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op;+]Landroid/util/SparseArray;Lcom/android/server/appop/AppOpsService$Ops;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->getOpsLocked(ILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Ops;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-HSPLcom/android/server/appop/AppOpsService;->getPackagesForOpsForDevice([ILjava/lang/String;)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;
+HSPLcom/android/server/appop/AppOpsService;->getPackagesForOpsForDevice([ILjava/lang/String;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;+]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;
 HSPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/appop/AppOpsService;->getUidStateTracker()Lcom/android/server/appop/AppOpsUidStateTracker;
-HSPLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/server/appop/AppOpsService;->isIncomingPackageValid(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/appop/AppOpsService;->isOpAllowedForUid(I)Z
 HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedDueToSuspend(ILjava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService$ClientUserRestrictionState;Lcom/android/server/appop/AppOpsService$ClientUserRestrictionState;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;Lcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;
+HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;Lcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;]Lcom/android/server/appop/AppOpsService$ClientUserRestrictionState;Lcom/android/server/appop/AppOpsService$ClientUserRestrictionState;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->isSpecialPackage(ILjava/lang/String;)Z
-HSPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z
+HSPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;
 HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
 HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HPLcom/android/server/appop/AppOpsService;->noteProxyOperationImpl(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->notifyOpChangedForAllPkgsInUid(IIZLjava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;]Lcom/android/internal/app/IAppOpsCallback;Lcom/android/server/policy/PermissionPolicyService$2;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V+]Lcom/android/internal/app/IAppOpsNotedCallback;Landroid/app/AppOpsManager$5;,Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Landroid/util/SparseArray;Lcom/android/server/appop/AppOpsService$Ops;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
+HSPLcom/android/server/appop/AppOpsService;->notifyOpChangedForAllPkgsInUid(IIZLjava/lang/String;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IAppOpsCallback;Lcom/android/server/policy/PermissionPolicyService$2;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
+HPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/app/IAppOpsNotedCallback;Landroid/app/AppOpsManager$5;,Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;,Lcom/android/server/appop/AppOpsService$Ops;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
 HSPLcom/android/server/appop/AppOpsService;->readAttributionOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
 HSPLcom/android/server/appop/AppOpsService;->readOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
 HSPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAsyncLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->resolveUid(Ljava/lang/String;)I+]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V
-HSPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
 HSPLcom/android/server/appop/AppOpsService;->startOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
 HSPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IAppOpsCallback;megamorphic_types
-HSPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V+]Ljava/util/concurrent/ThreadLocalRandom;Ljava/util/concurrent/ThreadLocalRandom;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/concurrent/ThreadLocalRandom;Ljava/util/concurrent/ThreadLocalRandom;
+HSPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;]Landroid/app/AppOpsManager$PackageOps;Landroid/app/AppOpsManager$PackageOps;]Landroid/app/AppOpsManager$OpEventProxyInfo;Landroid/app/AppOpsManager$OpEventProxyInfo;]Landroid/app/AppOpsManager$OpEntry;Landroid/app/AppOpsManager$OpEntry;]Ljava/lang/Long;Ljava/lang/Long;]Landroid/app/AppOpsManager$AttributedOpEntry;Landroid/app/AppOpsManager$AttributedOpEntry;
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V+]Landroid/app/AppOpsManager$AttributedOpEntry;Landroid/app/AppOpsManager$AttributedOpEntry;]Landroid/app/AppOpsManager$OpEntry;Landroid/app/AppOpsManager$OpEntry;]Landroid/app/AppOpsManager$OpEventProxyInfo;Landroid/app/AppOpsManager$OpEventProxyInfo;]Landroid/app/AppOpsManager$PackageOps;Landroid/app/AppOpsManager$PackageOps;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;->run()V
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->execute(Ljava/lang/Runnable;)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V
@@ -1354,476 +1226,343 @@
 HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundModeAsync(JIIIII)V
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcState(III)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcStateAsync(JIII)V
-HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/concurrent/Executor;Landroid/os/HandlerExecutor;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;
+HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Ljava/util/concurrent/Executor;Landroid/os/HandlerExecutor;
+HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalModeInternal(IIII)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidState(I)I+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidStateLocked(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
 HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeededLocked(I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
-HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
-HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;-><init>(JJLandroid/os/IBinder;ILjava/lang/String;Ljava/lang/Runnable;ILandroid/app/AppOpsManager$OpEventProxyInfo;III)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/os/Binder;
-HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;IILandroid/app/AppOpsManager$OpEventProxyInfo;IILandroid/util/Pools$Pool;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/os/Binder;]Landroid/util/Pools$Pool;Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
-HSPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
-HSPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
-HSPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V+]Landroid/util/Pools$SimplePool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;]Landroid/app/AppOpsManager$NoteOpEvent;Landroid/app/AppOpsManager$NoteOpEvent;
+HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;IILandroid/app/AppOpsManager$OpEventProxyInfo;IILandroid/util/Pools$Pool;)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;]Landroid/util/Pools$Pool;Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
+HPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
+HPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V+]Landroid/app/AppOpsManager$NoteOpEvent;Landroid/app/AppOpsManager$NoteOpEvent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/Pools$SimplePool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;]Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
 HSPLcom/android/server/appop/AttributedOp;->isRunning()Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V+]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;
+HSPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/appop/AttributedOp;->rejected(II)V+]Lcom/android/server/appop/AttributedOp;Lcom/android/server/appop/AttributedOp;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
-HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/app/AppOpsManager$NoteOpEvent;Landroid/app/AppOpsManager$NoteOpEvent;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->addDiscreteAccess(Ljava/lang/String;IIJJII)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->getOrCreateDiscreteOpEventsList(Ljava/lang/String;)Ljava/util/List;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->getOrCreateDiscreteUidOps(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->getOrCreateDiscreteOp(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->getOrCreateDiscretePackageOps(Ljava/lang/String;)Lcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/appop/DiscreteRegistry;->deleteOldDiscreteHistoryFilesLocked()V+]Ljava/io/File;Ljava/io/File;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/time/Instant;Ljava/time/Instant;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V+]Landroid/app/AppOpsManager$NoteOpEvent;Landroid/app/AppOpsManager$NoteOpEvent;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->addDiscreteAccess(Ljava/lang/String;IIJJII)V+]Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/appop/DiscreteRegistry;->isDiscreteOp(II)Z
 HSPLcom/android/server/appop/DiscreteRegistry;->recordDiscreteAccess(ILjava/lang/String;ILjava/lang/String;IIJJII)V+]Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Ljava/util/List;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;ILcom/android/modules/utils/TypedXmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$AttributedHistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Landroid/app/AppOpsManager$AttributedHistoricalOps;Landroid/app/AppOpsManager$AttributedHistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/app/AppOpsManager$HistoricalOp;Landroid/app/AppOpsManager$HistoricalOp;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalPackageOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/AppOpsManager$HistoricalPackageOps;Landroid/app/AppOpsManager$HistoricalPackageOps;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/AppOpsManager$HistoricalUidOps;Landroid/app/AppOpsManager$HistoricalUidOps;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/AppOpsManager$HistoricalOp;Landroid/app/AppOpsManager$HistoricalOp;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;ILcom/android/modules/utils/TypedXmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$AttributedHistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$AttributedHistoricalOps;Landroid/app/AppOpsManager$AttributedHistoricalOps;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$HistoricalOp;Landroid/app/AppOpsManager$HistoricalOp;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalPackageOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$HistoricalPackageOps;Landroid/app/AppOpsManager$HistoricalPackageOps;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$HistoricalUidOps;Landroid/app/AppOpsManager$HistoricalUidOps;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/HistoricalRegistry$Persistence;Lcom/android/server/appop/HistoricalRegistry$Persistence;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/AppOpsManager$HistoricalOp;Landroid/app/AppOpsManager$HistoricalOp;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
 HSPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
 HSPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;IIJJII)V+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/DiscreteRegistry;Lcom/android/server/appop/DiscreteRegistry;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
 HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;IIJII)V+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/DiscreteRegistry;Lcom/android/server/appop/DiscreteRegistry;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
 HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;Ljava/lang/String;II)V+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Lcom/android/server/appop/HistoricalRegistry;Lcom/android/server/appop/HistoricalRegistry;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/lang/Object;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;
 HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I+]Landroid/os/UserManager;Landroid/os/UserManager;
 HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I
-HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;]Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/appwidget/AppWidgetProviderInfo;Landroid/appwidget/AppWidgetProviderInfo;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseAppWidgetProviderInfo(Landroid/content/Context;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/appwidget/AppWidgetProviderInfo;+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToStreamLocked(Ljava/io/OutputStream;I)Z+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/appwidget/AppWidgetXmlUtil;->writeAppWidgetProviderInfoLocked(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/appwidget/AppWidgetProviderInfo;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/audio/AudioService$VolumeGroupState;->getSettingNameForDevice(I)Ljava/lang/String;
-HSPLcom/android/server/audio/AudioService$VolumeGroupState;->readSettings()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/os/UserManager;Landroid/os/UserManager;
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Landroid/appwidget/AppWidgetProviderInfo;Landroid/appwidget/AppWidgetProviderInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;]Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;+]Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Z)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToStreamLocked(Ljava/io/OutputStream;I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;]Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/appwidget/AppWidgetXmlUtil;->writeAppWidgetProviderInfoLocked(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/appwidget/AppWidgetProviderInfo;)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
 HSPLcom/android/server/audio/AudioService$VolumeStreamState$1;->record(Ljava/lang/String;II)V+]Landroid/media/MediaMetrics$Item;Landroid/media/MediaMetrics$Item;
-HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I+]Landroid/util/SparseIntArray;Lcom/android/server/audio/AudioService$VolumeStreamState$1;
-HSPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;+]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;]Ljava/util/Set;Ljava/util/TreeSet;]Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SystemServerAdapter;]Ljava/lang/Object;Ljava/util/TreeSet;
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;+]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;]Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SystemServerAdapter;]Ljava/lang/Object;Ljava/util/TreeSet;]Ljava/util/Set;Ljava/util/TreeSet;
 HSPLcom/android/server/audio/AudioService;->getDeviceSetForStream(I)Ljava/util/Set;+]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;
 HSPLcom/android/server/audio/AudioService;->getDevicesForAttributesInt(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;+]Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/AudioSystemAdapter;
-HSPLcom/android/server/audio/AudioService;->getStreamVolume(II)I+]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;
-HSPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/Set;Ljava/util/TreeSet;]Ljava/lang/Integer;Ljava/lang/Integer;
+HPLcom/android/server/audio/AudioService;->getStreamVolume(II)I+]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;
+HSPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/Set;Ljava/util/TreeSet;
 HSPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributesImpl(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
-HSPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->injectAugmentedAutofillInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->getAutofillOptions(Ljava/lang/String;JI)Landroid/content/AutofillOptions;
 HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->injectDisableAppInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
-HPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;+]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z+]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/backup/UserBackupManagerService;->addUserIdToLogMessage(ILjava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/backup/UserBackupManagerService;->dataChanged(Ljava/lang/String;)V
-HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V
-HPLcom/android/server/backup/transport/TransportConnection;->connect(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;+]Lcom/android/server/backup/transport/TransportStats;Lcom/android/server/backup/transport/TransportStats;]Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection;
-HPLcom/android/server/backup/transport/TransportConnection;->saveLogEntry(Ljava/lang/String;)V+]Ljava/util/List;Ljava/util/LinkedList;
-HPLcom/android/server/backup/transport/TransportConnection;->setStateLocked(ILcom/android/server/backup/transport/BackupTransportClient;)V
-HPLcom/android/server/backup/transport/TransportConnection;->toString()Ljava/lang/String;
-HPLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService;
+HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/HashSet;Ljava/util/HashSet;
-HSPLcom/android/server/biometrics/sensors/BaseClientMonitor;->toString()Ljava/lang/String;+]Lcom/android/server/biometrics/sensors/BaseClientMonitor;megamorphic_types
-HSPLcom/android/server/biometrics/sensors/BiometricServiceRegistry;->getProviderForSensor(I)Lcom/android/server/biometrics/sensors/BiometricServiceProvider;+]Lcom/android/server/biometrics/sensors/BiometricServiceProvider;Lcom/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider;,Lcom/android/server/biometrics/sensors/face/aidl/FaceProvider;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
-HSPLcom/android/server/biometrics/sensors/BiometricServiceRegistry;->getSingleProvider()Landroid/util/Pair;+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/biometrics/sensors/BiometricServiceRegistry;Lcom/android/server/biometrics/sensors/face/FaceServiceRegistry;,Lcom/android/server/biometrics/sensors/fingerprint/FingerprintServiceRegistry;
 HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForPackageForUser(Landroid/content/pm/PackageStats;Ljava/lang/String;Landroid/os/UserHandle;Z)V
 HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForUid(Landroid/content/pm/PackageStats;IZ)V+]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
-HPLcom/android/server/blob/BlobStoreManagerService;->forEachBlobLocked(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/blob/BlobStoreManagerService;->forEachSessionInUser(Ljava/util/function/Consumer;I)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/util/function/Consumer;Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda4;,Lcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda16;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda0;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda2;]Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService;
+HPLcom/android/server/blob/BlobStoreManagerService;->forEachBlobLocked(Ljava/util/function/Consumer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/Consumer;megamorphic_types
+HPLcom/android/server/blob/BlobStoreManagerService;->forEachSessionInUser(Ljava/util/function/Consumer;I)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService;]Ljava/util/function/Consumer;Lcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda16;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda0;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda2;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda4;
 HPLcom/android/server/blob/BlobStoreManagerService;->getUserSessionsLocked(I)Landroid/util/LongSparseArray;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdsForUid(I)Landroid/util/ArraySet;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/companion/virtual/VirtualDeviceImpl;Lcom/android/server/companion/virtual/VirtualDeviceImpl;
-HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService;->getVirtualDevicesSnapshot()Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lcom/android/internal/compat/CompatibilityChangeInfo;Lcom/android/server/compat/CompatChange;]Ljava/lang/Boolean;Ljava/lang/Boolean;
-HPLcom/android/server/compat/CompatChange;->recheckOverride(Ljava/lang/String;Lcom/android/internal/compat/OverrideAllowedState;Ljava/lang/Long;)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lcom/android/server/compat/CompatChange;Lcom/android/server/compat/CompatChange;]Landroid/app/compat/PackageOverride;Landroid/app/compat/PackageOverride;]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Landroid/util/LongArray;Landroid/util/LongArray;]Lcom/android/server/compat/CompatChange;Lcom/android/server/compat/CompatChange;]Lcom/android/internal/compat/CompatibilityChangeInfo;Lcom/android/server/compat/CompatChange;
-HSPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lcom/android/server/compat/CompatChange;Lcom/android/server/compat/CompatChange;
-HPLcom/android/server/compat/OverrideValidatorImpl;->getOverrideAllowedStateInternal(JLjava/lang/String;Z)Lcom/android/internal/compat/OverrideAllowedState;+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;
+HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdsForUid(I)Landroid/util/ArraySet;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService;->getVirtualDevicesSnapshot()Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;]Lcom/android/internal/compat/CompatibilityChangeInfo;Lcom/android/server/compat/CompatChange;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J+]Landroid/util/LongArray;Landroid/util/LongArray;]Lcom/android/internal/compat/CompatibilityChangeInfo;Lcom/android/server/compat/CompatChange;]Lcom/android/server/compat/CompatChange;Lcom/android/server/compat/CompatChange;]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/CompatConfig;->getLoggableChanges(Landroid/content/pm/ApplicationInfo;)[J+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/compat/CompatChange;Lcom/android/server/compat/CompatChange;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/CompatConfig;->isChangeTargetingLatestSdk(Lcom/android/server/compat/CompatChange;I)Z
+HSPLcom/android/server/compat/CompatConfig;->maxTargetSdkForCompatChange(Lcom/android/server/compat/CompatChange;)I
 HSPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;
+HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z+]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
 HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;
+HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
 HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
 HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/compat/CompatConfig;Lcom/android/server/compat/CompatConfig;
 HSPLcom/android/server/compat/config/Change;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Change;
 HPLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->getNetworkCapabilities(I)Landroid/net/NetworkCapabilities;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;
-HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;+]Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;
-HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/net/watchlist/NetworkWatchlistService$1;,Lcom/android/server/devicepolicy/NetworkLogger$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
-HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/net/watchlist/NetworkWatchlistService$1;,Lcom/android/server/devicepolicy/NetworkLogger$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
-HPLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V+]Landroid/os/BatteryStatsInternal;Lcom/android/server/am/BatteryStatsService$LocalService;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
+HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V+]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;+]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
+HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/devicepolicy/NetworkLogger$1;,Lcom/android/server/net/watchlist/NetworkWatchlistService$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
+HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/devicepolicy/NetworkLogger$1;,Lcom/android/server/net/watchlist/NetworkWatchlistService$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;
+HPLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V+]Landroid/os/BatteryStatsInternal;Lcom/android/server/am/BatteryStatsService$LocalService;]Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService;]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/server/content/ContentService$ObserverCollector$Key;->hashCode()I
 HSPLcom/android/server/content/ContentService$ObserverCollector;-><init>()V
-HSPLcom/android/server/content/ContentService$ObserverCollector;->collect(Landroid/database/IContentObserver;IZLandroid/net/Uri;II)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/content/ContentService$ObserverCollector;->collect(Landroid/database/IContentObserver;IZLandroid/net/Uri;II)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/content/ContentService$ObserverCollector;->dispatch()V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Runnable;Lcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;
-HSPLcom/android/server/content/ContentService$ObserverCollector;->lambda$dispatch$0(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;
+HSPLcom/android/server/content/ContentService$ObserverCollector;->lambda$dispatch$0(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V+]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;
 HSPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Lcom/android/server/content/ContentService$ObserverCollector;Lcom/android/server/content/ContentService$ObserverCollector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;
-HSPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;IILandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I+]Ljava/util/List;Landroid/net/Uri$PathSegments;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
-HSPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;+]Ljava/util/List;Landroid/net/Uri$PathSegments;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
-HSPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z+]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;
-HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V+]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Lcom/android/server/content/ContentService$ObserverCollector;Lcom/android/server/content/ContentService$ObserverCollector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;IILandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/List;Landroid/net/Uri$PathSegments;
+HSPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/List;Landroid/net/Uri$PathSegments;
+HSPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
 HPLcom/android/server/content/ContentService;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
 HSPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
-HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
 HSPLcom/android/server/content/ContentService;->getSyncExemptionAndCleanUpExtrasForCaller(ILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;
-HSPLcom/android/server/content/ContentService;->getSyncExemptionForCaller(I)I+]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;
 HSPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
-HSPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;
-HPLcom/android/server/content/ContentService;->hasAccountAccess(ZLandroid/accounts/Account;I)Z+]Landroid/accounts/AccountManagerInternal;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;
-HPLcom/android/server/content/ContentService;->hasAuthorityAccess(Ljava/lang/String;II)Z
-HSPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;
-HSPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/content/ContentService$ObserverCollector;Lcom/android/server/content/ContentService$ObserverCollector;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;
+HSPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/content/ContentService$ObserverCollector;Lcom/android/server/content/ContentService$ObserverCollector;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;]Lcom/android/server/content/ContentService;Lcom/android/server/content/ContentService;
-HPLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Landroid/content/SyncRequest;Landroid/content/SyncRequest;
 HSPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V+]Lcom/android/server/content/ContentService$ObserverNode;Lcom/android/server/content/ContentService$ObserverNode;
-HPLcom/android/server/content/SyncJobService;->callJobFinishedInner(IZLjava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
-HPLcom/android/server/content/SyncJobService;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;
-HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
+HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/content/SyncLogger$RotatingFileLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->log(J[Ljava/lang/Object;)V
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V+]Lcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;Lcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V+]Ljava/util/Date;Ljava/util/Date;]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/text/SimpleDateFormat;Ljava/text/SimpleDateFormat;]Lcom/android/server/content/SyncLogger$RotatingFileLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V+]Ljava/util/Date;Ljava/util/Date;]Ljava/io/File;Ljava/io/File;
-HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
-HPLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V+]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/content/SyncManager$ActiveSyncContext;Lcom/android/server/content/SyncManager$ActiveSyncContext;
-HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
-HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V+]Lcom/android/server/content/SyncManager$SyncTimeTracker;Lcom/android/server/content/SyncManager$SyncTimeTracker;]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
-HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V+]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;
-HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V+]Landroid/app/NotificationManager;Landroid/app/NotificationManager;]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/accounts/Account;Landroid/accounts/Account;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;
-HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;
-HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;ZZ)I+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder;
-HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;+]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
-HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
-HPLcom/android/server/content/SyncManager;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V+]Lcom/android/server/content/SyncLogger$RotatingFileLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/text/SimpleDateFormat;Ljava/text/SimpleDateFormat;]Ljava/util/Date;Ljava/util/Date;
+HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/Date;Ljava/util/Date;
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V+]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Lcom/android/server/content/SyncManager$SyncTimeTracker;Lcom/android/server/content/SyncManager$SyncTimeTracker;
+HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;ZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;
+HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
+HPLcom/android/server/content/SyncManager;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;+]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;II)[Ljava/lang/String;+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/content/SyncManager;->isContactSharingAllowedForCloneProfile()Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/config/appcloning/AppCloningDeviceConfigHelper;Lcom/android/internal/config/appcloning/AppCloningDeviceConfigHelper;
-HPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V+]Lcom/android/server/content/SyncStorageEngine$EndPoint;Lcom/android/server/content/SyncStorageEngine$EndPoint;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
 HSPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;IIILjava/lang/String;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
-HSPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/HashSet;Ljava/util/HashSet;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/accounts/AccountManagerInternal;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;
-HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V+]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Ljava/lang/Object;Ljava/lang/String;]Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo$Builder;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V+]Landroid/accounts/AccountManagerInternal;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/HashMap$KeyIterator;
+HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V+]Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo$Builder;]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJI)V+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;
 HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;ZLcom/android/server/content/SyncAdapterStateFetcher;Z)Ljava/lang/String;+]Lcom/android/server/content/SyncAdapterStateFetcher;Lcom/android/server/content/SyncAdapterStateFetcher;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
-HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Bundle;Landroid/os/Bundle;
-HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Ljava/lang/String;Ljava/lang/String;]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Bundle;Landroid/os/Bundle;
+HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
 HSPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
-HPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z+]Landroid/accounts/Account;Landroid/accounts/Account;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String;
-HPLcom/android/server/content/SyncStorageEngine;->addActiveSync(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Landroid/content/SyncInfo;+]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap;
-HPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
-HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
 HSPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap;
-HPLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z
 HPLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/content/SyncStorageEngine;->reportChange(ILcom/android/server/content/SyncStorageEngine$EndPoint;)V+]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
-HPLcom/android/server/content/SyncStorageEngine;->reportChange(ILjava/lang/String;I)V+]Landroid/content/ISyncStatusObserver;Landroid/content/ISyncStatusObserver$Stub$Proxy;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJLjava/lang/String;I)V+]Landroid/content/SyncStatusInfo;Landroid/content/SyncStatusInfo;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/content/SyncStorageEngine$MyHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/content/SyncStorageEngine;->reportChange(ILjava/lang/String;I)V+]Landroid/content/ISyncStatusObserver;Landroid/content/ISyncStatusObserver$Stub$Proxy;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJLjava/lang/String;I)V+]Landroid/content/SyncStatusInfo;Landroid/content/SyncStatusInfo;]Landroid/os/Handler;Lcom/android/server/content/SyncStorageEngine$MyHandler;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/content/SyncStorageEngine;->writeStatusInfoLocked(Ljava/io/OutputStream;)V+]Landroid/content/SyncStatusInfo;Landroid/content/SyncStatusInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
-HPLcom/android/server/content/SyncStorageEngine;->writeStatusStatsLocked(Landroid/util/proto/ProtoOutputStream;Landroid/content/SyncStatusInfo$Stats;)V+]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
-HSPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->registerContentCaptureOptionsCallback(Ljava/lang/String;Landroid/view/contentcapture/IContentCaptureOptionsCallback;)V+]Landroid/view/contentcapture/IContentCaptureOptionsCallback;Landroid/view/contentcapture/IContentCaptureOptionsCallback$Stub$Proxy;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/server/contentcapture/ContentCaptureManagerService;
-HPLcom/android/server/contentcapture/ContentCaptureManagerService$DataShareCallbackDelegate;->accept(Landroid/service/contentcapture/IDataShareReadAdapter;)V+]Ljava/util/concurrent/Executor;Ljava/util/concurrent/ThreadPoolExecutor;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->registerContentCaptureOptionsCallback(Ljava/lang/String;Landroid/view/contentcapture/IContentCaptureOptionsCallback;)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/view/contentcapture/IContentCaptureOptionsCallback;Landroid/view/contentcapture/IContentCaptureOptionsCallback$Stub$Proxy;]Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/server/contentcapture/ContentCaptureManagerService;
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->getOptions(ILjava/lang/String;)Landroid/content/ContentCaptureOptions;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->isContentProtectionReceiverEnabled(ILjava/lang/String;)Z+]Lcom/android/server/contentprotection/ContentProtectionConsentManager;Lcom/android/server/contentprotection/ContentProtectionConsentManager;]Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->isContentProtectionReceiverEnabled(ILjava/lang/String;)Z+]Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;]Lcom/android/server/contentprotection/ContentProtectionConsentManager;Lcom/android/server/contentprotection/ContentProtectionConsentManager;
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isContentProtectionEnabledLocked()Z+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;
-HPLcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;->setContentCaptureWhitelist(Ljava/util/List;Ljava/util/List;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/cpu/CpuAvailabilityInfo;-><init>(IJIIJ)V
 HSPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;-><init>(JJJJJJJJJJ)V
 HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->delta(Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;
 HSPLcom/android/server/cpu/CpuInfoReader;->calculateAvgCpuFreq(Landroid/util/LongSparseLongArray;)J+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
-HSPLcom/android/server/cpu/CpuInfoReader;->readAvgTimeInStateCpuFrequency(ILjava/io/File;)J+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
-HSPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/String;Ljava/lang/String;]Landroid/util/IntArray;Landroid/util/IntArray;
-HSPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/cpu/CpuInfoReader;Lcom/android/server/cpu/CpuInfoReader;
-HSPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/String;Ljava/lang/String;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
+HSPLcom/android/server/cpu/CpuInfoReader;->readAvgTimeInStateCpuFrequency(ILjava/io/File;)J+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/io/File;Ljava/io/File;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/cpu/CpuInfoReader;Lcom/android/server/cpu/CpuInfoReader;
+HSPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/io/File;Ljava/io/File;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
 HSPLcom/android/server/cpu/CpuInfoReader;->readDynamicPolicyInfo()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/cpu/CpuInfoReader;->readTimeInState(Ljava/io/File;)Landroid/util/LongSparseLongArray;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
-HSPLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->appendCpuInfo(Lcom/android/server/cpu/CpuInfoReader$CpuInfo;)V+]Lcom/android/server/cpu/CpuInfoReader$CpuInfo;Lcom/android/server/cpu/CpuInfoReader$CpuInfo;
+HSPLcom/android/server/cpu/CpuInfoReader;->readTimeInState(Ljava/io/File;)Landroid/util/LongSparseLongArray;+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Ljava/io/File;Ljava/io/File;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
 HSPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->appendCpuInfo(JLcom/android/server/cpu/CpuInfoReader$CpuInfo;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;Lcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;
-HSPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getCumulativeAvgAvailabilityPercent(J)I+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
-HSPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/cpu/CpuMonitorService;Lcom/android/server/cpu/CpuMonitorService;]Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;]Lcom/android/server/cpu/CpuInfoReader;Lcom/android/server/cpu/CpuInfoReader;
-HPLcom/android/server/devicepolicy/ActiveAdmin;->getUid()I
+HSPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/cpu/CpuInfoReader;Lcom/android/server/cpu/CpuInfoReader;]Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;]Lcom/android/server/cpu/CpuMonitorService;Lcom/android/server/cpu/CpuMonitorService;
+HSPLcom/android/server/devicepolicy/ActiveAdmin;->getUid()I
 HSPLcom/android/server/devicepolicy/ActiveAdmin;->getUserHandle()Landroid/os/UserHandle;
-HSPLcom/android/server/devicepolicy/ActiveAdmin;->writeAttributeValuesToXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Collection;Landroid/util/ArraySet;,Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;,Ljava/util/Collections$EmptyIterator;
-HSPLcom/android/server/devicepolicy/ActiveAdmin;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/CharSequence;Ljava/lang/String;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/Set;Landroid/util/ArraySet;
+HPLcom/android/server/devicepolicy/ActiveAdmin;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLcom/android/server/devicepolicy/CallerIdentity;-><init>(ILjava/lang/String;Landroid/content/ComponentName;)V
 HSPLcom/android/server/devicepolicy/CallerIdentity;->getUserId()I
 HPLcom/android/server/devicepolicy/CallerIdentity;->toString()Ljava/lang/String;
-HSPLcom/android/server/devicepolicy/DevicePolicyData;->store(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;)Z+]Lcom/android/internal/util/JournaledFile;Lcom/android/internal/util/JournaledFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Landroid/util/ArraySet;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeGlobalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/admin/PolicyKey;Landroid/app/admin/UserRestrictionPolicyKey;,Landroid/app/admin/NoArgsPolicyKey;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Lcom/android/server/devicepolicy/PolicyState;Lcom/android/server/devicepolicy/PolicyState;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeLocalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/admin/PolicyKey;Landroid/app/admin/PackagePolicyKey;,Landroid/app/admin/UserRestrictionPolicyKey;,Landroid/app/admin/NoArgsPolicyKey;,Landroid/app/admin/IntentFilterPolicyKey;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Lcom/android/server/devicepolicy/PolicyState;Lcom/android/server/devicepolicy/PolicyState;
+HPLcom/android/server/devicepolicy/DevicePolicyData;->store(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;)Z+]Lcom/android/internal/util/JournaledFile;Lcom/android/internal/util/JournaledFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
+HPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeLocalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyKey;Landroid/app/admin/IntentFilterPolicyKey;,Landroid/app/admin/NoArgsPolicyKey;,Landroid/app/admin/PackagePolicyKey;,Landroid/app/admin/UserRestrictionPolicyKey;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/PolicyState;Lcom/android/server/devicepolicy/PolicyState;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HPLcom/android/server/devicepolicy/DevicePolicyEngine;->getLocalPolicyStateLocked(Lcom/android/server/devicepolicy/PolicyDefinition;I)Lcom/android/server/devicepolicy/PolicyState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
 HSPLcom/android/server/devicepolicy/DevicePolicyEngine;->hasLocalPolicyLocked(Lcom/android/server/devicepolicy/PolicyDefinition;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine;->lambda$forceEnforcementRefreshLocked$0(Lcom/android/server/devicepolicy/PolicyDefinition;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HPLcom/android/server/devicepolicy/DevicePolicyEngine;->lambda$forceEnforcementRefreshLocked$0(Lcom/android/server/devicepolicy/PolicyDefinition;)V+]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda84;->getOrThrow()Ljava/lang/Object;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda87;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManager()Landroid/content/pm/PackageManager;+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveDeviceOwner(I)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveProfileOwner(I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkAdminCanSetRestriction(Lcom/android/server/devicepolicy/CallerIdentity;ZLjava/lang/String;)V+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity()Lcom/android/server/devicepolicy/CallerIdentity;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/lang/Object;Ljava/lang/String;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/admin/DeviceAdminInfo;Landroid/app/admin/DeviceAdminInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked()Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;+]Landroid/app/admin/DeviceAdminInfo;Landroid/app/admin/DeviceAdminInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPackageInfoWithNullCheck(Ljava/lang/String;Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantStateForUser(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/devicepolicy/CallerIdentity;I)I+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/admin/DeviceAdminInfo;Landroid/app/admin/DeviceAdminInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantStateForUser(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/devicepolicy/CallerIdentity;I)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Landroid/app/admin/DeviceAdminInfo;Landroid/app/admin/DeviceAdminInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Ljava/lang/Integer;Ljava/lang/Integer;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getTargetSdk(Ljava/lang/String;I)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/DeviceStateCacheImpl;Lcom/android/server/devicepolicy/DeviceStateCacheImpl;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getWifiSsidPolicy(Ljava/lang/String;)Landroid/app/admin/WifiSsidPolicy;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCallingOrSelfPermission(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z+]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFullCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFullCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z+]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isFinancedDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isFinancedDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPermissionCheckFlagEnabled()Z
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSystemUid(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->logUserRestrictionCall(Ljava/lang/String;ZZLcom/android/server/devicepolicy/CallerIdentity;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationExemptions(Ljava/lang/String;Ljava/lang/String;[I)V+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZ)V+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isUserOrganizationManaged(I)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationExemptions(Ljava/lang/String;Ljava/lang/String;[I)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;]Lcom/android/server/devicepolicy/CallerIdentity;Lcom/android/server/devicepolicy/CallerIdentity;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
+HSPLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isUserOrganizationManaged(I)Z+]Lcom/android/server/devicepolicy/DeviceStateCacheImpl;Lcom/android/server/devicepolicy/DeviceStateCacheImpl;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLcom/android/server/devicepolicy/EnforcingAdmin;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/util/Set;ILcom/android/server/devicepolicy/ActiveAdmin;)V
-HPLcom/android/server/devicepolicy/EnforcingAdmin;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/devicepolicy/EnforcingAdmin;->hashCode()I+]Lcom/android/server/devicepolicy/EnforcingAdmin;Lcom/android/server/devicepolicy/EnforcingAdmin;
-HPLcom/android/server/devicepolicy/EnforcingAdmin;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/EnforcingAdmin;Lcom/android/server/devicepolicy/EnforcingAdmin;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/EnforcingAdmin;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/EnforcingAdmin;Lcom/android/server/devicepolicy/EnforcingAdmin;
 HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
 HSPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
 HSPLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/devicepolicy/PolicyDefinition$$ExternalSyntheticLambda18;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/PolicyDefinition;->enforcePolicy(Ljava/lang/Object;Landroid/content/Context;I)Z+]Lcom/android/internal/util/function/QuadFunction;megamorphic_types
-HPLcom/android/server/devicepolicy/PolicyState;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/app/admin/PolicyValue;Landroid/app/admin/ComponentNamePolicyValue;,Landroid/app/admin/LockTaskPolicy;,Landroid/app/admin/BooleanPolicyValue;,Landroid/app/admin/PackageSetPolicyValue;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;]Lcom/android/server/devicepolicy/EnforcingAdmin;Lcom/android/server/devicepolicy/EnforcingAdmin;]Lcom/android/server/devicepolicy/PolicyDefinition;Lcom/android/server/devicepolicy/PolicyDefinition;
-HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->add(IF)V+]Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;]Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;]Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;
+HPLcom/android/server/devicepolicy/PolicyState;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyValue;Landroid/app/admin/BooleanPolicyValue;,Landroid/app/admin/ComponentNamePolicyValue;,Landroid/app/admin/LockTaskPolicy;,Landroid/app/admin/PackageSetPolicyValue;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/EnforcingAdmin;Lcom/android/server/devicepolicy/EnforcingAdmin;]Lcom/android/server/devicepolicy/PolicyDefinition;Lcom/android/server/devicepolicy/PolicyDefinition;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->add(IF)V+]Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;]Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;]Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;
 HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I
-HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
-HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
-HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;
-HSPLcom/android/server/display/AutomaticBrightnessController;->isInIdleMode()Z+]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;
-HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;
-HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;
-HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Landroid/os/Handler;Lcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;
-HSPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/NormalBrightnessModeController;Lcom/android/server/display/NormalBrightnessModeController;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;
-HSPLcom/android/server/display/BrightnessRangeController;->setAutoBrightnessEnabled(I)V+]Lcom/android/server/display/brightness/clamper/HdrClamper;Lcom/android/server/display/brightness/clamper/HdrClamper;
+HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F+]Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;
+HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J+]Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V+]Landroid/os/Handler;Lcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;
+HSPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/NormalBrightnessModeController;Lcom/android/server/display/NormalBrightnessModeController;
 HSPLcom/android/server/display/BrightnessTracker$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker;
-HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/display/DisplayBrightnessState$Builder;-><init>()V
 HSPLcom/android/server/display/DisplayBrightnessState$Builder;->from(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState$Builder;
 HSPLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;)V+]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;
 HSPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
-HSPLcom/android/server/display/DisplayDevice;->setProjectionLocked(Landroid/view/SurfaceControl$Transaction;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getNitsFromBacklight(F)F+]Landroid/util/Spline;Landroid/util/Spline$MonotoneCubicSpline;
 HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
 HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
-HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
 HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
-HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/DisplayDeviceRepository;]Lcom/android/server/display/DisplayDeviceInfo;Lcom/android/server/display/DisplayDeviceInfo;
+HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/display/DisplayGroup;->getIdLocked(I)I+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/display/DisplayGroup;->getSizeLocked()I+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/display/DisplayInfoProxy;->set(Landroid/view/DisplayInfo;)V
-HSPLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIFF)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Lcom/android/server/power/PowerManagerService$1;
-HSPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Landroid/hardware/display/IDisplayManager$Stub;Lcom/android/server/display/DisplayManagerService$BinderService;
+HSPLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIFF)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Lcom/android/server/power/PowerManagerService$1;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;+]Landroid/hardware/display/IDisplayManager$Stub;Lcom/android/server/display/DisplayManagerService$BinderService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getOverlaySupport()Landroid/hardware/OverlayProperties;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getPreferredWideGamutColorSpaceId()I
 HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z+]Landroid/hardware/display/IDisplayManagerCallback;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;,Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;]Lcom/android/server/display/DisplayManagerService$CallbackRecord;Lcom/android/server/display/DisplayManagerService$CallbackRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->getRefreshRateSwitchingType()I+]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;,Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIFFZZZ)V+]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onLogicalDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
-HPLcom/android/server/display/DisplayManagerService$PendingCallback;->addDisplayEvent(II)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportance(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/DisplayManagerService$PendingCallback;Lcom/android/server/display/DisplayManagerService$PendingCallback;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmSyncRoot(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
-HSPLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/HighBrightnessModeMetadataMapper;Lcom/android/server/display/HighBrightnessModeMetadataMapper;
-HSPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
-HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/display/DisplayManagerService$CallbackRecord;Lcom/android/server/display/DisplayManagerService$CallbackRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/display/DisplayManagerService$PendingCallback;Lcom/android/server/display/DisplayManagerService$PendingCallback;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
+HPLcom/android/server/display/DisplayManagerService$PendingCallback;->addDisplayEvent(II)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportance(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayManagerService$PendingCallback;Lcom/android/server/display/DisplayManagerService$PendingCallback;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayManagerService$CallbackRecord;Lcom/android/server/display/DisplayManagerService$CallbackRecord;]Lcom/android/server/display/DisplayManagerService$PendingCallback;Lcom/android/server/display/DisplayManagerService$PendingCallback;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoForFrameRateOverride([Landroid/view/DisplayEventReceiver$FrameRateOverride;Landroid/view/DisplayInfo;I)Landroid/view/DisplayInfo;+]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;+]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService;->isMinimalPostProcessingAllowed()Z
-HSPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
-HSPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Lcom/android/server/display/DisplayDeviceInfo;)V
-HSPLcom/android/server/display/DisplayManagerService;->recordTopInsetLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Ljava/lang/Runnable;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
+HSPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Ljava/lang/Runnable;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
-HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V+]Landroid/os/Handler;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIFFZZZ)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;
-HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
+HSPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIFFZZZ)V+]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;]Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector;
+HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/DisplayManagerService;->updateViewportPowerStateLocked(Lcom/android/server/display/LogicalDisplay;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;]Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker;
-HSPLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(F)F+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;
 HSPLcom/android/server/display/DisplayPowerController;->getBrightnessInfo()Landroid/hardware/display/BrightnessInfo;
 HSPLcom/android/server/display/DisplayPowerController;->logBrightnessEvent(Lcom/android/server/display/brightness/BrightnessEvent;F)V+]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;
 HSPLcom/android/server/display/DisplayPowerController;->notifyBrightnessTrackerChanged(FZZZZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker;
-HSPLcom/android/server/display/DisplayPowerController;->onDisplayChanged(Lcom/android/server/display/HighBrightnessModeMetadata;I)V+]Lcom/android/server/display/DisplayPowerController$Clock;Lcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
-HSPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Lcom/android/server/display/DisplayPowerProximityStateController;Lcom/android/server/display/DisplayPowerProximityStateController;]Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController;
-HSPLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FFLcom/android/server/display/DisplayBrightnessState;)Z+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;]Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;
-HSPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V+]Lcom/android/server/display/DisplayPowerController$Clock;Lcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;
-HSPLcom/android/server/display/DisplayPowerController;->updatePowerStateInternal()V+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Lcom/android/server/display/state/DisplayStateController;Lcom/android/server/display/state/DisplayStateController;]Lcom/android/server/display/ScreenOffBrightnessSensorController;Lcom/android/server/display/ScreenOffBrightnessSensorController;]Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;]Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;
+HSPLcom/android/server/display/DisplayPowerController;->onDisplayChanged(Lcom/android/server/display/HighBrightnessModeMetadata;I)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/DisplayPowerController$Clock;Lcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;
+HSPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/DisplayPowerProximityStateController;Lcom/android/server/display/DisplayPowerProximityStateController;
+HSPLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FFLcom/android/server/display/DisplayBrightnessState;)Z+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;
+HSPLcom/android/server/display/DisplayPowerController;->updatePowerStateInternal()V+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/DisplayPowerControllerInterface;Lcom/android/server/display/DisplayPowerController;]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/ScreenOffBrightnessSensorController;Lcom/android/server/display/ScreenOffBrightnessSensorController;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Lcom/android/server/display/state/DisplayStateController;Lcom/android/server/display/state/DisplayStateController;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/display/DisplayPowerProximityStateController;->setPendingWaitForNegativeProximityLocked(Z)Z
-HSPLcom/android/server/display/DisplayPowerProximityStateController;->updateProximityState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)V
 HSPLcom/android/server/display/DisplayPowerState$4;->run()V+]Lcom/android/server/display/DisplayPowerState$PhotonicModulator;Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
-HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
+HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V+]Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/DisplayManagerService$1;
 HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(IFF)Z+]Ljava/lang/Object;Ljava/lang/Object;
-HSPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/display/DisplayPowerState;->setScreenBrightness(F)V+]Lcom/android/server/display/DisplayPowerState;Lcom/android/server/display/DisplayPowerState;
+HSPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
 HSPLcom/android/server/display/DisplayPowerState;->setSdrScreenBrightness(F)V+]Lcom/android/server/display/DisplayPowerState;Lcom/android/server/display/DisplayPowerState;
-HSPLcom/android/server/display/HighBrightnessModeController;->calculateRemainingTime(J)J+]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
-HSPLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;
-HSPLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V+]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;
-HSPLcom/android/server/display/HighBrightnessModeController;->recalculateTimeAllowance()V+]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;
-HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZFFJLcom/android/server/display/DisplayOffloadSessionImpl;Landroid/os/IBinder;)V
+HSPLcom/android/server/display/HighBrightnessModeController;->calculateRemainingTime(J)J+]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
+HSPLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V+]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;
+HSPLcom/android/server/display/HighBrightnessModeController;->recalculateTimeAllowance()V+]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z+]Landroid/view/Display$Mode;Landroid/view/Display$Mode;
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V+]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V+]Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findSfDisplayModeIdLocked(II)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V+]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceConfig()Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/LocalDisplayAdapter;Lcom/android/server/display/LocalDisplayAdapter;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I+]Lcom/android/server/display/DensityMapping;Lcom/android/server/display/DensityMapping;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable;+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/LocalDisplayAdapter;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Lcom/android/server/display/LocalDisplayAdapter;Lcom/android/server/display/LocalDisplayAdapter;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
 HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
 HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;+]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy;
 HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/server/display/DisplayDeviceInfo;)Landroid/graphics/Rect;
-HSPLcom/android/server/display/LogicalDisplay;->isEnabledLocked()Z
-HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Float;Ljava/lang/Float;
-HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/DisplayDeviceRepository;]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;
+HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Float;Ljava/lang/Float;
+HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupLocked(I)Lcom/android/server/display/DisplayGroup;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
 HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(I)Lcom/android/server/display/LogicalDisplay;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
 HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;Z)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForGroupsLocked(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;
-HPLcom/android/server/display/RampAnimator$DualRampAnimator$1;->run()V+]Lcom/android/server/display/RampAnimator$Listener;Lcom/android/server/display/DisplayPowerController$3;]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator;]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Landroid/view/Choreographer;Landroid/view/Choreographer;
-HSPLcom/android/server/display/RampAnimator$DualRampAnimator;->isAnimating()Z+]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator;
+HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/LogicalDisplay;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HPLcom/android/server/display/RampAnimator$DualRampAnimator$1;->run()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/RampAnimator$Listener;Lcom/android/server/display/DisplayPowerController$3;]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator;
 HPLcom/android/server/display/RampAnimator;->performNextAnimationStep(J)V+]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator;
-HSPLcom/android/server/display/RampAnimator;->setPropertyValue(F)V+]Landroid/util/FloatProperty;Lcom/android/server/display/DisplayPowerState$3;,Lcom/android/server/display/DisplayPowerState$2;
 HSPLcom/android/server/display/brightness/BrightnessEvent;->copyFrom(Lcom/android/server/display/brightness/BrightnessEvent;)V
 HSPLcom/android/server/display/brightness/BrightnessEvent;->equalsMainData(Lcom/android/server/display/brightness/BrightnessEvent;)Z
-HSPLcom/android/server/display/brightness/BrightnessEvent;->flagsToString()Ljava/lang/String;
 HSPLcom/android/server/display/brightness/BrightnessEvent;->reset()V
 HSPLcom/android/server/display/brightness/BrightnessEvent;->toString(Z)Ljava/lang/String;
-HSPLcom/android/server/display/brightness/BrightnessReason;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/display/brightness/BrightnessReason;->set(Lcom/android/server/display/brightness/BrightnessReason;)V+]Lcom/android/server/display/brightness/BrightnessReason;Lcom/android/server/display/brightness/BrightnessReason;
 HSPLcom/android/server/display/brightness/BrightnessReason;->toString(I)Ljava/lang/String;
 HSPLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFFLjava/lang/String;Z)Lcom/android/server/display/DisplayBrightnessState;
-HSPLcom/android/server/display/brightness/DisplayBrightnessController;->addAutomaticBrightnessState(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;
-HSPLcom/android/server/display/brightness/DisplayBrightnessController;->getScreenBrightnessSetting()F+]Lcom/android/server/display/BrightnessSetting;Lcom/android/server/display/BrightnessSetting;
-HSPLcom/android/server/display/brightness/DisplayBrightnessController;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types]Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;
-HSPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZ)Lcom/android/server/display/DisplayBrightnessState;+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;Lcom/android/server/display/brightness/clamper/DisplayDimModifier;,Lcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;]Lcom/android/server/display/brightness/BrightnessReason;Lcom/android/server/display/brightness/BrightnessReason;
-HSPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->recalculateBrightnessCap()V+]Lcom/android/server/display/brightness/clamper/BrightnessClamper;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$2;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda4;
-HPLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;->updateMinMaxComponents()V+]Landroid/animation/ValueAnimator;Lcom/android/server/display/color/ColorDisplayService$TintValueAnimator;
+HSPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZ)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;]Lcom/android/server/display/brightness/BrightnessReason;Lcom/android/server/display/brightness/BrightnessReason;]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;Lcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;,Lcom/android/server/display/brightness/clamper/DisplayDimModifier;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;)Z+]Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;
 HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->areAutoBrightnessModesEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayManagementEnabled()Z
-HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->findModeByIdLocked(II)Landroid/view/Display$Mode;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;
 HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppPreferredRefreshRateRangeLocked(IFF)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;
-HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequestedModeLocked(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;]Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onBrightnessChangedLocked()V+]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;]Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateSensorStatus()V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateDisplayModes(ILandroid/view/DisplayInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/display/mode/DisplayModeDirector;->getDesiredDisplayModeSpecs(I)Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;+]Lcom/android/server/display/mode/VotesStatsReporter;Lcom/android/server/display/mode/VotesStatsReporter;]Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequestedModeLocked(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onBrightnessChangedLocked()V+]Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;
 HSPLcom/android/server/display/mode/DisplayModeDirector;->getModeSwitchingType()I
-HSPLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V+]Lcom/android/server/display/mode/VotesStatsReporter;Lcom/android/server/display/mode/VotesStatsReporter;]Ljava/lang/Object;megamorphic_types]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStatsReporter;Lcom/android/server/display/mode/VotesStatsReporter;]Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;]Ljava/lang/Object;megamorphic_types
 HSPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
 HSPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
 HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
-HSPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z+]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z+]Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Lcom/android/server/IntentResolver;Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;
+HSPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/IntentResolver;Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;]Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;
 HSPLcom/android/server/firewall/IntentFirewall;->getPackageManager()Landroid/content/pm/PackageManagerInternal;
-HSPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;->getSerializedSystemFontMap()Landroid/os/SharedMemory;+]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
-HSPLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;->healthInfoChanged(Landroid/hardware/health/HealthInfo;)V+]Lcom/android/server/health/HealthInfoCallback;Lcom/android/server/BatteryService$$ExternalSyntheticLambda4;
-HPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I+]Lcom/android/server/health/HealthServiceWrapperAidl;Lcom/android/server/health/HealthServiceWrapperAidl;
-HPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I+]Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/BatteryProperty;Landroid/os/BatteryProperty;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
-HSPLcom/android/server/infra/AbstractMasterSystemService;->assertCalledByPackageOwner(Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types
-HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/SecureSettingsServiceNameResolver;,Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types
-HSPLcom/android/server/infra/AbstractMasterSystemService;->peekServiceListForUserLocked(I)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/infra/ServiceNameBaseResolver;->getDefaultServiceNameList(I)[Ljava/lang/String;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/infra/ServiceNameBaseResolver;Lcom/android/server/infra/SecureSettingsServiceNameResolver;,Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;
-HSPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/InputDevice;Landroid/view/InputDevice;]Lcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;Lcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;
+HSPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I+]Lcom/android/server/health/HealthServiceWrapperAidl;Lcom/android/server/health/HealthServiceWrapperAidl;
+HSPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I+]Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/BatteryProperty;Landroid/os/BatteryProperty;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;+]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;,Lcom/android/server/infra/SecureSettingsServiceNameResolver;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/input/KeyboardLayoutManager;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
-HSPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda1;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;,Lcom/android/server/input/KeyboardLayoutManager$2;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/Object;Ljava/lang/String;]Landroid/os/Bundle;Landroid/os/Bundle;
-HSPLcom/android/server/input/PointerIconCache;->updateDisplayDensityLocked(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/inputmethod/ImeTrackerService$History;->setFinished(Landroid/view/inputmethod/ImeTracker$Token;II)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
-HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/inputmethod/InputBindResult;+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda20;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda12;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda19;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda11;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda21;
-HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/inputmethod/InputMethodMap;Lcom/android/server/inputmethod/InputMethodMap;]Landroid/view/inputmethod/InputMethodSubtype;Landroid/view/inputmethod/InputMethodSubtype;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/inputmethod/InputMethodSettings;Lcom/android/server/inputmethod/InputMethodSettings;]Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodInfo;
-HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List;+]Lcom/android/server/inputmethod/InputMethodSettings;Lcom/android/server/inputmethod/InputMethodSettings;]Landroid/text/TextUtils$SimpleStringSplitter;Landroid/text/TextUtils$SimpleStringSplitter;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda1;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;,Lcom/android/server/input/KeyboardLayoutManager$2;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda11;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda12;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda19;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda20;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda21;
+HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List;+]Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodInfo;]Landroid/view/inputmethod/InputMethodSubtype;Landroid/view/inputmethod/InputMethodSubtype;]Lcom/android/server/inputmethod/InputMethodMap;Lcom/android/server/inputmethod/InputMethodMap;]Lcom/android/server/inputmethod/InputMethodSettings;Lcom/android/server/inputmethod/InputMethodSettings;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List;+]Landroid/text/TextUtils$SimpleStringSplitter;Landroid/text/TextUtils$SimpleStringSplitter;]Lcom/android/server/inputmethod/InputMethodSettings;Lcom/android/server/inputmethod/InputMethodSettings;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
 HPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/server/job/JobConcurrencyManager$ContextAssignment;->clear()V
@@ -1840,46 +1579,45 @@
 HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobFinished(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobStarted(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetCounts()V
-HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetStagingCount()V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->setConfig(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;
 HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->stageJob(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;
-HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V+]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
+HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
 HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HSPLcom/android/server/job/JobConcurrencyManager;->carryOutAssignmentChangesLocked(Landroid/util/ArraySet;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HSPLcom/android/server/job/JobConcurrencyManager;->cleanUpAfterAssignmentChangesLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Landroid/util/SparseIntArray;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;
-HSPLcom/android/server/job/JobConcurrencyManager;->determineAssignmentsLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
+HSPLcom/android/server/job/JobConcurrencyManager;->carryOutAssignmentChangesLocked(Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
+HSPLcom/android/server/job/JobConcurrencyManager;->cleanUpAfterAssignmentChangesLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Landroid/util/SparseIntArray;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;]Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobConcurrencyManager;->determineAssignmentsLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobConcurrencyManager;->getJobWorkTypes(Lcom/android/server/job/controllers/JobStatus;)I+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobConcurrencyManager;->getPkgStatsLocked(ILjava/lang/String;)Lcom/android/server/job/JobConcurrencyManager$PackageStats;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;
+HSPLcom/android/server/job/JobConcurrencyManager;->getPkgStatsLocked(ILjava/lang/String;)Lcom/android/server/job/JobConcurrencyManager$PackageStats;+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
 HSPLcom/android/server/job/JobConcurrencyManager;->getRunningJobsLocked()Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobConcurrencyManager;->hasImmediacyPrivilegeLocked(Lcom/android/server/job/controllers/JobStatus;Landroid/util/SparseIntArray;)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;
+HSPLcom/android/server/job/JobConcurrencyManager;->hasImmediacyPrivilegeLocked(Lcom/android/server/job/controllers/JobStatus;Landroid/util/SparseIntArray;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobConcurrencyManager;->isJobRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobConcurrencyManager;->isPkgConcurrencyLimitedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/JobConcurrencyManager;->isPkgConcurrencyLimitedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HPLcom/android/server/job/JobConcurrencyManager;->lambda$static$0(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I+]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
-HSPLcom/android/server/job/JobConcurrencyManager;->noteConcurrency(Z)V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/modules/expresslog/Histogram;Lcom/android/modules/expresslog/Histogram;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/JobConcurrencyManager;->onJobCompletedLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
-HSPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/job/JobConcurrencyManager;->refreshSystemStateLocked()Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/job/JobConcurrencyManager;->noteConcurrency(Z)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/modules/expresslog/Histogram;Lcom/android/modules/expresslog/Histogram;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobConcurrencyManager;->onJobCompletedLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobConcurrencyManager;->refreshSystemStateLocked()Z+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
 HSPLcom/android/server/job/JobConcurrencyManager;->shouldRunAsFgUserJob(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobConcurrencyManager;->shouldStopRunningJobLocked(Lcom/android/server/job/JobServiceContext;)Ljava/lang/String;+]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/PowerManager;Landroid/os/PowerManager;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
-HSPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/os/PowerManager;Landroid/os/PowerManager;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
+HPLcom/android/server/job/JobConcurrencyManager;->shouldStopRunningJobLocked(Lcom/android/server/job/JobServiceContext;)Ljava/lang/String;+]Landroid/os/PowerManager;Landroid/os/PowerManager;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V+]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;]Landroid/os/PowerManager;Landroid/os/PowerManager;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobConcurrencyManager;->updateCounterConfigLocked()V+]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HSPLcom/android/server/job/JobConcurrencyManager;->updateNonRunningPrioritiesLocked(Lcom/android/server/job/PendingJobQueue;Z)V+]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/JobConcurrencyManager;->updateNonRunningPrioritiesLocked(Lcom/android/server/job/PendingJobQueue;Z)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
 HPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(Lcom/android/server/job/JobServiceContext;ILcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;
 HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
-HSPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
 HSPLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V
 HSPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V
-HSPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;IILjava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/internal/util/jobs/RingBufferIndices;Lcom/android/internal/util/jobs/RingBufferIndices;
-HSPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobPackageTracker$PackageEntry;Lcom/android/server/job/JobPackageTracker$PackageEntry;]Lcom/android/server/job/JobPackageTracker$DataSet;Lcom/android/server/job/JobPackageTracker$DataSet;
-HSPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HSPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;IILjava/lang/String;)V+]Lcom/android/internal/util/jobs/RingBufferIndices;Lcom/android/internal/util/jobs/RingBufferIndices;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F+]Lcom/android/server/job/JobPackageTracker$DataSet;Lcom/android/server/job/JobPackageTracker$DataSet;]Lcom/android/server/job/JobPackageTracker$PackageEntry;Lcom/android/server/job/JobPackageTracker$PackageEntry;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
+HSPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
 HSPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V
-HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
 HSPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
-HSPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobPackageTracker$DataSet;Lcom/android/server/job/JobPackageTracker$DataSet;
+HSPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobPackageTracker$DataSet;Lcom/android/server/job/JobPackageTracker$DataSet;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
 HSPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V+]Lcom/android/server/job/JobPackageTracker$DataSet;Lcom/android/server/job/JobPackageTracker$DataSet;
 HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
 HSPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;->getCategory(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
@@ -1887,115 +1625,104 @@
 HSPLcom/android/server/job/JobSchedulerService$2;->millis()J
 HSPLcom/android/server/job/JobSchedulerService$4;->onUidStateChanged(IIJI)V+]Landroid/os/Handler;Lcom/android/server/job/JobSchedulerService$JobHandler;]Landroid/os/Message;Landroid/os/Message;
 HSPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isConsideredCharging()Z
-HSPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/app/job/IUserVisibleJobObserver;Landroid/app/job/IUserVisibleJobObserver$Stub$Proxy;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(Ljava/lang/String;I)V+]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;
+HSPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/job/IUserVisibleJobObserver;Landroid/app/job/IUserVisibleJobObserver$Stub$Proxy;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(Ljava/lang/String;I)V
 HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceBuilderApiPermissions(IILandroid/app/job/JobInfo;)Landroid/app/job/JobInfo;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(IILandroid/app/job/JobInfo;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/SystemService;Lcom/android/server/job/JobSchedulerService;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;
+HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(IILandroid/app/job/JobInfo;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/SystemService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
 HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobsInNamespace(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;
 HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;
+HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I+]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
 HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Ljava/lang/String;Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateJob(Landroid/app/job/JobInfo;IIILjava/lang/String;Landroid/app/job/JobWorkItem;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateJob(Landroid/app/job/JobInfo;IIILjava/lang/String;Landroid/app/job/JobWorkItem;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateNamespace(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/server/job/JobSchedulerService$LocalService;->isAppConsideredBuggy(ILjava/lang/String;ILjava/lang/String;)Z+]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Lcom/android/server/job/restrictions/JobRestriction;Lcom/android/server/job/restrictions/ThermalStatusRestriction;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V+]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;Lcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;
 HSPLcom/android/server/job/JobSchedulerService;->adjustJobBias(ILcom/android/server/job/controllers/JobStatus;)I+]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;
-HSPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
+HSPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobSchedulerService;->areUsersStartedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobSchedulerService;->cancelJob(ILjava/lang/String;III)Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
-HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HPLcom/android/server/job/JobSchedulerService;->cancelJob(ILjava/lang/String;III)Z
+HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobSchedulerService;->checkChangedJobListLocked()V+]Landroid/os/Handler;Lcom/android/server/job/JobSchedulerService$JobHandler;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;
-HSPLcom/android/server/job/JobSchedulerService;->checkIfRestricted(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/restrictions/JobRestriction;+]Lcom/android/server/job/restrictions/JobRestriction;Lcom/android/server/job/restrictions/ThermalStatusRestriction;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/JobSchedulerService;->checkIfRestricted(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/restrictions/JobRestriction;+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/restrictions/JobRestriction;Lcom/android/server/job/restrictions/ThermalStatusRestriction;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/JobSchedulerService;->deriveWorkSource(ILjava/lang/String;)Landroid/os/WorkSource;+]Lcom/android/server/SystemService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->evaluateControllerStatesLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobSchedulerService;->evaluateJobBiasLocked(Lcom/android/server/job/controllers/JobStatus;)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->getMaxJobExecutionTimeMs(Lcom/android/server/job/controllers/JobStatus;)J+]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->getMinJobExecutionGuaranteeMs(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->getPackagesForUidLocked(I)Landroid/util/ArraySet;+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
-HSPLcom/android/server/job/JobSchedulerService;->getPendingJob(ILjava/lang/String;I)Landroid/app/job/JobInfo;+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
+HSPLcom/android/server/job/JobSchedulerService;->evaluateControllerStatesLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobSchedulerService;->evaluateJobBiasLocked(Lcom/android/server/job/controllers/JobStatus;)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobSchedulerService;->getMaxJobExecutionTimeMs(Lcom/android/server/job/controllers/JobStatus;)J+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
+HSPLcom/android/server/job/JobSchedulerService;->getMinJobExecutionGuaranteeMs(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
+HSPLcom/android/server/job/JobSchedulerService;->getPendingJob(ILjava/lang/String;I)Landroid/app/job/JobInfo;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobSchedulerService;->getPendingJobQueue()Lcom/android/server/job/PendingJobQueue;
-HPLcom/android/server/job/JobSchedulerService;->getPendingJobsInNamespace(ILjava/lang/String;)Ljava/util/List;+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;II)Lcom/android/server/job/controllers/JobStatus;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;,Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;,Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService;->getPendingJobsInNamespace(ILjava/lang/String;)Ljava/util/List;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;II)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;
 HSPLcom/android/server/job/JobSchedulerService;->getUidBias(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/job/JobSchedulerService;->getUidProcState(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/job/JobSchedulerService;->hasPermission(IILjava/lang/String;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/SystemService;Lcom/android/server/job/JobSchedulerService;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HPLcom/android/server/job/JobSchedulerService;->hasPermission(IILjava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
 HSPLcom/android/server/job/JobSchedulerService;->isBatteryCharging()Z+]Lcom/android/server/job/JobSchedulerService$BatteryStateTracker;Lcom/android/server/job/JobSchedulerService$BatteryStateTracker;
 HSPLcom/android/server/job/JobSchedulerService;->isBatteryNotLow()Z+]Lcom/android/server/job/JobSchedulerService$BatteryStateTracker;Lcom/android/server/job/JobSchedulerService$BatteryStateTracker;
 HSPLcom/android/server/job/JobSchedulerService;->isComponentUsable(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
 HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
+HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/job/JobSchedulerService;->lambda$new$2(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;+]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HSPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/os/Handler;Lcom/android/server/job/JobSchedulerService$JobHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;IIZ)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonCache(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/modules/expresslog/Histogram;Lcom/android/modules/expresslog/Histogram;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;
+HPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
+HSPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V+]Landroid/os/Handler;Lcom/android/server/job/JobSchedulerService$JobHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;IIZ)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonCache(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/modules/expresslog/Histogram;Lcom/android/modules/expresslog/Histogram;]Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobPackageTracker;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(Ljava/lang/String;IJ)I+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HSPLcom/android/server/job/JobSchedulerService;->standbyBucketToBucketIndex(I)I
-HSPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
-HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
-HSPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HSPLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
-HPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
-HPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
+HSPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
-HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/server/job/JobNotificationCoordinator;]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/job/JobCompletedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
-HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/job/JobCompletedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/server/job/JobNotificationCoordinator;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V+]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
 HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V+]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
-HPLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z
 HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;
 HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;
-HSPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;I)Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HPLcom/android/server/job/JobServiceContext;->getId()I+]Ljava/lang/Object;Lcom/android/server/job/JobServiceContext;
+HSPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
-HSPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V+]Landroid/app/job/IJobService;Landroid/app/job/JobServiceEngine$JobInterface;,Landroid/app/job/IJobService$Stub$Proxy;
+HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V+]Landroid/app/job/IJobService;Landroid/app/job/IJobService$Stub$Proxy;,Landroid/app/job/JobServiceEngine$JobInterface;
 HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
 HPLcom/android/server/job/JobServiceContext;->isWithinExecutionGuaranteeTime()Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HSPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 HSPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V+]Landroid/os/Handler;Lcom/android/server/job/JobServiceContext$JobServiceHandler;
-HSPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/os/Handler;Lcom/android/server/job/JobServiceContext$JobServiceHandler;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;
-HPLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V+]Landroid/app/job/IJobService;Landroid/app/job/JobServiceEngine$JobInterface;,Landroid/app/job/IJobService$Stub$Proxy;
-HPLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
-HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V+]Landroid/os/Handler;Lcom/android/server/job/JobServiceContext$JobServiceHandler;]Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/JobServiceContext;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/JobStore$2$CopyConsumer;Lcom/android/server/job/JobStore$2$CopyConsumer;
-HPLcom/android/server/job/JobStore$2$CopyConsumer;->prepare()V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/job/JobStore$2;->addAttributesToJobTag(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HPLcom/android/server/job/JobStore$2;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Lcom/android/server/job/JobStore$2;Lcom/android/server/job/JobStore$2;
-HPLcom/android/server/job/JobStore$2;->run()V+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;,Lcom/android/server/job/JobSchedulerService$2;]Ljava/io/File;Ljava/io/File;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/job/JobStore$2$CopyConsumer;->prepare()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HPLcom/android/server/job/JobStore$2;->addAttributesToJobTag(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$2;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Lcom/android/server/job/JobStore$2;Lcom/android/server/job/JobStore$2;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HPLcom/android/server/job/JobStore$2;->run()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/io/File;Ljava/io/File;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;
 HPLcom/android/server/job/JobStore$2;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
-HPLcom/android/server/job/JobStore$2;->writeConstraintsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore$2;->writeDebugInfoToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/JobStore$2;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;,Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore$2;->writeJobsMapImpl(Landroid/util/AtomicFile;Ljava/util/List;)V+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/SystemConfigFileCommitEventLogger;Landroid/util/SystemConfigFileCommitEventLogger;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore$2;Lcom/android/server/job/JobStore$2;
-HSPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/function/Predicate;megamorphic_types]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobStore$JobSet;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/job/JobSchedulerService$DeferredJobCounter;,Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;,Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;,Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/JobStore$JobSet;->get(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore$2;->writeConstraintsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$2;->writeDebugInfoToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$2;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+HPLcom/android/server/job/JobStore$2;->writeJobsMapImpl(Landroid/util/AtomicFile;Ljava/util/List;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Landroid/util/SystemConfigFileCommitEventLogger;Landroid/util/SystemConfigFileCommitEventLogger;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/job/JobStore$2;Lcom/android/server/job/JobStore$2;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/function/Predicate;megamorphic_types
+HSPLcom/android/server/job/JobStore$JobSet;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/job/JobSchedulerService$DeferredJobCounter;,Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;,Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;,Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
+HSPLcom/android/server/job/JobStore$JobSet;->get(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lcom/android/modules/utils/TypedXmlPullParser;)V
 HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLcom/android/modules/utils/TypedXmlPullParser;IJ)Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
-HSPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
+HSPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/JobStore;->countJobsForUid(I)I+]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;
 HSPLcom/android/server/job/JobStore;->getJobByUidAndJobId(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;+]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;
 HPLcom/android/server/job/JobStore;->intArrayToString([I)Ljava/lang/String;+]Ljava/lang/Object;Ljava/util/StringJoiner;]Ljava/util/StringJoiner;Ljava/util/StringJoiner;
-HSPLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
 HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
-HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
+HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobStore$JobSet;Lcom/android/server/job/JobStore$JobSet;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HPLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;->clear()V
 HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;
@@ -2005,116 +1732,107 @@
 HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextOverrideState()I+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextTimestamp()J+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;
+HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->resetIterator(J)V
 HPLcom/android/server/job/PendingJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
-HSPLcom/android/server/job/PendingJobQueue;->addAll(Landroid/util/ArraySet;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/PendingJobQueue;->addAll(Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
 HSPLcom/android/server/job/PendingJobQueue;->contains(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/job/PendingJobQueue;->getAppJobQueue(IZ)Lcom/android/server/job/PendingJobQueue$AppJobQueue;+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HPLcom/android/server/job/PendingJobQueue;->lambda$new$0(Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;)I+]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;
-HSPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;
-HSPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
+HSPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HSPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
 HSPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;
 HSPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;
 HSPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->prepare(I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->isPackageStoppedLocked(Ljava/lang/String;I)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsLocked(II)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;JI)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;
-HSPLcom/android/server/job/controllers/BatteryController;->hasTopExemptionLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/BatteryController;Lcom/android/server/job/controllers/BatteryController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/BatteryController;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/BatteryController;Lcom/android/server/job/controllers/BatteryController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/BatteryController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/controllers/ComponentController;->getServiceProcessLocked(Lcom/android/server/job/controllers/JobStatus;)Ljava/lang/String;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/controllers/BackgroundJobsController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/BackgroundJobsController;->isPackageStoppedLocked(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsLocked(II)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;
+HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;JI)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/BatteryController;->hasTopExemptionLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/BatteryController;Lcom/android/server/job/controllers/BatteryController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/ComponentController;->getServiceProcessLocked(Lcom/android/server/job/controllers/JobStatus;)Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/job/controllers/ComponentController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/ComponentController;Lcom/android/server/job/controllers/ComponentController;
 HSPLcom/android/server/job/controllers/ComponentController;->updateComponentEnabledStateLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/ComponentController;Lcom/android/server/job/controllers/ComponentController;
 HSPLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HPLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->onBlockedStatusChanged(Landroid/net/Network;I)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
+HSPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/ConnectivityController;
 HSPLcom/android/server/job/controllers/ConnectivityController;->getNetworkLocked(Lcom/android/server/job/controllers/JobStatus;)Landroid/net/Network;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/ConnectivityController;->getNetworkMetadata(Landroid/net/Network;)Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/job/controllers/ConnectivityController;->getUidStats(ILjava/lang/String;Z)Lcom/android/server/job/controllers/ConnectivityController$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HPLcom/android/server/job/controllers/ConnectivityController;->isCongestionDelayed(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z
-HPLcom/android/server/job/controllers/ConnectivityController;->isInsane(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;
-HPLcom/android/server/job/controllers/ConnectivityController;->isMeteredAllowed(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/net/NetworkPolicyManager;Landroid/net/NetworkPolicyManager;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;
+HPLcom/android/server/job/controllers/ConnectivityController;->isInsane(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/ConnectivityController;->isMeteredAllowed(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;)Z+]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Landroid/net/NetworkPolicyManager;Landroid/net/NetworkPolicyManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/ConnectivityController;->isSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HSPLcom/android/server/job/controllers/ConnectivityController;->isStandbyExceptionRequestedLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/ConnectivityController;->isStrictSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/net/NetworkCapabilities$Builder;Landroid/net/NetworkCapabilities$Builder;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;
-HPLcom/android/server/job/controllers/ConnectivityController;->isStrongEnough(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Ljava/util/Set;Landroid/util/ArraySet;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeAdjustRegisteredCallbacksLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/os/Handler;Lcom/android/server/job/controllers/ConnectivityController$CcHandler;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/ConnectivityController;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HSPLcom/android/server/job/controllers/ConnectivityController;->onUidBiasChangedLocked(III)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/job/controllers/ConnectivityController;->isStandbyExceptionRequestedLocked(I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/job/controllers/ConnectivityController;->isStrictSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/net/NetworkCapabilities$Builder;Landroid/net/NetworkCapabilities$Builder;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/ConnectivityController;->isStrongEnough(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/job/controllers/ConnectivityController;->maybeAdjustRegisteredCallbacksLocked()V+]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/os/Handler;Lcom/android/server/job/controllers/ConnectivityController$CcHandler;]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/ConnectivityController;
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/ConnectivityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HSPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;JLandroid/net/Network;Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(ILandroid/net/Network;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
-HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(Landroid/util/ArraySet;Landroid/net/Network;)Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/lang/Object;Landroid/net/Network;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ContentObserverController$JobInstance;Lcom/android/server/job/controllers/ContentObserverController$JobInstance;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ContentObserverController$JobInstance;Lcom/android/server/job/controllers/ContentObserverController$JobInstance;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Ljava/lang/Object;Ljava/lang/String;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/PowerManager;Landroid/os/PowerManager;
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;
+HSPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;JLandroid/net/Network;Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(ILandroid/net/Network;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;
+HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(Landroid/util/ArraySet;Landroid/net/Network;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Object;Landroid/net/Network;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ContentObserverController$JobInstance;Lcom/android/server/job/controllers/ContentObserverController$JobInstance;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/ContentObserverController$JobInstance;Lcom/android/server/job/controllers/ContentObserverController$JobInstance;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/PowerManager;Landroid/os/PowerManager;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Ljava/lang/Object;Ljava/lang/String;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;
 HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;J)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/DeviceIdleJobsController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->scheduleDropNumConstraintsAlarm(Lcom/android/server/job/controllers/JobStatus;J)V+]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;]Landroid/os/Handler;Lcom/android/server/job/controllers/FlexibilityController$FcHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/Message;Landroid/os/Message;
+HSPLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->scheduleDropNumConstraintsAlarm(Lcom/android/server/job/controllers/JobStatus;J)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/os/Handler;Lcom/android/server/job/controllers/FlexibilityController$FcHandler;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->remove(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->addScore(IJ)V+]Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;
 HPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->getScore(J)I
-HSPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleBeginningElapsedLocked(Lcom/android/server/job/controllers/JobStatus;)J+]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleEndElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;
-HSPLcom/android/server/job/controllers/FlexibilityController;->getNextConstraintDropTimeElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;
+HSPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleBeginningElapsedLocked(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleEndElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;
+HSPLcom/android/server/job/controllers/FlexibilityController;->getNextConstraintDropTimeElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J+]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/FlexibilityController;->getPercentsToDropConstraints(I)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/job/controllers/FlexibilityController;->getRelevantAppliedConstraintsLocked(Lcom/android/server/job/controllers/JobStatus;)I
 HSPLcom/android/server/job/controllers/FlexibilityController;->getScoreLocked(ILjava/lang/String;J)I+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;
 HSPLcom/android/server/job/controllers/FlexibilityController;->isFlexibilitySatisfiedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/controllers/FlexibilityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;
-HPLcom/android/server/job/controllers/FlexibilityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedLocked(III)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Long;Ljava/lang/Long;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;
-HSPLcom/android/server/job/controllers/FlexibilityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;
-HSPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/idle/IdlenessTracker;Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIJJJJJII)V+]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/net/NetworkRequest$Builder;Landroid/net/NetworkRequest$Builder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/app/job/JobInfo$TriggerContentUri;Landroid/app/job/JobInfo$TriggerContentUri;]Ljava/lang/Object;Ljava/lang/String;]Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo$Builder;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/controllers/FlexibilityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/FlexibilityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;
+HSPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedLocked(III)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/FlexibilityController;Lcom/android/server/job/controllers/FlexibilityController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/FlexibilityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/idle/IdlenessTracker;Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIJJJJJII)V+]Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo$Builder;]Landroid/app/job/JobInfo$TriggerContentUri;Landroid/app/job/JobInfo$TriggerContentUri;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/net/NetworkRequest$Builder;Landroid/net/NetworkRequest$Builder;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIJJJ)V
 HSPLcom/android/server/job/controllers/JobStatus;->addDynamicConstraints(I)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->canRunInBatterySaver()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->canRunInDoze()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
-HPLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(I)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/lang/String;Ljava/lang/String;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
 HSPLcom/android/server/job/controllers/JobStatus;->getAppTraceTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J
 HSPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->getFilteredDebugTags()[Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/job/controllers/JobStatus;->getFilteredTraceTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->getFlags()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/controllers/JobStatus;->getInternalFlags()I
 HSPLcom/android/server/job/controllers/JobStatus;->getJobId()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J
-HSPLcom/android/server/job/controllers/JobStatus;->getNumRequiredFlexibleConstraints()I
 HSPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String;
 HSPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I
 HSPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I
-HSPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()Ljava/lang/String;+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlameUserId()I+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->getUid()I
 HSPLcom/android/server/job/controllers/JobStatus;->getUserId()I
-HSPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String;
+HSPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/job/controllers/JobStatus;->getWorkCount()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
@@ -2124,440 +1842,411 @@
 HSPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z
 HSPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied(I)Z
 HSPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->isReady(I)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->isRequestedExpeditedJob()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->isUserVisibleJob()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/function/Predicate;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HSPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/function/Predicate;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;
 HSPLcom/android/server/job/controllers/JobStatus;->prepareLocked()V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HSPLcom/android/server/job/controllers/JobStatus;->readinessStatusWithConstraint(IZ)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->setBackgroundNotRestrictedConstraintSatisfied(JZZ)Z
 HSPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobQuotaApproved(JZ)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->shouldBlameSourceForTimeout()Z
+HSPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z
 HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsExpeditedJob()Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/job/controllers/JobStatus;->toShortString()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
 HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked()V+]Ljava/lang/Throwable;Ljava/lang/Throwable;
 HSPLcom/android/server/job/controllers/JobStatus;->updateMediaBackupExemptionStatus()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/controllers/JobStatus;->updateNetworkBytesLocked()V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;
-HSPLcom/android/server/job/controllers/PrefetchController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;,Lcom/android/server/job/JobSchedulerService$2;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/PrefetchController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Landroid/os/Handler;Lcom/android/server/job/controllers/QuotaController$QcHandler;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Lcom/android/server/job/controllers/QuotaController$TopAppTimer;Lcom/android/server/job/controllers/QuotaController$TopAppTimer;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;
-HSPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppAdded(I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
-HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppRemoved(I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/job/controllers/JobStatus;->updateNetworkBytesLocked()V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobWorkItem;Landroid/app/job/JobWorkItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/PrefetchController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/PrefetchController;Lcom/android/server/job/controllers/PrefetchController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;
+HPLcom/android/server/job/controllers/PrefetchController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;
+HSPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;]Landroid/os/Handler;Lcom/android/server/job/controllers/QuotaController$QcHandler;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Lcom/android/server/job/controllers/QuotaController$TopAppTimer;Lcom/android/server/job/controllers/QuotaController$TopAppTimer;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppAdded(I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppRemoved(I)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HPLcom/android/server/job/controllers/QuotaController$Timer;->cancelCutoff()V
 HPLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
 HPLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
 HPLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
 HPLcom/android/server/job/controllers/QuotaController$Timer;->scheduleCutoff()V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/controllers/QuotaController$Timer;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HPLcom/android/server/job/controllers/QuotaController$TimingSession;-><init>(JJI)V
-HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
 HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->postProcess()V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->prepare()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HPLcom/android/server/job/controllers/QuotaController$UsageEventTracker;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Handler;Lcom/android/server/job/controllers/QuotaController$QcHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;
 HPLcom/android/server/job/controllers/QuotaController;->calculateTimeUntilQuotaConsumedLocked(Ljava/util/List;JJZ)J+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/job/controllers/QuotaController;->getEJDebitsLocked(ILjava/lang/String;)Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HSPLcom/android/server/job/controllers/QuotaController;->getEJLimitMsLocked(ILjava/lang/String;I)J+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
-HSPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;
+HSPLcom/android/server/job/controllers/QuotaController;->getEJDebitsLocked(ILjava/lang/String;)Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/controllers/QuotaController;->getMaxJobExecutionTimeMsLocked(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;
-HSPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Lcom/android/server/job/controllers/QuotaController$TopAppTimer;Lcom/android/server/job/controllers/QuotaController$TopAppTimer;]Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;
+HSPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Lcom/android/server/job/controllers/QuotaController$TopAppTimer;Lcom/android/server/job/controllers/QuotaController$TopAppTimer;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/controllers/QuotaController;->getRemainingExecutionTimeLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)J
-HPLcom/android/server/job/controllers/QuotaController;->getTimeUntilQuotaConsumedLocked(ILjava/lang/String;)J+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;
-HPLcom/android/server/job/controllers/QuotaController;->incrementJobCountLocked(ILjava/lang/String;I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HPLcom/android/server/job/controllers/QuotaController;->incrementTimingSessionCountLocked(ILjava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HPLcom/android/server/job/controllers/QuotaController;->invalidateAllExecutionStatsLocked(ILjava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HSPLcom/android/server/job/controllers/QuotaController;->isQuotaFreeLocked(I)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HPLcom/android/server/job/controllers/QuotaController;->getTimeUntilQuotaConsumedLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/controllers/QuotaController;->incrementJobCountLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/QuotaController;->incrementTimingSessionCountLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/QuotaController;->invalidateAllExecutionStatsLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(ILjava/lang/String;I)Z+]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;
 HSPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;
-HPLcom/android/server/job/controllers/QuotaController;->maybeScheduleCleanupAlarmLocked()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/app/AlarmManager;Landroid/app/AlarmManager;
-HSPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(JILjava/lang/String;)Landroid/util/ArraySet;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForUidLocked(I)Landroid/util/ArraySet;+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
-HSPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+HSPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V+]Landroid/os/Handler;Lcom/android/server/job/controllers/QuotaController$QcHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
+HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(JILjava/lang/String;)Landroid/util/ArraySet;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
+HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForUidLocked(I)Landroid/util/ArraySet;+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore;]Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
+HSPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HPLcom/android/server/job/controllers/QuotaController;->saveTimingSession(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$TimingSession;ZJ)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/job/controllers/QuotaController;->setConstraintSatisfied(Lcom/android/server/job/controllers/JobStatus;JZZ)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/QuotaController;->setExpeditedQuotaApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController;]Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
-HPLcom/android/server/job/controllers/QuotaController;->unprepareFromExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/QuotaController$TimedEvent;Lcom/android/server/job/controllers/QuotaController$TimingSession;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;
-HSPLcom/android/server/job/controllers/QuotaController;->updateStandbyBucket(ILjava/lang/String;I)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
+HPLcom/android/server/job/controllers/QuotaController;->unprepareFromExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;
+HSPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController$TimedEvent;Lcom/android/server/job/controllers/QuotaController$TimingSession;]Lcom/android/server/job/controllers/QuotaController$Timer;Lcom/android/server/job/controllers/QuotaController$Timer;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/QuotaController;->updateStandbyBucket(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
 HSPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/StorageController$StorageTracker;Lcom/android/server/job/controllers/StorageController$StorageTracker;
-HPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StorageController$StorageTracker;Lcom/android/server/job/controllers/StorageController$StorageTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
 HSPLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/List;Ljava/util/LinkedList;
-HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;,Ljava/util/LinkedList$ListItr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/List;Ljava/util/LinkedList;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;]Ljava/util/List;Ljava/util/LinkedList;]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/Iterator;Ljava/util/LinkedList$ListItr;,Ljava/util/PriorityQueue$Itr;]Ljava/util/List;Ljava/util/LinkedList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
 HSPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
-HSPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/List;Ljava/util/LinkedList;
-HSPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;]Ljava/util/List;Ljava/util/LinkedList;
-HSPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/List;Ljava/util/LinkedList;
+HSPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/LinkedList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HSPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
+HSPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/StateController;Lcom/android/server/job/controllers/TimeController;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/LinkedList;]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HSPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;]Ljava/util/List;Ljava/util/LinkedList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
 HSPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JLandroid/os/WorkSource;)V+]Lcom/android/server/job/controllers/TimeController;Lcom/android/server/job/controllers/TimeController;
-HSPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;ILandroid/app/AlarmManager$OnAlarmListener;JLandroid/os/WorkSource;)V+]Landroid/app/AlarmManager;Landroid/app/AlarmManager;
 HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
-HPLcom/android/server/locales/LocaleManagerService;->getApplicationLocales(Ljava/lang/String;I)Landroid/os/LocaleList;+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HPLcom/android/server/location/LocationManagerService$LocalService;->isProviderEnabledForUser(Ljava/lang/String;I)Z+]Lcom/android/server/location/LocationManagerService;Lcom/android/server/location/LocationManagerService;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/provider/LocationProviderManager;
-HSPLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/provider/LocationProviderManager;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z+]Lcom/android/server/location/injector/SettingsHelper;Lcom/android/server/location/injector/SystemSettingsHelper;]Lcom/android/server/location/injector/Injector;Lcom/android/server/location/LocationManagerService$SystemInjector;
+HSPLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;+]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z+]Lcom/android/server/location/injector/Injector;Lcom/android/server/location/LocationManagerService$SystemInjector;]Lcom/android/server/location/injector/SettingsHelper;Lcom/android/server/location/injector/SystemSettingsHelper;
 HSPLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;->add(Ljava/lang/Object;)Z+]Ljava/util/concurrent/ConcurrentLinkedDeque;Lcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;
-HPLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I+]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubInfo;]Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
-HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B+]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->updateNanoAppAuthState(JLjava/util/List;ZZ)I+]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Set;Ljava/util/HashSet;
-HSPLcom/android/server/location/contexthub/ContextHubClientManager;->onMessageFromNanoApp(ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B+]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
-HPLcom/android/server/location/contexthub/ContextHubService;->queryNanoApps(ILandroid/hardware/location/IContextHubTransactionCallback;)V+]Lcom/android/server/location/contexthub/ContextHubTransactionManager;Lcom/android/server/location/contexthub/ContextHubTransactionManager;
-HSPLcom/android/server/location/contexthub/ContextHubServiceTransaction;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I+]Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubInfo;]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B+]Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/NanoAppMessage;]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/location/contexthub/ContextHubServiceTransaction;->toString()Ljava/lang/String;
 HPLcom/android/server/location/contexthub/ContextHubServiceUtil;->createAidlContextHubMessage(SLandroid/hardware/location/NanoAppMessage;)Landroid/hardware/contexthub/ContextHubMessage;
 HSPLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppStateList([Landroid/hardware/contexthub/NanoappInfo;)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/location/contexthub/ContextHubTransactionManager;->addTransaction(Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V+]Lcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;Lcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/location/contexthub/ContextHubServiceTransaction;Lcom/android/server/location/contexthub/ContextHubTransactionManager$6;
-HSPLcom/android/server/location/contexthub/ContextHubTransactionManager;->startNextTransaction()V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Lcom/android/server/location/contexthub/ContextHubServiceTransaction;Lcom/android/server/location/contexthub/ContextHubTransactionManager$6;
-HSPLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->handleNanoappInfo([Landroid/hardware/contexthub/NanoappInfo;)V
-HSPLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->lambda$handleContextHubMessage$1(Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V+]Lcom/android/server/location/contexthub/IContextHubWrapper$ICallback;Lcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;
-HSPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;
-HSPLcom/android/server/location/contexthub/NanoAppStateManager;->updateCache(ILjava/util/List;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/HashMap$ValueIterator;]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;]Lcom/android/server/location/contexthub/NanoAppStateManager;Lcom/android/server/location/contexthub/NanoAppStateManager;]Ljava/util/HashSet;Ljava/util/HashSet;]Landroid/hardware/location/NanoAppState;Landroid/hardware/location/NanoAppState;
-HSPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog;,Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;
-HSPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog;,Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;
-HSPLcom/android/server/location/eventlog/LocalEventLog;->createEntry(ZI)I
-HSPLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/location/gnss/GnssMetrics$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I+]Lcom/android/server/location/gnss/hal/GnssNative;Lcom/android/server/location/gnss/hal/GnssNative;]Lcom/android/server/location/gnss/GnssMetrics$Statistics;Lcom/android/server/location/gnss/GnssMetrics$Statistics;]Lcom/android/server/location/gnss/GnssPowerStats;Lcom/android/server/location/gnss/GnssPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/location/injector/AppForegroundHelper;->notifyAppForeground(IZ)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Lcom/android/server/location/injector/AppForegroundHelper$AppForegroundListener;Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;,Lcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;
+HSPLcom/android/server/location/contexthub/ContextHubTransactionManager;->addTransaction(Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V+]Lcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;Lcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;]Lcom/android/server/location/contexthub/ContextHubServiceTransaction;Lcom/android/server/location/contexthub/ContextHubTransactionManager$6;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/location/contexthub/ContextHubTransactionManager;->startNextTransaction()V+]Lcom/android/server/location/contexthub/ContextHubServiceTransaction;Lcom/android/server/location/contexthub/ContextHubTransactionManager$6;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;
+HSPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I+]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
+HSPLcom/android/server/location/contexthub/NanoAppStateManager;->updateCache(ILjava/util/List;)V+]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;]Landroid/hardware/location/NanoAppState;Landroid/hardware/location/NanoAppState;]Lcom/android/server/location/contexthub/NanoAppStateManager;Lcom/android/server/location/contexthub/NanoAppStateManager;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/HashMap$ValueIterator;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;,Lcom/android/server/location/eventlog/LocationEventLog;
+HSPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;,Lcom/android/server/location/eventlog/LocationEventLog;
+HSPLcom/android/server/location/injector/AppForegroundHelper;->notifyAppForeground(IZ)V+]Lcom/android/server/location/injector/AppForegroundHelper$AppForegroundListener;Lcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HPLcom/android/server/location/injector/SystemAppOpsHelper;->noteOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/location/util/identity/CallerIdentity;Landroid/location/util/identity/CallerIdentity;
 HSPLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->getValueForUser(II)I+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z+]Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;
 HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;
-HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;]Lcom/android/server/location/listeners/ListenerMultiplexer;Lcom/android/server/location/gnss/GnssStatusProvider;,Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/provider/LocationProviderManager;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
-HSPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
+HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;]Lcom/android/server/location/listeners/ListenerMultiplexer;Lcom/android/server/location/gnss/GnssStatusProvider;,Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;
 HSPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->close()V+]Lcom/android/server/location/listeners/ListenerMultiplexer;megamorphic_types
-HPLcom/android/server/location/listeners/ListenerMultiplexer;->deliverToListeners(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/location/gnss/GnssStatusProvider$$ExternalSyntheticLambda1;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;,Lcom/android/server/location/gnss/GnssMeasurementsProvider$$ExternalSyntheticLambda0;,Lcom/android/server/location/gnss/GnssNmeaProvider$1;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda12;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;]Lcom/android/server/location/listeners/ListenerRegistration;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;,Lcom/android/server/location/gnss/GnssMeasurementsProvider$GnssMeasurementListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$GetCurrentLocationListenerRegistration;
-HSPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V+]Ljava/util/function/Predicate;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/location/listeners/ListenerMultiplexer;Lcom/android/server/location/gnss/GnssStatusProvider;,Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/gnss/GnssNmeaProvider;]Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;]Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
-HPLcom/android/server/location/listeners/ListenerRegistration;->executeOperation(Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V+]Lcom/android/internal/listeners/ListenerExecutor;Lcom/android/server/location/provider/LocationProviderManager$GetCurrentLocationListenerRegistration;,Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;,Lcom/android/server/location/gnss/GnssMeasurementsProvider$GnssMeasurementListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;
-HPLcom/android/server/location/listeners/ListenerRegistration;->lambda$executeOperation$0()Ljava/lang/Object;
-HSPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda31;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$1;->test(Landroid/location/Location;)Z+]Landroid/location/Location;Landroid/location/Location;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Landroid/location/LocationRequest;Landroid/location/LocationRequest;
-HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->operate(Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;)V+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Landroid/location/LocationResult;Landroid/location/LocationResult;]Landroid/location/util/identity/CallerIdentity;Landroid/location/util/identity/CallerIdentity;
-HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->acceptLocationChange(Landroid/location/LocationResult;)Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;+]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Lcom/android/server/location/injector/AppOpsHelper;Lcom/android/server/location/injector/SystemAppOpsHelper;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/provider/LocationProviderManager;]Landroid/location/LocationResult;Landroid/location/LocationResult;]Landroid/location/LocationRequest;Landroid/location/LocationRequest;
-HSPLcom/android/server/location/provider/LocationProviderManager$Registration;->getRequest()Landroid/location/LocationRequest;
-HSPLcom/android/server/location/provider/LocationProviderManager$Registration;->onForegroundChanged(IZ)Z+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/injector/LocationPowerSaveModeHelper;Lcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$GetCurrentLocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Landroid/location/util/identity/CallerIdentity;Landroid/location/util/identity/CallerIdentity;
-HPLcom/android/server/location/provider/LocationProviderManager;->getLastLocationUnsafe(IIZJ)Landroid/location/Location;+]Landroid/location/Location;Landroid/location/Location;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/location/provider/LocationProviderManager$LastLocation;Lcom/android/server/location/provider/LocationProviderManager$LastLocation;]Lcom/android/server/location/injector/UserInfoHelper;Lcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->deliverToListeners(Ljava/util/function/Function;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;]Lcom/android/server/location/listeners/ListenerRegistration;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;,Lcom/android/server/location/gnss/GnssMeasurementsProvider$GnssMeasurementListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationPendingIntentRegistration;]Ljava/util/function/Function;Lcom/android/server/location/gnss/GnssMeasurementsProvider$$ExternalSyntheticLambda0;,Lcom/android/server/location/gnss/GnssNmeaProvider$1;,Lcom/android/server/location/gnss/GnssStatusProvider$$ExternalSyntheticLambda1;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda12;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;
+HSPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;]Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;]Lcom/android/server/location/listeners/ListenerMultiplexer;Lcom/android/server/location/gnss/GnssStatusProvider;,Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;]Ljava/util/function/Predicate;megamorphic_types
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$1;->test(Landroid/location/Location;)Z+]Landroid/location/Location;Landroid/location/Location;]Landroid/location/LocationRequest;Landroid/location/LocationRequest;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationPendingIntentRegistration;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->operate(Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;)V+]Landroid/location/LocationResult;Landroid/location/LocationResult;]Landroid/location/util/identity/CallerIdentity;Landroid/location/util/identity/CallerIdentity;]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;,Lcom/android/server/location/provider/LocationProviderManager$LocationPendingIntentTransport;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationPendingIntentRegistration;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->acceptLocationChange(Landroid/location/LocationResult;)Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;+]Landroid/location/LocationRequest;Landroid/location/LocationRequest;]Landroid/location/LocationResult;Landroid/location/LocationResult;]Lcom/android/server/location/injector/AppOpsHelper;Lcom/android/server/location/injector/SystemAppOpsHelper;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationPendingIntentRegistration;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;
 HSPLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/location/provider/LocationProviderManager;->isVisibleToCaller()Z+]Ljava/util/Collection;Ljava/util/Collections$EmptyList;,Ljava/util/Collections$SingletonList;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/location/provider/MockableLocationProvider;Lcom/android/server/location/provider/MockableLocationProvider;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;,Ljava/util/Collections$1;
-HPLcom/android/server/location/provider/LocationProviderManager;->onReportLocation(Landroid/location/LocationResult;)V+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Landroid/location/Location;Landroid/location/Location;]Lcom/android/server/location/provider/PassiveLocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;]Lcom/android/server/location/listeners/ListenerMultiplexer;Lcom/android/server/location/provider/PassiveLocationProviderManager;,Lcom/android/server/location/provider/LocationProviderManager;]Landroid/location/LocationResult;Landroid/location/LocationResult;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/locksettings/LockSettingsService;->checkDatabaseReadPermission(Ljava/lang/String;I)V+]Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService;
-HSPLcom/android/server/locksettings/LockSettingsService;->hasPermission(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->getBoolean(Ljava/lang/String;ZI)Z+]Lcom/android/server/locksettings/LockSettingsStorage;Lcom/android/server/locksettings/LockSettingsStorage;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/locksettings/LockSettingsStorage;Lcom/android/server/locksettings/LockSettingsStorage;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/locksettings/LockSettingsStorage$Cache;Lcom/android/server/locksettings/LockSettingsStorage$Cache;]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;
-HPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->checkRecoverKeyStorePermission()V+]Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;]Landroid/content/Context;Landroid/app/Application;
-HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->maybeUpdateDiscoveryPreferenceForUid(I)V+]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$new$0(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;
-HPLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda1;-><init>(IZJI)V
+HSPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;]Lcom/android/server/locksettings/LockSettingsStorage$Cache;Lcom/android/server/locksettings/LockSettingsStorage$Cache;
+HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->maybeUpdateDiscoveryPreferenceForUid(I)V+]Landroid/os/Handler;Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;
 HSPLcom/android/server/net/NetworkManagementService$Dependencies;->getCallingUid()I
 HSPLcom/android/server/net/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
-HPLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;IZJI)V
 HPLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda3;->run()V
-HPLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceClassActivityChanged(ZIJI)V
 HSPLcom/android/server/net/NetworkManagementService;->enforceSystemUid()V+]Lcom/android/server/net/NetworkManagementService$Dependencies;Lcom/android/server/net/NetworkManagementService$Dependencies;
 HSPLcom/android/server/net/NetworkManagementService;->getFirewallChainState(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/net/NetworkManagementService;->getFirewallRuleName(II)Ljava/lang/String;
 HSPLcom/android/server/net/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
-HSPLcom/android/server/net/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/net/NetworkManagementService$NetworkManagementEventCallback;)V+]Lcom/android/server/net/NetworkManagementService$NetworkManagementEventCallback;megamorphic_types]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/net/NetworkManagementService;->isNetworkRestrictedInternal(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
+HSPLcom/android/server/net/NetworkManagementService;->isNetworkRestrictedInternal(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
 HSPLcom/android/server/net/NetworkManagementService;->setFirewallUidRule(III)V+]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
-HSPLcom/android/server/net/NetworkManagementService;->setFirewallUidRuleLocked(III)V+]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
+HSPLcom/android/server/net/NetworkManagementService;->setFirewallUidRuleLocked(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
 HSPLcom/android/server/net/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkManagementService$Dependencies;Lcom/android/server/net/NetworkManagementService$Dependencies;
-HSPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;
+HSPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V+]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->appIdleStateChanged(IZ)V
-HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->networkBlocked(IIII)V+]Lcom/android/server/net/NetworkPolicyLogger$Data;Lcom/android/server/net/NetworkPolicyLogger$Data;]Lcom/android/internal/util/RingBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;
 HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
-HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V+]Lcom/android/server/net/NetworkPolicyLogger$Data;Lcom/android/server/net/NetworkPolicyLogger$Data;]Lcom/android/internal/util/RingBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V+]Lcom/android/internal/util/RingBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;]Lcom/android/server/net/NetworkPolicyLogger$Data;Lcom/android/server/net/NetworkPolicyLogger$Data;
 HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJI)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->appIdleStateChanged(IZ)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->meteredAllowlistChanged(IZ)V+]Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;
-HSPLcom/android/server/net/NetworkPolicyLogger;->networkBlocked(ILcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;)V+]Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;
-HSPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
 HSPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V+]Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;Lcom/android/server/net/NetworkPolicyLogger$LogBuffer;
-HSPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Long;Ljava/lang/Long;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;
+HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;
 HSPLcom/android/server/net/NetworkPolicyManagerService$4;->isUidStateChangeRelevant(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;IJI)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;]Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;]Lcom/android/server/net/NetworkPolicyManagerService$4;Lcom/android/server/net/NetworkPolicyManagerService$4;
-HSPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/net/NetworkPolicyManagerService$4;Lcom/android/server/net/NetworkPolicyManagerService$4;]Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
 HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZILjava/lang/String;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;
-HSPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->deriveUidRules()I
 HSPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->updateEffectiveBlockedReasons()V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmListeners(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$sfgetLOGV()Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->getOrCreateUidBlockedStateForUid(Landroid/util/SparseArray;I)Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(I)V+]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissionUL(I)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveUL(IZ)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidExemptFromBackgroundRestrictions(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlocked(IZ)Z+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForAllowlistRulesUL(I)Z+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForDenylistRulesUL(I)Z+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->lambda$forEachUid$7(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V+]Ljava/util/function/IntConsumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda3;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->lambda$forEachUid$7(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/function/IntConsumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda3;,Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->postBlockedReasonsChangedMsg(III)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->setAppIdleWhitelist(IZ)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/net/Network;Landroid/net/Network;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Landroid/net/NetworkPolicyManager$1;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/net/NetworkTemplate;Landroid/net/NetworkTemplate;]Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;]Landroid/net/NetworkIdentity$Builder;Landroid/net/NetworkIdentity$Builder;]Landroid/net/NetworkStateSnapshot;Landroid/net/NetworkStateSnapshot;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/time/Instant;Ljava/time/Instant;]Landroid/os/Message;Landroid/os/Message;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V+]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/net/Network;Landroid/net/Network;]Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;]Landroid/net/NetworkIdentity$Builder;Landroid/net/NetworkIdentity$Builder;]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/net/NetworkStateSnapshot;Landroid/net/NetworkStateSnapshot;]Landroid/net/NetworkTemplate;Landroid/net/NetworkTemplate;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/time/Instant;Ljava/time/Instant;]Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;]Ljava/util/Iterator;Landroid/net/NetworkPolicyManager$1;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V+]Ljava/time/Clock;Landroid/os/BestClock;]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(II)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Landroid/os/BestClock;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(II)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForBackgroundUL(I)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(II)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IZ)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IZ)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempAllowlistChangeUL(I)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/UserManager;Landroid/os/UserManager;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(IIJI)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IZ)V+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IZ)V+]Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempAllowlistChangeUL(I)V+]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(IIJI)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
 HSPLcom/android/server/net/watchlist/DigestUtils;->getSha256Hash(Ljava/io/InputStream;)[B+]Ljava/io/InputStream;Ljava/io/FileInputStream;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
 HPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onConnectEvent(Ljava/lang/String;IJI)V+]Lcom/android/server/net/watchlist/WatchlistLoggingHandler;Lcom/android/server/net/watchlist/WatchlistLoggingHandler;
 HPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V+]Lcom/android/server/net/watchlist/WatchlistLoggingHandler;Lcom/android/server/net/watchlist/WatchlistLoggingHandler;
 HPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
 HPLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
-HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V+]Landroid/os/Handler;Lcom/android/server/net/watchlist/WatchlistLoggingHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/os/Bundle;Landroid/os/Bundle;
-HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/net/watchlist/WatchlistLoggingHandler;Lcom/android/server/net/watchlist/WatchlistLoggingHandler;
-HSPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;
-HSPLcom/android/server/notification/BubbleExtractor;->canPresentAsBubble(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;
-HSPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Lcom/android/server/notification/GlobalSortKeyComparator;Lcom/android/server/notification/GlobalSortKeyComparator;
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/Handler;Lcom/android/server/net/watchlist/WatchlistLoggingHandler;]Landroid/os/Message;Landroid/os/Message;
+HSPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
+HSPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->hashCode()I
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isPermittedForProfile(I)Z+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isPermittedForProfile(I)Z+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;
 HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 HSPLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;+]Landroid/os/IInterface;Landroid/service/notification/ConditionProviderService$Provider;,Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;,Landroid/service/notification/IConditionProvider$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;+]Landroid/os/IInterface;Landroid/service/notification/ConditionProviderService$Provider;,Landroid/service/notification/IConditionProvider$Stub$Proxy;,Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
 HSPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
-HSPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;,Lcom/android/server/notification/ConditionProviders;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
-HSPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/media/AudioManager;Landroid/media/AudioManager;]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;
-HSPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationComparator;Lcom/android/server/notification/NotificationComparator;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Lcom/android/server/notification/NotificationComparator;Lcom/android/server/notification/NotificationComparator;
-HPLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z+]Lcom/android/internal/util/NotificationMessagingUtil;Lcom/android/internal/util/NotificationMessagingUtil;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationComparator;Lcom/android/server/notification/NotificationComparator;
-HPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationComparator;->isSystemMax(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;,Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioManager;Landroid/media/AudioManager;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Lcom/android/server/notification/NotificationAttentionHelper;Lcom/android/server/notification/NotificationAttentionHelper;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
+HPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationComparator;Lcom/android/server/notification/NotificationComparator;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationManagerService$12;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V+]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/service/notification/Adjustment;Landroid/service/notification/Adjustment;]Ljava/lang/Object;Ljava/lang/Integer;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabled(Ljava/lang/String;)Z+]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;
+HPLcom/android/server/notification/NotificationManagerService$12;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V+]Landroid/service/notification/Adjustment;Landroid/service/notification/Adjustment;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;
-HPLcom/android/server/notification/NotificationManagerService$12;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z+]Ljava/lang/Object;Ljava/lang/String;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/notification/NotificationManagerService$12;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationManagerService$12;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
 HSPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HSPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;I)V+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/Collections$EmptyList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HPLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/NotificationManagerService$12;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;I)V+]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/notification/NotificationManagerService$12;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HPLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
 HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HPLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
+HPLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationManagerService$13;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;J)V
-HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V+]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/NotificationAttentionHelper;Lcom/android/server/notification/NotificationAttentionHelper;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;ZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService$TrimCache;Lcom/android/server/notification/NotificationManagerService$TrimCache;
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda2;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/notification/NotificationAttentionHelper;Lcom/android/server/notification/NotificationAttentionHelper;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;
+HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/os/Handler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService$TrimCache;Lcom/android/server/notification/NotificationManagerService$TrimCache;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getNotificationListenerFilter(Landroid/util/Pair;)Landroid/service/notification/NotificationListenerFilter;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->hasSensitiveContent(Lcom/android/server/notification/NotificationRecord;)Z
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isUidTrusted(I)Z
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Lcom/android/server/notification/NotificationRecord;ILandroid/service/notification/NotificationStats;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/os/Handler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/notification/NotificationManagerService$TrimCache;Lcom/android/server/notification/NotificationManagerService$TrimCache;
-HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;ILcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z+]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/internal/logging/InstanceIdSequence;Lcom/android/internal/logging/InstanceIdSequence;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HSPLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;-><init>(Landroid/os/PowerManager$WakeLock;)V
-HSPLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->finish()J+]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
-HSPLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService$TrimCache;Lcom/android/server/notification/NotificationManagerService$TrimCache;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/os/Handler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/logging/InstanceIdSequence;Lcom/android/internal/logging/InstanceIdSequence;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Lcom/android/server/notification/NotificationAttentionHelper;Lcom/android/server/notification/NotificationAttentionHelper;]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->isInLockDownMode(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
-HSPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystemOrSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
 HSPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(Ljava/lang/String;I)Z+]Lcom/android/server/notification/PermissionHelper;Lcom/android/server/notification/PermissionHelper;
 HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V+]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
-HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
 HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;J)V+]Lcom/android/server/notification/NotificationManagerService$Archive;Lcom/android/server/notification/NotificationManagerService$Archive;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
 HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
 HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;II)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Landroid/app/Notification$Action;Landroid/app/Notification$Action;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;
-HSPLcom/android/server/notification/NotificationManagerService;->checkRemoteViews(Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;)V
-HSPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Z)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Set;Ljava/util/ImmutableCollections$SetN;]Landroid/os/Handler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Lcom/android/server/SystemService;Lcom/android/server/notification/NotificationManagerService;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/PermissionHelper;Lcom/android/server/notification/PermissionHelper;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification$Action;Landroid/app/Notification$Action;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/SnoozeHelper;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/os/Handler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/SystemService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/PermissionHelper;Lcom/android/server/notification/PermissionHelper;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Set;Ljava/util/ImmutableCollections$SetN;
+HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$CallStyle;Landroid/app/Notification$CallStyle;]Lcom/android/server/SystemService;Lcom/android/server/notification/NotificationManagerService;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HPLcom/android/server/notification/NotificationManagerService;->getNotificationCount(Ljava/lang/String;IILjava/lang/String;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationRecordExtractorData;Lcom/android/server/notification/NotificationRecordExtractorData;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->isCallNotification(Ljava/lang/String;I)Z+]Landroid/telecom/TelecomManager;Landroid/telecom/TelecomManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V+]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$CallStyle;Landroid/app/Notification$CallStyle;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/AttributionSource$Builder;Landroid/content/AttributionSource$Builder;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/SystemService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationManagerService;->getNotificationCount(Ljava/lang/String;IILjava/lang/String;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationRecordExtractorData;Lcom/android/server/notification/NotificationRecordExtractorData;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrSystemUi()Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
 HSPLcom/android/server/notification/NotificationManagerService;->isInLockDownMode(I)Z+]Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker;Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker;
 HSPLcom/android/server/notification/NotificationManagerService;->isInteractionVisibleToListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->isPackagePausedOrSuspended(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
 HSPLcom/android/server/notification/NotificationManagerService;->isServiceTokenValid(Landroid/os/IInterface;)Z+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
 HSPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
-HSPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Landroid/service/notification/NotificationListenerService$Ranking;Landroid/service/notification/NotificationListenerService$Ranking;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HSPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationHistoryManager;Lcom/android/server/notification/NotificationHistoryManager;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
-HSPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationManagerService;->notifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V+]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V+]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V+]Ljava/lang/Object;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/service/notification/Adjustment;Landroid/service/notification/Adjustment;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->calculateGrantableUris()V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;
+HSPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
+HSPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/SystemService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/service/notification/NotificationListenerService$Ranking;Landroid/service/notification/NotificationListenerService$Ranking;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/NotificationHistory$HistoricalNotification$Builder;Landroid/app/NotificationHistory$HistoricalNotification$Builder;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationHistoryManager;Lcom/android/server/notification/NotificationHistoryManager;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/CharSequence;Ljava/lang/String;
+HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/service/notification/Adjustment;Landroid/service/notification/Adjustment;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationRecord;->calculateGrantableUris()V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->calculateImportance()V+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
-HSPLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
-HPLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->getFlags()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->getImportance()I
 HSPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
 HSPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;
+HSPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->getNotificationType()I+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->getSbn()Landroid/service/notification/StatusBarNotification;
 HSPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationRecord;->getUserId()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->isConversation()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/NotificationRecord;->setInterruptive(Z)V+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;
-HSPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
-HPLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$StringUri;,Landroid/net/Uri$HierarchicalUri;]Ljava/lang/Object;Ljava/lang/String;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationRecordExtractorData;-><init>(IIZZZLandroid/app/NotificationChannel;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/util/ArrayList;Ljava/util/ArrayList;IFZIZ)V
-HSPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLogReported(I)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/NotificationRecordLoggerImpl;->writeNotificationReportedAtom(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
-HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationRecord;->isConversation()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLogReported(I)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;
+HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
-HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V
-HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;
+HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V+]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;
-HSPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/notification/PermissionHelper;->isPermissionFixed(Ljava/lang/String;I)Z+]Landroid/permission/IPermissionManager;Lcom/android/server/pm/permission/PermissionManagerService;
-HSPLcom/android/server/notification/PermissionHelper;->isPermissionUserSet(Ljava/lang/String;I)Z+]Landroid/permission/IPermissionManager;Lcom/android/server/pm/permission/PermissionManagerService;
 HSPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V
-HSPLcom/android/server/notification/PreferencesHelper;->badgingEnabled(Landroid/os/UserHandle;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
-HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZIZ)V+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;
-HSPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;
-HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Ljava/lang/Object;Ljava/lang/String;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;
-HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZZLjava/util/Set;)Landroid/content/pm/ParceledListSlice;+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;,Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;,Landroid/util/ArrayMap;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;,Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;
-HSPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
+HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZZLjava/util/Set;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/time/Clock;Ljava/time/Clock$SystemClock;
+HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZIJ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
 HSPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
-HSPLcom/android/server/notification/PreferencesHelper;->isGroupBlocked(Ljava/lang/String;ILjava/lang/String;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;
 HSPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/notification/PreferencesHelper;->pullPackagePreferencesStats(Ljava/util/List;Landroid/util/ArrayMap;)V+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
-HSPLcom/android/server/notification/PreferencesHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
+HPLcom/android/server/notification/PreferencesHelper;->pullPackagePreferencesStats(Ljava/util/List;Landroid/util/ArrayMap;)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
 HSPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V
-HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;,Landroid/util/ArrayMap;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;,Landroid/util/MapCollections$ArrayIterator;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Lcom/android/server/notification/PermissionHelper;Lcom/android/server/notification/PermissionHelper;
-HSPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;]Lcom/android/server/notification/NotificationSignalExtractor;megamorphic_types
-HSPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V+]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/ShortcutHelper;->getValidShortcutInfo(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ShortcutInfo;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/content/pm/LauncherApps;Landroid/content/pm/LauncherApps;
-HSPLcom/android/server/notification/ShortcutHelper;->maybeListenForShortcutChangesForBubbles(Lcom/android/server/notification/NotificationRecord;ZLandroid/os/Handler;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/notification/PreferencesHelper;->writePackageXml(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Landroid/app/NotificationChannelGroup;Landroid/app/NotificationChannelGroup;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/PermissionHelper;Lcom/android/server/notification/PermissionHelper;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
 HSPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;+]Ljava/util/Map;Landroid/util/ArrayMap;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/Person;Landroid/app/Person;]Landroid/os/Bundle;Landroid/os/Bundle;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople;
-HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/util/LruCache;Landroid/util/LruCache;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;
-HSPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
-HSPLcom/android/server/notification/VibratorHelper;->getLongArray(Landroid/content/res/Resources;II[J)[J+]Landroid/content/res/Resources;Landroid/content/res/Resources;
-HSPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/VisibilityExtractor;Lcom/android/server/notification/VisibilityExtractor;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;
-HSPLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z+]Lcom/android/server/notification/ZenModeFiltering;Lcom/android/server/notification/ZenModeFiltering;
-HSPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPaths(Ljava/lang/String;IZ)Landroid/content/pm/overlay/OverlayPaths;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;+]Landroid/app/Person;Landroid/app/Person;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;]Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/LruCache;Landroid/util/LruCache;]Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/VisibilityExtractor;Lcom/android/server/notification/VisibilityExtractor;
+HSPLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;]Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper;
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z
 HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-HSPLcom/android/server/om/OverlayManagerSettings;->forEachMatching(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda1;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/om/OverlayIdentifier;Landroid/content/om/OverlayIdentifier;
+HSPLcom/android/server/om/OverlayManagerSettings;->forEachMatching(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V+]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;Lcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda1;
+HSPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I+]Landroid/content/om/OverlayIdentifier;Landroid/content/om/OverlayIdentifier;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/Map;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet;
-HSPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Map;Ljava/util/HashMap;,Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;]Lcom/android/server/om/OverlayReferenceMapper$Provider;Lcom/android/server/om/OverlayReferenceMapper$1;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/HashSet;,Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Lcom/android/server/om/OverlayReferenceMapper$Provider;Lcom/android/server/om/OverlayReferenceMapper$1;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/HashSet;
 HSPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V
 HSPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;
-HSPLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
 HSPLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V
-HPLcom/android/server/people/data/ConversationInfo;-><init>(Lcom/android/server/people/data/ConversationInfo$Builder;)V
-HPLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V+]Lcom/android/server/people/data/EventStore;Lcom/android/server/people/data/EventStore;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/service/notification/NotificationListenerService$RankingMap;Landroid/service/notification/NotificationListenerService$RankingMap;]Lcom/android/server/people/data/EventHistoryImpl;Lcom/android/server/people/data/EventHistoryImpl;]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/people/data/PackageData;Lcom/android/server/people/data/PackageData;]Lcom/android/server/people/data/ConversationStore;Lcom/android/server/people/data/ConversationStore;]Lcom/android/server/people/data/ConversationInfo$Builder;Lcom/android/server/people/data/ConversationInfo$Builder;
-HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/people/data/UsageStatsQueryHelper;->querySince(J)Z+]Ljava/util/function/Function;Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Ljava/util/Map;Landroid/util/ArrayMap;]Lcom/android/server/people/data/PackageData;Lcom/android/server/people/data/PackageData;]Lcom/android/server/people/data/ConversationStore;Lcom/android/server/people/data/ConversationStore;
-HPLcom/android/server/people/data/UserData;->getPackageData(Ljava/lang/String;)Lcom/android/server/people/data/PackageData;+]Ljava/util/Map;Landroid/util/ArrayMap;
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/AccessCheckingService;->access$getState$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessState;
+HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/AccessState;)V
+HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/AccessState;I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/MutableSystemState;,Lcom/android/server/permission/access/MutableUserState;
+HSPLcom/android/server/permission/access/AccessPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
+HSPLcom/android/server/permission/access/AccessPolicy;->serializePackageVersions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/AccessState;->getExternalState()Lcom/android/server/permission/access/ExternalState;
+HSPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+HSPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+HSPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/AccessState;)V
+HSPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState(I)Lcom/android/server/permission/access/MutableSystemState;
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;
+HSPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;->onStateMutated()V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/AppOpService;->evaluateModeFromPermissionFlags(II)I
+HSPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/AppOpService;->getPackageMode(Ljava/lang/String;II)I
+HSPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(ILjava/lang/String;I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModeFromPermissionState(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOp(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;ILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;I)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;
+HSPLcom/android/server/permission/access/immutable/IndexedListSet;->elementAt(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/permission/access/immutable/IndexedListSet;->getSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->getSize()I
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->keyAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->get(Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->get(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;+]Lcom/android/server/permission/access/immutable/Immutable;megamorphic_types
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermission(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermission(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/permission/Permission;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->checkPrivilegedPermissionAllowlist(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackageAndUser(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILcom/android/server/pm/pkg/PackageState;)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Iterable;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissions(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPrivilegedPermissionAllowlistState(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Ljava/lang/String;)Ljava/lang/Boolean;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getUidPermissionFlags(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->inheritImplicitPermissionStates(Lcom/android/server/permission/access/MutateStateScope;II)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->revokePermissionsOnPackageUpdate(Lcom/android/server/permission/access/MutateStateScope;I)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionByProtectionFlags(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionBySignature(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPrivilegedOrOemPermission(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;II)Z+]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionIfDynamic(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/permission/access/permission/Permission;)Lcom/android/server/permission/access/permission/Permission;
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
+HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII[IZ)V
+HSPLcom/android/server/permission/access/permission/Permission;->getGidsForUser(I)[I
+HSPLcom/android/server/permission/access/permission/PermissionFlags;->fromApiFlags(ILcom/android/server/permission/access/permission/Permission;I)I
+HSPLcom/android/server/permission/access/permission/PermissionFlags;->isAppOpGranted(I)Z
+HSPLcom/android/server/permission/access/permission/PermissionFlags;->isPermissionGranted(I)Z
+HSPLcom/android/server/permission/access/permission/PermissionFlags;->toApiFlags(I)I
+HSPLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Iterable;Ljava/util/LinkedHashSet;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;
+HSPLcom/android/server/permission/access/permission/PermissionService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+HSPLcom/android/server/permission/access/permission/PermissionService;->checkUidPermission(ILjava/lang/String;Ljava/lang/String;)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfAnyPermission(Ljava/lang/String;[Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfCrossUserPermission(IZZLjava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo(Lcom/android/server/permission/access/permission/Permission;II)Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissionsUnchecked(III)Ljava/util/ArrayList;+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getGidsForUid(I)[I+]Lcom/android/server/SystemConfig;Lcom/android/server/SystemConfig;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isSinglePermissionGranted(Lcom/android/server/permission/access/GetStateScope;IIZLjava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isUidInstantApp(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/permission/access/permission/PermissionService;->queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;I)Z
+HSPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/permission/access/util/IntExtensionsKt;->hasBits(II)Z
+HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFinally(Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V+]Ljava/lang/AutoCloseable;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;,Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/pm/SigningDetails;,Ljava/lang/Integer;,Ljava/lang/String;
 HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
 HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackageNameForApexModuleName(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->registerApkInApex(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HSPLcom/android/server/pm/AppDataHelper;->prepareAppData(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/PackageSetting;III)Ljava/util/concurrent/CompletableFuture;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/Installer$Batch;
-HSPLcom/android/server/pm/AppDataHelper;->prepareAppDataAndMigrate(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/pkg/AndroidPackage;IIZ)V+]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/AppDataHelper;->prepareAppData(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/PackageSetting;III)Ljava/util/concurrent/CompletableFuture;+]Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/Installer$Batch;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/pm/AppDataHelper;->prepareAppDataAndMigrate(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/pkg/AndroidPackage;IIZ)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
 HSPLcom/android/server/pm/AppIdSettingMap;-><init>(Lcom/android/server/pm/AppIdSettingMap;)V
-HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;
+HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
 HSPLcom/android/server/pm/AppsFilterBase;-><init>()V
-HPLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILandroid/util/ArrayMap;)Landroid/util/SparseArray;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILandroid/util/ArrayMap;)Landroid/util/SparseArray;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/AppsFilterBase;->isForceQueryable(I)Z+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
 HSPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesLibrary(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
 HSPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesPermission(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
 HSPLcom/android/server/pm/AppsFilterBase;->isRetainedImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
-HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterSnapshotImpl;,Lcom/android/server/pm/AppsFilterImpl;
-HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
 HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationUsingCache(III)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V
 HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isGloballyEnabled()Z
-HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->packageIsEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->packageIsEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updateEnabledState(Lcom/android/server/pm/pkg/AndroidPackage;)V
 HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updatePackageState(Lcom/android/server/pm/pkg/PackageStateInternal;Z)V
 HSPLcom/android/server/pm/AppsFilterImpl;->addPackage(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
-HSPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;)Landroid/util/ArraySet;+]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;)Landroid/util/ArraySet;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
 HSPLcom/android/server/pm/AppsFilterImpl;->grantImplicitAccess(IIZ)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
-HSPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
-HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;
-HPLcom/android/server/pm/AppsFilterLocked;->isForceQueryable(I)Z
+HSPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
+HSPLcom/android/server/pm/AppsFilterLocked;->isForceQueryable(I)Z
 HPLcom/android/server/pm/AppsFilterLocked;->isImplicitlyQueryable(II)Z
 HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaComponent(II)Z
 HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaPackage(II)Z
@@ -2565,141 +2254,128 @@
 HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesPermission(II)Z
 HPLcom/android/server/pm/AppsFilterLocked;->isRetainedImplicitlyQueryable(II)Z
 HSPLcom/android/server/pm/AppsFilterSnapshotImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V+]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
-HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->getVisibleListOfQueryViaComponents(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
-HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsUpdateOwner(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaComponents(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaUsesLibrary(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyComponents(Landroid/content/Intent;Ljava/util/List;Lcom/android/server/utils/WatchedArraySet;)Z+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
-HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyFilter(Landroid/content/Intent;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;
-HPLcom/android/server/pm/AppsFilterUtils;->matchesIntentFilter(Landroid/content/Intent;Landroid/content/IntentFilter;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
+HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->getVisibleListOfQueryViaComponents(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsUpdateOwner(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaComponents(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/AppsFilterUtils;->canQueryViaUsesLibrary(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyComponents(Landroid/content/Intent;Ljava/util/List;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyFilter(Landroid/content/Intent;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/AppsFilterUtils;->matchesIntentFilter(Landroid/content/Intent;Landroid/content/IntentFilter;Lcom/android/server/utils/WatchedArraySet;)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HPLcom/android/server/pm/AppsFilterUtils;->matchesPackage(Landroid/content/Intent;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HPLcom/android/server/pm/AppsFilterUtils;->matchesProviders(Ljava/util/Set;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/AppsFilterUtils;->matchesProviders(Ljava/util/Set;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;
 HSPLcom/android/server/pm/ComputerEngine$Settings;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
 HSPLcom/android/server/pm/ComputerEngine$Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getDisabledSystemPkg(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
 HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackages()Landroid/util/ArrayMap;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackages()Landroid/util/ArrayMap;+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/ComputerEngine$Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
 HSPLcom/android/server/pm/ComputerEngine$Settings;->getSettingBase(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/ComputerEngine;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;I)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/ComputerEngine;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;[Ljava/lang/String;[ZJI)V+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;,Lcom/android/server/pm/AppsFilterImpl;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/ComputerEngine;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;[Ljava/lang/String;[ZJI)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/ComputerEngine;->canViewInstantApps(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/ComputerEngine;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
-HPLcom/android/server/pm/ComputerEngine;->createForwardingResolveInfoUnchecked(Lcom/android/server/pm/WatchedIntentFilter;II)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/WatchedIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/ComputerEngine;->createForwardingResolveInfoUnchecked(Lcom/android/server/pm/WatchedIntentFilter;II)Landroid/content/pm/ResolveInfo;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/WatchedIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
 HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZLjava/lang/String;)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;
 HSPLcom/android/server/pm/ComputerEngine;->filterAppAccess(Ljava/lang/String;IIZ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
 HSPLcom/android/server/pm/ComputerEngine;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->filterOnlySystemPackages([Ljava/lang/String;)[Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->filterSdkLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->filterSdkLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/ComputerEngine;->filterSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->filterStaticSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->generatePackageInfo(Lcom/android/server/pm/pkg/PackageStateInternal;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/ApexManager$ApexManagerImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
-HSPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternal(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternalBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;+]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/lang/String;I)I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
+HSPLcom/android/server/pm/ComputerEngine;->filterStaticSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine;->generatePackageInfo(Lcom/android/server/pm/pkg/PackageStateInternal;JI)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/ApexManager$ApexManagerImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternal(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternalBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/lang/String;I)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/lang/Object;Ljava/lang/String;
 HPLcom/android/server/pm/ComputerEngine;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
 HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ComputerEngine;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/VersionedPackage;Landroid/content/pm/VersionedPackage;
-HSPLcom/android/server/pm/ComputerEngine;->getInstallSource(Ljava/lang/String;II)Lcom/android/server/pm/InstallSource;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
+HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/pm/ComputerEngine;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Landroid/content/pm/VersionedPackage;Landroid/content/pm/VersionedPackage;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->getInstallSource(Ljava/lang/String;II)Lcom/android/server/pm/InstallSource;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/ComputerEngine;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(JIIZ)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getInstalledPackagesBody(JII)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;,Landroid/util/MapCollections$ValuesCollection;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(JIIZ)Ljava/util/List;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/pm/ComputerEngine;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getInstalledPackagesBody(JII)Landroid/content/pm/ParceledListSlice;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;
 HPLcom/android/server/pm/ComputerEngine;->getInstallerPackageName(Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
-HSPLcom/android/server/pm/ComputerEngine;->getNameForUid(I)Ljava/lang/String;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
-HSPLcom/android/server/pm/ComputerEngine;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageGids(Ljava/lang/String;JI)[I+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
+HSPLcom/android/server/pm/ComputerEngine;->getNameForUid(I)Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/pm/ComputerEngine;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageGids(Ljava/lang/String;JI)[I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/ComputerEngine;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternal(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternalBody(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStartability(ZLjava/lang/String;II)I+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStateFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternal(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternalBody(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStartability(ZLjava/lang/String;II)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
 HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
 HSPLcom/android/server/pm/ComputerEngine;->getPackageStates()Landroid/util/ArrayMap;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;
-HSPLcom/android/server/pm/ComputerEngine;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
-HSPLcom/android/server/pm/ComputerEngine;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getServiceInfoBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ComputerEngine;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/pm/ComputerEngine;->getSigningDetails(I)Landroid/content/pm/SigningDetails;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getUidTargetSdkVersion(I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;+]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+HSPLcom/android/server/pm/ComputerEngine;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getServiceInfoBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ServiceInfo;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getSigningDetails(I)Landroid/content/pm/SigningDetails;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getUidTargetSdkVersion(I)I+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/ComputerEngine;->getVersion()I
 HSPLcom/android/server/pm/ComputerEngine;->hasCrossUserPermission(IIIZZ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
 HSPLcom/android/server/pm/ComputerEngine;->hasNonNegativePriority(Ljava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->hasSigningCertificate(Ljava/lang/String;[BI)Z+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
 HSPLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
-HSPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/ComputerEngine;->isCallerInstallerOfRecord(Lcom/android/server/pm/pkg/AndroidPackage;I)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;IZ)Z+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->isCallerInstallerOfRecord(Lcom/android/server/pm/pkg/AndroidPackage;I)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;IZ)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/ComputerEngine;->isImplicitImageCaptureIntentAndNotSetByDpc(Landroid/content/Intent;ILjava/lang/String;J)Z+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
 HSPLcom/android/server/pm/ComputerEngine;->isInstantAppInternal(Ljava/lang/String;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->isInstantAppInternalBody(Ljava/lang/String;II)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$StringUri;,Landroid/net/Uri$HierarchicalUri;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->isPackageSuspendedForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->isRecentsAccessingChildProfiles(II)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HPLcom/android/server/pm/ComputerEngine;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;JIZZ)Ljava/util/List;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/net/Uri;Landroid/net/Uri$StringUri;
-HSPLcom/android/server/pm/ComputerEngine;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->isInstantAppInternalBody(Ljava/lang/String;II)Z+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->isPackageSuspendedForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->isRecentsAccessingChildProfiles(II)Z+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/pm/ComputerEngine;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JJIIZZ)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;,Lcom/android/server/pm/resolution/ComponentResolver;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;
-HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIILjava/lang/String;)Ljava/util/List;+]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JJIIZZ)Ljava/util/List;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIILjava/lang/String;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;
 HSPLcom/android/server/pm/ComputerEngine;->resolveExternalPackageName(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageName(Ljava/lang/String;J)Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLocked(Ljava/lang/String;JI)Ljava/lang/String;+]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/SharedLibrariesRead;Lcom/android/server/pm/SharedLibrariesImpl;]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Landroid/content/pm/VersionedPackage;Landroid/content/pm/VersionedPackage;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/SharedUserSetting;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLocked(Ljava/lang/String;JI)Ljava/lang/String;+]Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;]Landroid/content/pm/VersionedPackage;Landroid/content/pm/VersionedPackage;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/SharedLibrariesRead;Lcom/android/server/pm/SharedLibrariesImpl;]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/SharedUserSetting;II)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z+]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
 HSPLcom/android/server/pm/ComputerEngine;->updateFlags(JI)J+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
 HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForComponent(JI)J+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZ)J+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
 HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZZ)J+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
 HSPLcom/android/server/pm/ComputerEngine;->use()Lcom/android/server/pm/Computer;
-HPLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda7;->getOrThrow()Ljava/lang/Object;
-HPLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getUserManager()Landroid/os/UserManager;
-HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfiles(Ljava/lang/String;)Ljava/util/List;+]Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;Lcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;]Lcom/android/server/pm/CrossProfileAppsServiceImpl;Lcom/android/server/pm/CrossProfileAppsServiceImpl;]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;
-HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;Lcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;
-HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->hasInteractAcrossProfilesPermission(Ljava/lang/String;II)Z
 HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->lambda$getTargetUserProfilesUnchecked$3(ILjava/lang/String;)Ljava/util/List;+]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;Lcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;]Lcom/android/server/pm/CrossProfileAppsServiceImpl;Lcom/android/server/pm/CrossProfileAppsServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/CrossProfileIntentFilter;->snapshot()Lcom/android/server/pm/CrossProfileIntentFilter;+]Lcom/android/server/utils/SnapshotCache;Lcom/android/server/pm/CrossProfileIntentFilter$1;
-HSPLcom/android/server/pm/CrossProfileIntentFilter;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/CrossProfileIntentFilter;->snapshot()Lcom/android/server/pm/CrossProfileIntentFilter;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->getIntentFilter(Lcom/android/server/pm/CrossProfileIntentFilter;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/WatchedIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/CrossProfileIntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/CrossProfileIntentFilter;)Z
@@ -2707,38 +2383,36 @@
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->snapshot(Lcom/android/server/pm/CrossProfileIntentFilter;)Lcom/android/server/pm/CrossProfileIntentFilter;+]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;+]Lcom/android/server/pm/CrossProfileIntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
 HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DefaultAppProvider;Landroid/content/Context;)V
-HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->combineFilterAndCreateQueryActivitiesResponse(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJIIZLjava/util/List;Ljava/util/List;ZZZLjava/util/function/Function;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->filterCandidatesWithDomainPreferredActivitiesLPrBody(Lcom/android/server/pm/Computer;Landroid/content/Intent;JLjava/util/List;Ljava/util/List;IZZZLjava/util/function/Function;)Ljava/util/List;+]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->combineFilterAndCreateQueryActivitiesResponse(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJIIZLjava/util/List;Ljava/util/List;ZZZLjava/util/function/Function;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->filterCandidatesWithDomainPreferredActivitiesLPrBody(Lcom/android/server/pm/Computer;Landroid/content/Intent;JLjava/util/List;Ljava/util/List;IZZZLjava/util/function/Function;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCrossProfileDomainInfo(Ljava/util/List;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IJLjava/lang/String;ZZLjava/util/function/Function;)Ljava/util/List;+]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;
-HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;+]Lcom/android/server/pm/CrossProfileResolver;Lcom/android/server/pm/DefaultCrossProfileResolver;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Ljava/util/HashSet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;
-HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
-HSPLcom/android/server/pm/DefaultCrossProfileResolver;->createForwardingResolveInfo(Lcom/android/server/pm/Computer;Lcom/android/server/pm/CrossProfileIntentFilter;Landroid/content/Intent;Ljava/lang/String;JILjava/util/function/Function;)Lcom/android/server/pm/CrossProfileDomainInfo;+]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/function/Function;Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
+HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Lcom/android/server/pm/CrossProfileResolver;Lcom/android/server/pm/DefaultCrossProfileResolver;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/DefaultCrossProfileResolver;->createForwardingResolveInfo(Lcom/android/server/pm/Computer;Lcom/android/server/pm/CrossProfileIntentFilter;Landroid/content/Intent;Ljava/lang/String;JILjava/util/function/Function;)Lcom/android/server/pm/CrossProfileDomainInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0;
 HSPLcom/android/server/pm/DexOptHelper;->getDexUseManagerLocal()Lcom/android/server/art/DexUseManagerLocal;
 HSPLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(II)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/os/Handler;Landroid/os/Handler;
 HSPLcom/android/server/pm/IPackageManagerBase;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getApplicationEnabledSetting(Ljava/lang/String;I)I+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HPLcom/android/server/pm/IPackageManagerBase;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getNameForUid(I)Ljava/lang/String;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getPackagesForUid(I)[Ljava/lang/String;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HPLcom/android/server/pm/IPackageManagerBase;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getNameForUid(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getPackagesForUid(I)[Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/pm/IPackageManagerBase;->hasSystemFeature(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/IPackageManagerBase;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->isPackageSuspendedForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/IPackageManagerBase;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->isPackageSuspendedForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/pm/IPackageManagerBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/pm/IPackageManagerBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;
-HSPLcom/android/server/pm/IPackageManagerBase;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/IPackageManagerBase;->resolveContentProvider(Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/IPackageManagerBase;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->resolveContentProvider(Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/pm/IPackageManagerBase;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;
-HSPLcom/android/server/pm/IPackageManagerBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
 HSPLcom/android/server/pm/IPackageManagerBase;->snapshot()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/InstallPackageHelper;->addForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/pkg/AndroidPackage;
 HSPLcom/android/server/pm/InstallPackageHelper;->assertPackageIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
@@ -2749,59 +2423,48 @@
 HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageNewLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
 HSPLcom/android/server/pm/InstallPackageHelper;->scanSystemPackageLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;)Landroid/util/Pair;
 HSPLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ScanResult;Lcom/android/server/pm/PackageSetting;)V
-HSPLcom/android/server/pm/InstallSource;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/pm/PackageSignatures;I)V
 HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z+]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
-HSPLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V+]Landroid/os/IInstalld;Landroid/os/IInstalld$Stub$Proxy;]Ljava/lang/Thread;Ljava/lang/Thread;,Lcom/android/server/ServiceThread;
-HPLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V+]Landroid/os/IInstalld;Landroid/os/IInstalld$Stub$Proxy;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;
+HPLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V+]Landroid/os/IInstalld;Landroid/os/IInstalld$Stub$Proxy;]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;
 HSPLcom/android/server/pm/InstantAppRegistry;->snapshot()Lcom/android/server/pm/InstantAppRegistry;
-HPLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Lcom/android/server/pm/Computer;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/InstantAppResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/KeySetManagerService;-><init>(Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/utils/WatchedArrayMap;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLcom/android/server/pm/KeySetManagerService;->addDefinedKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
 HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Lcom/android/server/pm/pkg/AndroidPackage;)V
 HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
 HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/KnownPackages;-><init>(Lcom/android/server/pm/DefaultAppProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/pm/KnownPackages;->getKnownPackageNames(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;+]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V+]Landroid/content/pm/ShortcutServiceInternal;Lcom/android/server/pm/ShortcutService$LocalService;]Landroid/os/RemoteCallbackList;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;]Landroid/content/pm/IOnAppsChangedListener;Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;,Landroid/content/pm/LauncherApps$1;]Ljava/lang/RuntimeException;Ljava/lang/IllegalStateException;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(IIIILjava/lang/String;)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V+]Landroid/content/pm/IOnAppsChangedListener;Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;]Landroid/content/pm/ShortcutServiceInternal;Lcom/android/server/pm/ShortcutService$LocalService;]Landroid/os/RemoteCallbackList;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;]Ljava/lang/RuntimeException;Ljava/lang/IllegalStateException;
 HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/content/pm/LauncherActivityInfoInternal;Landroid/content/pm/LauncherActivityInfoInternal;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/LauncherActivityInfoInternal;Landroid/content/pm/LauncherActivityInfoInternal;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;Landroid/content/pm/ShortcutQueryWrapper;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/content/pm/ShortcutServiceInternal;Lcom/android/server/pm/ShortcutService$LocalService;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
 HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isHiddenProfile(Landroid/os/UserHandle;)Z+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Landroid/os/UserManager;Landroid/os/UserManager;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
 HSPLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
 HSPLcom/android/server/pm/PackageAbiHelperImpl;->derivePackageAbi(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/String;Ljava/io/File;)Landroid/util/Pair;
-HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;
-HPLcom/android/server/pm/PackageInstallerSession;->generateInfoInternal(ZZ)Landroid/content/pm/PackageInstaller$SessionInfo;+]Ljava/io/File;Ljava/io/File;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Landroid/content/pm/PackageInstaller$SessionParams;Landroid/content/pm/PackageInstaller$SessionParams;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/pm/PackageInstallerSession;->write(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/io/File;)V+]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/pm/Checksum;Landroid/content/pm/Checksum;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/DataLoaderParams;Landroid/content/pm/DataLoaderParams;]Landroid/content/pm/InstallationFile;Landroid/content/pm/InstallationFile;
+HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/PackageInstallerSession;->generateInfoInternal(ZZ)Landroid/content/pm/PackageInstaller$SessionInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageInstaller$SessionParams;Landroid/content/pm/PackageInstaller$SessionParams;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PackageInstallerSession;->write(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/io/File;)V+]Landroid/content/pm/Checksum;Landroid/content/pm/Checksum;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;
 HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
 HSPLcom/android/server/pm/PackageKeySetData;-><init>(Lcom/android/server/pm/PackageKeySetData;)V
-HPLcom/android/server/pm/PackageManagerInternalBase;->canAccessInstantApps(II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
 HPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(Ljava/lang/String;IIZ)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationInfo(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->getKnownPackageNames(II)[Ljava/lang/String;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->getUidTargetSdkVersion(I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZ)V+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageSuspended(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->notifyComponentUsed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/pm/PackageManagerInternalBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->notifyComponentUsed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;
 HSPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
@@ -2809,12 +2472,11 @@
 HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;->produce(Ljava/lang/Class;)Ljava/lang/Object;
 HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;->accept(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/PackageManagerService$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isProtectedBroadcast(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyDexLoad(Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/art/DexUseManagerLocal;Lcom/android/server/art/DexUseManagerLocal;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Ljava/lang/Object;Ljava/lang/String;]Landroid/os/UserHandle;Landroid/os/UserHandle;
+HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isProtectedBroadcast(Ljava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/String;Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyDexLoad(Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/art/DexUseManagerLocal;Lcom/android/server/art/DexUseManagerLocal;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setComponentEnabledSetting(Landroid/content/ComponentName;IIILjava/lang/String;)V+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(Ljava/lang/String;II)Landroid/content/pm/IncrementalStatesInfo;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(Ljava/lang/String;II)Landroid/content/pm/IncrementalStatesInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getResolveIntentHelper()Lcom/android/server/pm/ResolveIntentHelper;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendPackageHelper()Lcom/android/server/pm/SuspendPackageHelper;
@@ -2822,53 +2484,50 @@
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;JII)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyPackageUse(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService$Snapshot;-><init>(Lcom/android/server/pm/PackageManagerService;I)V+]Lcom/android/server/utils/WatchedSparseBooleanArray;Lcom/android/server/utils/WatchedSparseBooleanArray;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolver;
-HSPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Lcom/android/server/pm/Computer;Ljava/lang/String;I)V+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/PackageManagerService$Snapshot;-><init>(Lcom/android/server/pm/PackageManagerService;I)V+]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolver;]Lcom/android/server/utils/WatchedSparseBooleanArray;Lcom/android/server/utils/WatchedSparseBooleanArray;
+HSPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Lcom/android/server/pm/Computer;Ljava/lang/String;I)V+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
-HSPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/PackageManagerService;->getKnownPackageNamesInternal(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;+]Lcom/android/server/pm/KnownPackages;Lcom/android/server/pm/KnownPackages;
+HSPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/Consumer;megamorphic_types
 HSPLcom/android/server/pm/PackageManagerService;->getSafeMode()Z
-HSPLcom/android/server/pm/PackageManagerService;->getSystemPackageScanFlags(Ljava/io/File;)I
-HSPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;
+HSPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$forEachInstalledPackage$60(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/function/Consumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;,Lcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda12;
-HSPLcom/android/server/pm/PackageManagerService;->notifyComponentUsed(Lcom/android/server/pm/Computer;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/PackageManagerService;->notifyPackageUseInternal(Ljava/lang/String;I)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$forEachInstalledPackage$60(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/function/Consumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda12;,Lcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;
+HSPLcom/android/server/pm/PackageManagerService;->notifyComponentUsed(Lcom/android/server/pm/Computer;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageManagerService;->notifyPackageUseInternal(Ljava/lang/String;I)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
 HSPLcom/android/server/pm/PackageManagerService;->onChange(Lcom/android/server/utils/Watchable;)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLcom/android/server/pm/PackageManagerService;->rebuildSnapshot(Lcom/android/server/pm/Computer;I)Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictions(I)V+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/PackageManagerService;->setEnabledSettingInternalLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageManager$ComponentEnabledSetting;ILjava/lang/String;)Z+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageManagerService;->setEnabledSettings(Ljava/util/List;ILjava/lang/String;)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ImmutableCollections$List12;,Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;,Lcom/android/server/pm/ComputerEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Handler;Lcom/android/server/pm/PackageHandler;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/pm/PackageManager$ComponentEnabledSetting;Landroid/content/pm/PackageManager$ComponentEnabledSetting;]Ljava/util/Map;Landroid/util/ArrayMap;]Lcom/android/server/pm/PendingPackageBroadcasts;Lcom/android/server/pm/PendingPackageBroadcasts;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/BroadcastHelper;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Lcom/android/server/pm/Computer;Ljava/lang/String;ZI)V+]Lcom/android/server/pm/PackageMonitorCallbackHelper;Lcom/android/server/pm/PackageMonitorCallbackHelper;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/Handler;Lcom/android/server/pm/PackageHandler;
+HSPLcom/android/server/pm/PackageManagerService;->setEnabledSettings(Ljava/util/List;ILjava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager$ComponentEnabledSetting;Landroid/content/pm/PackageManager$ComponentEnabledSetting;]Landroid/os/Handler;Lcom/android/server/pm/PackageHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/BroadcastHelper;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PendingPackageBroadcasts;Lcom/android/server/pm/PendingPackageBroadcasts;]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$List12;]Ljava/util/Map;Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Lcom/android/server/pm/Computer;Ljava/lang/String;ZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/Handler;Lcom/android/server/pm/PackageHandler;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/PackageMonitorCallbackHelper;Lcom/android/server/pm/PackageMonitorCallbackHelper;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer(Z)Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$Producer;megamorphic_types
 HSPLcom/android/server/pm/PackageManagerServiceInjector;->getCompatibility()Lcom/android/server/compat/PlatformCompat;+]Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerService()Lcom/android/server/pm/UserManagerService;+]Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
-HSPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->applyEnforceIntentFilterMatching(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/util/List;ZLandroid/content/Intent;Ljava/lang/String;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->applyNullActionBlocking(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/util/List;ZLandroid/content/Intent;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I+]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->componentInfoToComponent(Landroid/content/pm/ComponentInfo;Lcom/android/server/pm/resolution/ComponentResolverApi;Z)Lcom/android/internal/pm/pkg/component/ParsedMainComponent;+]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;,Landroid/content/pm/ServiceInfo;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Lcom/android/server/pm/pkg/AndroidPackage;)J+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/PackageProperty;->addAllProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageProperty;->addComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/HashMap;
 HSPLcom/android/server/pm/PackageSetting$1;->createSnapshot()Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;Z)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IILjava/util/UUID;)V
-HSPLcom/android/server/pm/PackageSetting;->copyMimeGroups(Ljava/util/Map;)V+]Ljava/util/Map;Landroid/util/ArrayMap;,Lcom/android/server/pm/Settings$KeySetToValueMap;,Ljava/util/Collections$EmptyMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$EmptyIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;,Ljava/util/Collections$EmptySet;,Landroid/util/ArraySet;
-HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;][B[B
-HSPLcom/android/server/pm/PackageSetting;->disableComponentLPw(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/PackageSetting;->enableComponentLPw(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageSetting;->copyMimeGroups(Ljava/util/Map;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$EmptyIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Lcom/android/server/pm/Settings$KeySetToValueMap;,Ljava/util/Collections$EmptyMap;]Ljava/util/Set;Landroid/util/ArraySet;,Landroid/util/MapCollections$KeySet;,Ljava/util/Collections$EmptySet;
+HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;][B[B
+HSPLcom/android/server/pm/PackageSetting;->enableComponentLPw(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/PackageSetting;->getAndroidPackage()Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->getApexModuleName()Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
 HSPLcom/android/server/pm/PackageSetting;->getAppId()I
 HSPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z
 HSPLcom/android/server/pm/PackageSetting;->getCategoryOverride()I
-HSPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->getEnabled(I)I+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
+HSPLcom/android/server/pm/PackageSetting;->getEnabled(I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/PackageSetting;->getLastUpdateTime()J
-HSPLcom/android/server/pm/PackageSetting;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState;
 HSPLcom/android/server/pm/PackageSetting;->getLoadingCompletedTime()J
-HSPLcom/android/server/pm/PackageSetting;->getLoadingProgress()F
 HSPLcom/android/server/pm/PackageSetting;->getMimeGroups()Ljava/util/Map;
 HSPLcom/android/server/pm/PackageSetting;->getPkg()Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;
 HSPLcom/android/server/pm/PackageSetting;->getPkgState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
@@ -2876,30 +2535,23 @@
 HSPLcom/android/server/pm/PackageSetting;->getSeInfo()Ljava/lang/String;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
 HSPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/PackageSetting;->getSignatures()Lcom/android/server/pm/PackageSignatures;
 HSPLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
-HSPLcom/android/server/pm/PackageSetting;->getStateForUser(Landroid/os/UserHandle;)Lcom/android/server/pm/pkg/PackageUserState;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/PackageSetting;->getStateForUser(Landroid/os/UserHandle;)Lcom/android/server/pm/pkg/PackageUserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->getTransientState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
 HSPLcom/android/server/pm/PackageSetting;->getUserStates()Landroid/util/SparseArray;
 HSPLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesOptional()[Z
 HSPLcom/android/server/pm/PackageSetting;->getUsesStaticLibraries()[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J
 HSPLcom/android/server/pm/PackageSetting;->getVersionCode()J
 HSPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageSetting;->hasSharedUser()Z
 HSPLcom/android/server/pm/PackageSetting;->isApex()Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/pm/PackageSetting;->isLoading()Z
-HSPLcom/android/server/pm/PackageSetting;->isOdm()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->isProduct()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->isScannedAsStoppedSystemApp()Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->isSystem()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageSetting;->isUpdatedSystemApp()Z+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/PackageSetting;->isVendor()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->makeCache()Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/PackageSetting;->modifyUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/pm/PackageSetting;->modifyUserStateComponents(IZZ)Lcom/android/server/pm/pkg/PackageUserStateImpl;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->modifyUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->modifyUserStateComponents(IZZ)Lcom/android/server/pm/pkg/PackageUserStateImpl;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/PackageSetting;->readUserState(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/PackageSetting;->setUserState(IJJIZZZZILandroid/util/ArrayMap;ZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;JILcom/android/server/pm/pkg/ArchiveState;)V
 HSPLcom/android/server/pm/PackageSetting;->snapshot()Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/SnapshotCache;Lcom/android/server/pm/PackageSetting$1;
@@ -2908,52 +2560,47 @@
 HSPLcom/android/server/pm/PackageSignatures;->readCertsListXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Ljava/util/ArrayList;IZLandroid/content/pm/SigningDetails$Builder;)I
 HSPLcom/android/server/pm/PackageSignatures;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;)V
 HSPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;[Landroid/content/pm/Signature;Z)V+]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;
+HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V+]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;
 HSPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0(Ljava/io/File;I)V
 HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HSPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V+]Lcom/android/server/pm/WatchedIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PreferredComponent;Lcom/android/server/pm/PreferredComponent;
+HSPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PreferredComponent;Lcom/android/server/pm/PreferredComponent;]Lcom/android/server/pm/WatchedIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/ProtectedPackages;->hasProtectedPackages(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/ProtectedPackages;->isOwnerProtectedPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;
 HSPLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Landroid/util/ArraySet;
-HSPLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z+]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;
-HSPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z+]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;
+HSPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;Lcom/android/server/SystemConfig;)Ljava/util/List;
 HSPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/Map;Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/DeletePackageAction;Ljava/util/List;Landroid/content/pm/SigningDetails;ZZ)V
 HSPLcom/android/server/pm/ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map;
 HSPLcom/android/server/pm/ResilientAtomicFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;ILjava/lang/String;Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;)V
 HSPLcom/android/server/pm/ResilientAtomicFile;->close()V
-HSPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V+]Ljava/io/FileInputStream;Ljava/io/FileInputStream;]Ljava/io/File;Ljava/io/File;]Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;
+HSPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V+]Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;]Ljava/io/File;Ljava/io/File;]Ljava/io/FileInputStream;Ljava/io/FileInputStream;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;
 HSPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;+]Ljava/io/File;Ljava/io/File;
-HSPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;+]Ljava/util/function/Supplier;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;]Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/pm/PreferredActivityHelper;
-HSPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZI)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZIZI)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;
-HSPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/pm/PreferredActivityHelper;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/util/function/Supplier;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;
+HSPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZIZI)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/ResolveIntentHelper;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLcom/android/server/pm/RestrictionsSet;->getRestrictions(I)Landroid/os/Bundle;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/RestrictionsSet;->updateRestrictions(ILandroid/os/Bundle;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V
 HSPLcom/android/server/pm/ScanPackageUtils;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/Settings$VersionInfo;ZZZ)V
 HSPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnlyLI(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
 HSPLcom/android/server/pm/ScanRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;Ljava/lang/String;)V
 HSPLcom/android/server/pm/ScanResult;-><init>(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageSetting;Ljava/util/List;ZILandroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
 HSPLcom/android/server/pm/SettingBase;-><init>(II)V
-HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V
-HSPLcom/android/server/pm/SettingBase;->copySettingBase(Lcom/android/server/pm/SettingBase;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/SettingBase;->copySettingBase(Lcom/android/server/pm/SettingBase;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;]Lcom/android/server/pm/permission/LegacyPermissionState;Lcom/android/server/pm/permission/LegacyPermissionState;
 HSPLcom/android/server/pm/SettingBase;->dispatchChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/utils/WatchableImpl;
 HSPLcom/android/server/pm/SettingBase;->onChanged()V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;
 HSPLcom/android/server/pm/SettingBase;->registerObserver(Lcom/android/server/utils/Watcher;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/utils/WatchableImpl;
 HSPLcom/android/server/pm/Settings$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
 HSPLcom/android/server/pm/Settings$2;->createSnapshot()Lcom/android/server/pm/Settings;+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl;
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPermissionsFromPermissionsState(Lcom/android/server/pm/permission/LegacyPermissionState;I)Ljava/util/List;+]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;,Ljava/util/Collections$EmptyList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/Collections$EmptyIterator;]Lcom/android/server/pm/permission/LegacyPermissionState;Lcom/android/server/pm/permission/LegacyPermissionState;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPermissionsFromPermissionsState(Lcom/android/server/pm/permission/LegacyPermissionState;I)Ljava/util/List;+]Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;]Lcom/android/server/pm/permission/LegacyPermissionState;Lcom/android/server/pm/permission/LegacyPermissionState;]Ljava/util/Collection;Ljava/util/Collections$EmptyList;,Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;)V
-HSPLcom/android/server/pm/Settings;->dispatchChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl;
 HSPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Landroid/content/ComponentName;Landroid/content/ComponentName;
+HSPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
 HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
 HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/Settings;->getSettingLPr(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/pm/AppIdSettingMap;Lcom/android/server/pm/AppIdSettingMap;
@@ -2961,94 +2608,69 @@
 HSPLcom/android/server/pm/Settings;->readPackageLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Landroid/util/ArrayMap;Ljava/util/List;Landroid/util/ArrayMap;)V
 HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(ILandroid/util/ArrayMap;)V
 HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[BZ)V
-HSPLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
 HSPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;]Lcom/android/server/pm/PackageKeySetData;Lcom/android/server/pm/PackageKeySetData;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V+]Lcom/android/server/pm/permission/LegacyPermissionSettings;Lcom/android/server/pm/permission/LegacyPermissionSettings;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/KeySetManagerService;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Lcom/android/server/pm/ResilientAtomicFile;Lcom/android/server/pm/ResilientAtomicFile;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/Settings;->writeMimeGroupLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/Map;)V+]Ljava/util/Map;Ljava/util/Collections$EmptyMap;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
-HSPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Ljava/lang/Object;Ljava/util/UUID;
-HSPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V+]Ljava/io/File;Ljava/io/File;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;]Lcom/android/internal/util/JournaledFile;Lcom/android/internal/util/JournaledFile;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
-HSPLcom/android/server/pm/Settings;->writePackageRestrictions(IJZ)V+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/pm/ResilientAtomicFile;Lcom/android/server/pm/ResilientAtomicFile;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/SuspendParams;Lcom/android/server/pm/pkg/SuspendParams;
+HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/PackageKeySetData;Lcom/android/server/pm/PackageKeySetData;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
+HSPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/KeySetManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/server/pm/ResilientAtomicFile;Lcom/android/server/pm/ResilientAtomicFile;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/permission/LegacyPermissionSettings;Lcom/android/server/pm/permission/LegacyPermissionSettings;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HSPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/util/UUID;
+HSPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/util/JournaledFile;Lcom/android/internal/util/JournaledFile;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;]Ljava/io/File;Ljava/io/File;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/Settings;->writePackageRestrictions(IJZ)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/ResilientAtomicFile;Lcom/android/server/pm/ResilientAtomicFile;]Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/SuspendParams;Lcom/android/server/pm/pkg/SuspendParams;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
 HSPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageKeySetData;Lcom/android/server/pm/PackageKeySetData;
 HSPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNextInternal(Ljava/lang/String;)Z+]Ljava/util/Stack;Ljava/util/Stack;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNextInternal(Ljava/lang/String;)Z+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/util/Stack;Ljava/util/Stack;
 HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;I)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
 HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
 HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->close()V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
 HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->finish()V+]Lcom/android/server/pm/SettingsXml$WriteSectionImpl;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;
 HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
-HPLcom/android/server/pm/ShareTargetInfo;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
 HSPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
-HSPLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V
 HSPLcom/android/server/pm/SharedLibrariesImpl;->getStaticLibraryInfos(Ljava/lang/String;)Lcom/android/server/utils/WatchedLongSparseArray;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
 HSPLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
-HSPLcom/android/server/pm/SharedUserSetting;->getPackages()Ljava/util/List;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
-HPLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V
 HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
 HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;->apply(Ljava/lang/Object;)Ljava/lang/Object;
 HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
-HPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;
-HPLcom/android/server/pm/ShortcutPackage;->ensureShortcutCountBeforePush()V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$2;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutPackage;->filter(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V+]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutLauncher;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;
-HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutMutate(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda3;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;
-HPLcom/android/server/pm/ShortcutPackage;->fromAppSearch()Lcom/android/internal/infra/AndroidFuture;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/internal/infra/AndroidFuture;Lcom/android/internal/infra/AndroidFuture;
-HPLcom/android/server/pm/ShortcutPackage;->getShortcutPackageItemFile()Ljava/io/File;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
+HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V+]Lcom/android/server/pm/ShortcutLauncher;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
+HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/function/Function;Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda3;
+HPLcom/android/server/pm/ShortcutPackage;->fromAppSearch()Lcom/android/internal/infra/AndroidFuture;+]Lcom/android/internal/infra/AndroidFuture;Lcom/android/internal/infra/AndroidFuture;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
 HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
-HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z+]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/app/Person;Landroid/app/Person;]Landroid/content/LocusId;Landroid/content/LocusId;]Ljava/util/Set;Landroid/util/ArraySet;
-HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Ljava/util/Collection;)V+]Ljava/util/Collection;Ljava/util/Arrays$ArrayList;]Ljava/util/Iterator;Ljava/util/Arrays$ArrayItr;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;
-HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/pm/ShareTargetInfo;Lcom/android/server/pm/ShareTargetInfo;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;
-HPLcom/android/server/pm/ShortcutPackage;->scheduleSaveToAppSearchLocked()V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$2;
-HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Ljava/util/Base64$Encoder;Ljava/util/Base64$Encoder;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z+]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V+]Landroid/app/Person;Landroid/app/Person;]Landroid/content/LocusId;Landroid/content/LocusId;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/Set;Landroid/util/ArraySet;
+HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/pm/ShareTargetInfo;Lcom/android/server/pm/ShareTargetInfo;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Base64$Encoder;Ljava/util/Base64$Encoder;
 HPLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
-HPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V+]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
 HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;+]Ljava/io/File;Ljava/io/File;
-HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/ShortcutService$4;->onUidStateChanged(IIJI)V+]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutService$LocalService;Lcom/android/server/pm/ShortcutService$LocalService;
-HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getFilterFromQuery$1(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z+]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HPLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V+]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService;->getStatStartTime()J+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService$LocalService;Lcom/android/server/pm/ShortcutService$LocalService;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getFilterFromQuery$1(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
 HSPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V+]Landroid/os/Handler;Landroid/os/Handler;
-HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
-HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HPLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;
-HPLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V+]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;,Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString;
-HPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HPLcom/android/server/pm/ShortcutUser;->getAppSearch(Landroid/app/appsearch/AppSearchManager$SearchContext;)Lcom/android/internal/infra/AndroidFuture;+]Landroid/app/appsearch/AppSearchManager;Landroid/app/appsearch/AppSearchManager;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;
+HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;
 HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
 HSPLcom/android/server/pm/SnapshotStatistics$BinMap;->getBin(I)I
 HSPLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;J)V+]Lcom/android/server/pm/SnapshotStatistics$BinMap;Lcom/android/server/pm/SnapshotStatistics$BinMap;
 HSPLcom/android/server/pm/SnapshotStatistics$Stats;->rebuild(IIIIZZ)V
 HSPLcom/android/server/pm/SnapshotStatistics;->rebuild(JJII)V+]Lcom/android/server/pm/SnapshotStatistics$BinMap;Lcom/android/server/pm/SnapshotStatistics$BinMap;
-HPLcom/android/server/pm/SuspendPackageHelper;->canSuspendPackageForUser(Lcom/android/server/pm/Computer;[Ljava/lang/String;II)[Z+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/SuspendPackageHelper;->isPackageSuspended(Lcom/android/server/pm/Computer;Ljava/lang/String;II)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HPLcom/android/server/pm/SuspendPackageHelper;->canSuspendPackageForUser(Lcom/android/server/pm/Computer;[Ljava/lang/String;II)[Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/ProtectedPackages;Lcom/android/server/pm/ProtectedPackages;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/SuspendPackageHelper;->isPackageSuspended(Lcom/android/server/pm/Computer;Ljava/lang/String;II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->exists(I)Z
 HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfo(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfos()[Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserProperties(I)Landroid/content/pm/UserProperties;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->hasUserRestriction(Ljava/lang/String;I)Z+]Landroid/os/Bundle;Landroid/os/Bundle;
-HPLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z+]Lcom/android/server/pm/UserManagerService$WatchedUserStates;Lcom/android/server/pm/UserManagerService$WatchedUserStates;
-HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z+]Lcom/android/server/pm/UserManagerService$WatchedUserStates;Lcom/android/server/pm/UserManagerService$WatchedUserStates;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z+]Lcom/android/server/pm/UserManagerService$WatchedUserStates;Lcom/android/server/pm/UserManagerService$WatchedUserStates;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserVisible(I)Z+]Lcom/android/server/pm/UserVisibilityMediator;Lcom/android/server/pm/UserVisibilityMediator;
 HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;->get(II)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserInfoNoChecks(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserInfoNoChecks(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->checkCreateUsersPermission(Ljava/lang/String;)V
 HSPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->checkQueryOrCreateUsersPermission(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
@@ -3056,12 +2678,10 @@
 HSPLcom/android/server/pm/UserManagerService;->exists(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;
 HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;+]Lcom/android/server/pm/RestrictionsSet;Lcom/android/server/pm/RestrictionsSet;
-HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getInternalForInjectorOnly()Lcom/android/server/pm/UserManagerInternal;
-HSPLcom/android/server/pm/UserManagerService;->getMainUserIdUnchecked()I+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
 HSPLcom/android/server/pm/UserManagerService;->getProfileIds(ILjava/lang/String;ZZ)[I+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;ZZ)Landroid/util/IntArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Landroid/util/IntArray;Landroid/util/IntArray;
+HSPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;ZZ)Landroid/util/IntArray;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getProfileType(I)Ljava/lang/String;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
@@ -3070,15 +2690,13 @@
 HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
 HSPLcom/android/server/pm/UserManagerService;->getUserDataLU(I)Lcom/android/server/pm/UserManagerService$UserData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
-HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I
 HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/pm/UserManagerService;->getUserPropertiesCopy(I)Landroid/content/pm/UserProperties;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getUserPropertiesInternal(I)Landroid/content/pm/UserProperties;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
 HPLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->getUserSwitchability(I)I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/telecom/TelecomManager;Landroid/telecom/TelecomManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
 HPLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->getUsersInternal(ZZZ)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -3087,39 +2705,34 @@
 HSPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission(I)Z
 HSPLcom/android/server/pm/UserManagerService;->hasProfile(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->hasQueryOrCreateUsersPermission()Z
-HSPLcom/android/server/pm/UserManagerService;->hasQueryUsersPermission()Z
-HSPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;
+HSPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
-HSPLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
 HSPLcom/android/server/pm/UserManagerService;->isSameProfileGroupNoChecks(II)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;
+HSPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;
 HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Ljava/io/File;Ljava/io/File;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
+HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/io/File;Ljava/io/File;
 HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Ljava/lang/String;I)Landroid/os/Bundle;
-HPLcom/android/server/pm/UserManagerService;->readEntry(Landroid/os/Bundle;Ljava/util/ArrayList;Lcom/android/modules/utils/TypedXmlPullParser;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/String;Ljava/lang/String;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/lang/Object;Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->readEntry(Landroid/os/Bundle;Ljava/util/ArrayList;Lcom/android/modules/utils/TypedXmlPullParser;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/UserManagerService;->setUserRestrictionInner(ILjava/lang/String;Z)V+]Lcom/android/server/pm/RestrictionsSet;Lcom/android/server/pm/RestrictionsSet;
 HSPLcom/android/server/pm/UserManagerService;->userExists(I)Z
 HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
-HSPLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Landroid/os/Bundle;Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
 HSPLcom/android/server/pm/UserRestrictionsUtils;->isSettingRestrictedForUser(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;I)Z+]Landroid/os/UserManager;Landroid/os/UserManager;
-HSPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z+]Ljava/util/Set;Landroid/util/ArraySet;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLcom/android/server/pm/UserVisibilityMediator;->isCurrentUserOrRunningProfileOfCurrentUser(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/pm/UserVisibilityMediator;->isUserVisible(I)Z+]Lcom/android/server/pm/UserVisibilityMediator;Lcom/android/server/pm/UserVisibilityMediator;
-HSPLcom/android/server/pm/WatchedIntentFilter;-><init>(Landroid/content/IntentFilter;)V
-HSPLcom/android/server/pm/WatchedIntentResolver;-><init>()V
-HSPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->checkClosed()V
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->close()V
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;)V+]Landroid/os/UserHandle;Landroid/os/UserHandle;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->checkClosed()V+]Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->close()V
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;+]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->close()V
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->filtered(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
@@ -3128,60 +2741,49 @@
 HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
 HSPLcom/android/server/pm/parsing/PackageCacher;->cacheResult(Ljava/io/File;ILcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
 HSPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/PackageCacher;->getCachedResult(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
 HSPLcom/android/server/pm/parsing/PackageCacher;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z
-HSPLcom/android/server/pm/parsing/PackageCacher;->toCacheEntryStatic(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)[B
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlagsExt(ILcom/android/server/pm/pkg/PackageStateInternal;)I+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;)V+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;)V+]Lcom/android/internal/pm/pkg/component/ParsedComponent;megamorphic_types
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->checkUseInstalledOrHidden(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/pkg/SharedLibraryWrapper;Lcom/android/server/pm/pkg/SharedLibraryWrapper;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Landroid/os/Bundle;Landroid/os/Bundle;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProcessInfo(Ljava/util/Map;J)Landroid/util/ArrayMap;+]Lcom/android/internal/pm/pkg/component/ParsedProcess;Lcom/android/internal/pm/pkg/component/ParsedProcessImpl;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;,Ljava/util/Collections$UnmodifiableSet;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;+]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;]Landroid/os/Bundle;Landroid/os/Bundle;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Landroid/os/Bundle;Landroid/os/Bundle;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$UnmodifiableSet;,Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/pkg/PackageStateInternal;I)Ljava/io/File;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->checkUseInstalledOrHidden(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/pkg/SharedLibraryWrapper;Lcom/android/server/pm/pkg/SharedLibraryWrapper;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;+]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Landroid/util/ArraySet;,Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;,Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/pkg/PackageStateInternal;I)Ljava/io/File;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/parsing/PackageInfoUtils;->getDeprecatedSignatures(Landroid/content/pm/SigningDetails;J)[Landroid/content/pm/Signature;+]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Lcom/android/internal/pm/parsing/pkg/PackageImpl;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;JLcom/android/server/pm/pkg/PackageUserState;)V+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;]Landroid/content/pm/overlay/OverlayPaths;Landroid/content/pm/overlay/OverlayPaths;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/pkg/ArchiveState$ArchiveActivityInfo;Lcom/android/server/pm/pkg/ArchiveState$ArchiveActivityInfo;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;
-HSPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;+]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;,Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V+]Lcom/android/internal/pm/parsing/pkg/PackageImpl;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;JLcom/android/server/pm/pkg/PackageUserState;)V+]Landroid/content/pm/overlay/OverlayPaths;Landroid/content/pm/overlay/OverlayPaths;]Lcom/android/server/pm/pkg/ArchiveState$ArchiveActivityInfo;Lcom/android/server/pm/pkg/ArchiveState$ArchiveActivityInfo;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
 HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->fillVersionCodes(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;)V+]Lcom/android/internal/pm/pkg/parsing/ParsingPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->generateAppInfoWithoutState(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getAllCodePaths(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/List;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawPrimaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawSecondaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
+HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isMatchForSystemOnly(Lcom/android/server/pm/pkg/PackageState;J)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;->getPermissionInfo(Ljava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;->getPermissionState(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache$PermissionState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;,Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;]Landroid/permission/PermissionManager$SplitPermissionInfo;Landroid/permission/PermissionManager$SplitPermissionInfo;
-HSPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I+]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/permission/PermissionManager$SplitPermissionInfo;Landroid/permission/PermissionManager$SplitPermissionInfo;]Landroid/permission/PermissionManager;Landroid/permission/PermissionManager;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;,Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
 HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(Ljava/lang/String;Ljava/lang/String;II)V+]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
-HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissions(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/permission/LegacyPermission;Lcom/android/server/pm/permission/LegacyPermission;
-HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissions(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/permission/LegacyPermission;Lcom/android/server/pm/permission/LegacyPermission;
 HSPLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;-><init>(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;)V
 HSPLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;-><init>(Ljava/lang/String;ZZI)V
 HSPLcom/android/server/pm/permission/LegacyPermissionState$UserState;-><init>(Lcom/android/server/pm/permission/LegacyPermissionState$UserState;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/permission/LegacyPermissionState;-><init>()V
-HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/pm/permission/LegacyPermissionState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/permission/LegacyPermissionState$UserState;Lcom/android/server/pm/permission/LegacyPermissionState$UserState;
-HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;
+HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkAppOpPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;)Z+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Ljava/lang/String;Landroid/content/AttributionSourceState;Ljava/lang/String;ZZZI)I
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkRuntimePermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkRuntimePermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->getAttributionChainId(ZLandroid/content/AttributionSource;)I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolveAttributionSource(Landroid/content/Context;Landroid/content/AttributionSource;)Landroid/content/AttributionSource;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/AttributionSource;Landroid/content/AttributionSource;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkUidPermission(ILjava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGidsForUid(I)[I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
@@ -3190,158 +2792,139 @@
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->-$$Nest$fgetmPermissionManagerServiceImpl(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
-HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(ILjava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(ILjava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->getPersistentDeviceId(I)Ljava/lang/String;+]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->isRegisteredAttributionSource(Landroid/content/AttributionSourceState;)Z+]Lcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;Lcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;,Lcom/android/server/pm/permission/PermissionManagerServiceImpl;
 HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/pkg/PackageStateUnserialized;-><init>(Lcom/android/server/pm/PackageSetting;)V
 HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->getLastPackageUsageTimeInMills()[J+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
 HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->isHiddenUntilInstalled()Z
 HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->isUpdatedSystemApp()Z
 HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->setLastPackageUsageTimeInMills(IJ)Lcom/android/server/pm/pkg/PackageStateUnserialized;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->updateFrom(Lcom/android/server/pm/pkg/PackageStateUnserialized;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;
-HSPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->updateFrom(Lcom/android/server/pm/pkg/PackageStateUnserialized;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;+]Landroid/content/pm/overlay/OverlayPaths$Builder;Landroid/content/pm/overlay/OverlayPaths$Builder;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;+]Landroid/content/pm/overlay/OverlayPaths$Builder;Landroid/content/pm/overlay/OverlayPaths$Builder;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getBoolean(I)Z
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponents()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponents()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledState()I
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getFirstInstallTimeMillis()J
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverrideLabelIconForComponent(Landroid/content/ComponentName;)Landroid/util/Pair;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverrideLabelIconForComponent(Landroid/content/ComponentName;)Landroid/util/Pair;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isComponentDisabled(Ljava/lang/String;)Z+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isComponentEnabled(Ljava/lang/String;)Z+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isHidden()Z
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstalled()Z
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstantApp()Z
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isQuarantined()Z+]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/pm/pkg/SuspendParams;Lcom/android/server/pm/pkg/SuspendParams;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isQuarantined()Z+]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/pkg/SuspendParams;Lcom/android/server/pm/pkg/SuspendParams;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isStopped()Z
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isSuspended()Z
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean(IZ)V
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->snapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;,Lcom/android/server/pm/pkg/PackageUserStateDefault;
+HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isEnabled(Lcom/android/server/pm/pkg/PackageUserState;ZZLjava/lang/String;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;Landroid/content/pm/ComponentInfo;J)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
 HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZLcom/android/internal/pm/pkg/component/ParsedMainComponent;J)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
 HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZZZLjava/lang/String;J)Z
-HSPLcom/android/server/pm/pkg/SharedLibraryWrapper;->getAllCodePaths()Ljava/util/List;
 HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;->onPackageStateChanged()V+]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
 HSPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V+]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;+]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->sortResults(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
-HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Landroid/util/Pair;I)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Landroid/util/Pair;I)Z+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z+]Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->addProvider(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedProvider;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addService(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedService;)V+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addService(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedService;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;+]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->sortResults(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/server/pm/resolution/ComponentResolver;->lambda$static$0(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
 HSPLcom/android/server/pm/resolution/ComponentResolver;->snapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getActivity(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
+HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getService(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedService;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
-HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProvider(Lcom/android/server/pm/Computer;Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;IJI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;Lcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;
-HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;+]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
+HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProvider(Lcom/android/server/pm/Computer;Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;IJI)Ljava/util/List;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;Lcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
 HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Ljava/util/function/BiFunction;Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/BiFunction;Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
 HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->isValidHost(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->callerIsLegacyUserSelector(IILjava/lang/String;I)Z
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/SettingsXml$Serializer;Lcom/android/server/pm/SettingsXml$Serializer;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/pm/SettingsXml$Serializer;Lcom/android/server/pm/SettingsXml$Serializer;]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
 HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->createPkgStateFromXml(Lcom/android/server/pm/SettingsXml$ReadSection;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePkgStateToXml(Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILjava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;,Lcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda0;]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;]Ljava/lang/Object;Ljava/util/UUID;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V+]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePkgStateToXml(Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILjava/util/function/Function;)V+]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;]Ljava/lang/Object;Ljava/util/UUID;]Ljava/util/function/Function;Lcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda0;,Lcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->addPackage(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/verify/domain/DomainSet;)V
 HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setLegacyUserState(Ljava/lang/String;II)Z
 HSPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->buildMockAppInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->isDomainVerificationIntent(Landroid/content/Intent;J)Z+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/net/Uri;Landroid/net/Uri$StringUri;,Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$HierarchicalUri;]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Ljava/lang/String;Ljava/util/UUID;ZLandroid/util/ArrayMap;Landroid/util/SparseArray;Ljava/lang/String;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I+]Lcom/android/internal/util/function/HexFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;
+HSPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I+]Lcom/android/internal/util/function/HexFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V+]Lcom/android/internal/util/function/HexConsumer;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;
-HPLcom/android/server/policy/AppOpsPolicy;->isDatasourceAttributionTag(ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZLcom/android/internal/util/function/OctFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/OctFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;
 HSPLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;
 HSPLcom/android/server/policy/AppOpsPolicy;->resolveSandboxedServiceOp(II)I
 HSPLcom/android/server/policy/AppOpsPolicy;->resolveUid(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;
 HSPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/DodecFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;]Lcom/android/server/policy/AppOpsPolicy;Lcom/android/server/policy/AppOpsPolicy;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Lcom/android/server/policy/PermissionPolicyService;Landroid/content/Context;)V+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addAppOps(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V+]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addExtraAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/policy/SoftRestrictedPermissionPolicy;Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;,Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;
 HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V+]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/policy/SoftRestrictedPermissionPolicy;Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;,Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;
-HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V+]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/policy/SoftRestrictedPermissionPolicy;Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;,Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
-HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z+]Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
-HSPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z+]Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V+]Ljava/util/HashSet;Ljava/util/HashSet;
-HSPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V+]Ljava/util/HashSet;Ljava/util/HashSet;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;]Landroid/os/Handler;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;
-HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->forPermission(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/policy/SoftRestrictedPermissionPolicy;+]Ljava/lang/Object;Ljava/lang/String;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/HashSet;Ljava/util/HashSet;]Landroid/os/storage/StorageManagerInternal;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V+]Landroid/os/Handler;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/HashSet;Ljava/util/HashSet;
 HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
-HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I+]Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isOccluded()Z
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;
-HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isSecure(I)Z+]Lcom/android/server/policy/keyguard/KeyguardStateMonitor;Lcom/android/server/policy/keyguard/KeyguardStateMonitor;
 HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardStateMonitor;Lcom/android/server/policy/keyguard/KeyguardStateMonitor;
-HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;
 HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
-HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->lambda$computePackageStateHash$0(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V+]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J+]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Landroid/attention/AttentionManagerInternal;Lcom/android/server/attention/AttentionManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
-HSPLcom/android/server/power/FaceDownDetector;->onSensorChanged(Landroid/hardware/SensorEvent;)V+]Ljava/time/Duration;Ljava/time/Duration;]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;]Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector;
+HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->lambda$computePackageStateHash$0(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J+]Landroid/attention/AttentionManagerInternal;Lcom/android/server/attention/AttentionManagerService$LocalService;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLcom/android/server/power/FaceDownDetector;->onSensorChanged(Landroid/hardware/SensorEvent;)V+]Landroid/hardware/Sensor;Landroid/hardware/Sensor;]Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;]Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector;]Ljava/time/Duration;Ljava/time/Duration;
 HSPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/Handler;Lcom/android/server/power/Notifier$NotifierHandler;
 HSPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
 HSPLcom/android/server/power/Notifier;->onScreenPolicyUpdate(II)V+]Landroid/os/Handler;Lcom/android/server/power/Notifier$NotifierHandler;]Landroid/os/Message;Landroid/os/Message;
-HSPLcom/android/server/power/Notifier;->onUserActivity(III)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Landroid/os/Handler;Lcom/android/server/power/Notifier$NotifierHandler;]Landroid/os/Message;Landroid/os/Message;
-HSPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/WakeLockLog;Lcom/android/server/power/WakeLockLog;
-HSPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
-HSPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/WakeLockLog;Lcom/android/server/power/WakeLockLog;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HSPLcom/android/server/power/Notifier;->sendUserActivity(II)V+]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/power/ScreenUndimDetector;Lcom/android/server/power/ScreenUndimDetector;]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/WakeLockLog;Lcom/android/server/power/WakeLockLog;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
+HSPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
 HSPLcom/android/server/power/PowerGroup;->getDesiredScreenPolicyLocked(ZZZZZ)I+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
 HSPLcom/android/server/power/PowerGroup;->getWakeLockSummaryLocked()I
 HSPLcom/android/server/power/PowerGroup;->getWakefulnessLocked()I
@@ -3352,33 +2935,32 @@
 HSPLcom/android/server/power/PowerGroup;->needSuspendBlockerLocked(ZZ)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
 HSPLcom/android/server/power/PowerGroup;->setReadyLocked(Z)Z
 HSPLcom/android/server/power/PowerGroup;->supportsSandmanLocked()Z
-HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/power/PowerGroup;->updateLocked(FZZIIFZLandroid/os/PowerSaveState;ZZZZZZ)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
+HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
 HSPLcom/android/server/power/PowerManagerService$Injector$2;->uptimeMillis()J
 HSPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeAcquireSuspendBlocker(Ljava/lang/String;)V
 HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;->handleMessage(Landroid/os/Message;)Z+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire(Ljava/lang/String;)V+]Lcom/android/server/power/PowerManagerService$NativeWrapper;Lcom/android/server/power/PowerManagerService$NativeWrapper;]Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->recordReferenceLocked(Ljava/lang/String;)V+]Landroid/util/LongArray;Landroid/util/LongArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->recordReferenceLocked(Ljava/lang/String;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongArray;Landroid/util/LongArray;
 HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release(Ljava/lang/String;)V+]Lcom/android/server/power/PowerManagerService$NativeWrapper;Lcom/android/server/power/PowerManagerService$NativeWrapper;]Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->removeReferenceLocked(Ljava/lang/String;)V+]Landroid/util/LongArray;Landroid/util/LongArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->removeReferenceLocked(Ljava/lang/String;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongArray;Landroid/util/LongArray;
 HSPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;
 HSPLcom/android/server/power/PowerManagerService$WakeLock;->getPowerGroupId()Ljava/lang/Integer;+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;
-HSPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;IILandroid/os/IWakeLockCallback;)Z
-HSPLcom/android/server/power/PowerManagerService$WakeLock;->linkToDeath()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/os/Binder;
-HSPLcom/android/server/power/PowerManagerService$WakeLock;->unlinkToDeath()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/os/Binder;
-HSPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;
+HSPLcom/android/server/power/PowerManagerService$WakeLock;->linkToDeath()V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;
+HSPLcom/android/server/power/PowerManagerService$WakeLock;->unlinkToDeath()V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;
+HSPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/power/PowerManagerService;->adjustWakeLockSummary(II)I
-HSPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
-HSPLcom/android/server/power/PowerManagerService;->areAllPowerGroupsReadyLocked()Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/PowerManagerService;->areAllPowerGroupsReadyLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
 HSPLcom/android/server/power/PowerManagerService;->doesIdleStateBlockWakeLocksLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
@@ -3386,119 +2968,103 @@
 HSPLcom/android/server/power/PowerManagerService;->getAttentiveTimeoutLocked()J
 HSPLcom/android/server/power/PowerManagerService;->getNextProfileTimeoutLocked(J)J+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(JJ)J+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutOverrideLocked(JJ)J
 HSPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked(J)J
 HSPLcom/android/server/power/PowerManagerService;->getWakeLockSummaryFlags(Lcom/android/server/power/PowerManagerService$WakeLock;)I
-HSPLcom/android/server/power/PowerManagerService;->handleSandman(I)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/service/dreams/DreamManagerInternal;Lcom/android/server/dreams/DreamManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/power/PowerManagerService;->handleSandman(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/service/dreams/DreamManagerInternal;Lcom/android/server/dreams/DreamManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(Lcom/android/server/power/PowerGroup;J)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
 HSPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
 HSPLcom/android/server/power/PowerManagerService;->isGloballyInteractiveInternal()Z
 HSPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
-HSPLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z
 HSPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z+]Lcom/android/server/power/InattentiveSleepWarningController;Lcom/android/server/power/InattentiveSleepWarningController;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
-HSPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V+]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Landroid/os/Message;Landroid/os/Message;
+HSPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
 HSPLcom/android/server/power/PowerManagerService;->scheduleUserInactivityTimeout(J)V+]Landroid/os/Handler;Landroid/os/Handler;
 HSPLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V+]Lcom/android/server/power/PowerManagerService$NativeWrapper;Lcom/android/server/power/PowerManagerService$NativeWrapper;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V+]Lcom/android/server/power/PowerManagerService$NativeWrapper;Lcom/android/server/power/PowerManagerService$NativeWrapper;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(F)V+]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z+]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
 HSPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V
 HSPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(JI)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(JI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V
-HSPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Lcom/android/server/power/batterysaver/BatterySaverStateMachine;]Lcom/android/server/power/WirelessChargerDetector;Lcom/android/server/power/WirelessChargerDetector;]Landroid/os/BatteryManagerInternal;Lcom/android/server/BatteryService$LocalService;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/internal/util/LatencyTracker;Lcom/android/internal/util/LatencyTracker;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Lcom/android/server/power/batterysaver/BatterySaverStateMachine;]Lcom/android/server/power/batterysaver/BatterySaverPolicy;Lcom/android/server/power/batterysaver/BatterySaverPolicy;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/BatteryManagerInternal;Lcom/android/server/BatteryService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Lcom/android/server/power/WirelessChargerDetector;Lcom/android/server/power/WirelessChargerDetector;]Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Lcom/android/server/power/batterysaver/BatterySaverStateMachine;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/LatencyTracker;Lcom/android/internal/util/LatencyTracker;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Lcom/android/server/power/batterysaver/BatterySaverPolicy;Lcom/android/server/power/batterysaver/BatterySaverPolicy;]Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Lcom/android/server/power/batterysaver/BatterySaverStateMachine;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
 HSPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V
-HSPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/SuspendBlocker;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Lcom/android/server/power/SuspendBlocker;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
 HSPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
-HSPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V+]Lcom/android/server/power/PowerManagerService$WakeLock;Lcom/android/server/power/PowerManagerService$WakeLock;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
+HSPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z+]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService;
 HSPLcom/android/server/power/ScreenUndimDetector;->recordScreenPolicy(II)V
-HSPLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I
-HPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->fromBytes([BJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;+]Lcom/android/server/power/WakeLockLog$LogEntry;Lcom/android/server/power/WakeLockLog$LogEntry;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
-HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I+]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
+HSPLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->fromBytes([BJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;+]Lcom/android/server/power/WakeLockLog$LogEntry;Lcom/android/server/power/WakeLockLog$LogEntry;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
+HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
 HSPLcom/android/server/power/WakeLockLog$Injector;->currentTimeMillis()J
 HSPLcom/android/server/power/WakeLockLog$LogEntry;->set(JILcom/android/server/power/WakeLockLog$TagData;I)V
 HSPLcom/android/server/power/WakeLockLog$TagData;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(Ljava/lang/String;IZ)Lcom/android/server/power/WakeLockLog$TagData;+]Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;Lcom/android/server/power/WakeLockLog$TheLog$1;]Lcom/android/server/power/WakeLockLog$TagData;Lcom/android/server/power/WakeLockLog$TagData;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
-HPLcom/android/server/power/WakeLockLog$TagDatabase;->getTag(I)Lcom/android/server/power/WakeLockLog$TagData;
-HSPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V+]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(Ljava/lang/String;IZ)Lcom/android/server/power/WakeLockLog$TagData;+]Lcom/android/server/power/WakeLockLog$TagData;Lcom/android/server/power/WakeLockLog$TagData;]Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;Lcom/android/server/power/WakeLockLog$TheLog$1;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->getTag(I)Lcom/android/server/power/WakeLockLog$TagData;
+HSPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
 HSPLcom/android/server/power/WakeLockLog$TheLog;->getAvailableSpace()I
 HSPLcom/android/server/power/WakeLockLog$TheLog;->makeSpace(I)Z+]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
-HPLcom/android/server/power/WakeLockLog$TheLog;->readEntryAt(IJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
-HPLcom/android/server/power/WakeLockLog$TheLog;->removeOldestItem()V+]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
+HSPLcom/android/server/power/WakeLockLog$TheLog;->readEntryAt(IJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
+HPLcom/android/server/power/WakeLockLog$TheLog;->removeOldestItem()V+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/power/WakeLockLog$TheLog;->removeTagIndex(I)V+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
 HSPLcom/android/server/power/WakeLockLog$TheLog;->writeBytesAt(I[BI)V
-HSPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V+]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
-HSPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;II)V+]Lcom/android/server/power/WakeLockLog$Injector;Lcom/android/server/power/WakeLockLog$Injector;]Lcom/android/server/power/WakeLockLog;Lcom/android/server/power/WakeLockLog;
+HSPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V+]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
 HSPLcom/android/server/power/WakeLockLog;->tagNameReducer(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/power/batterysaver/BatterySaverController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/power/batterysaver/BatterySaverController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->updateBatterySavingStats()V+]Lcom/android/server/power/batterysaver/BatterySavingStats;Lcom/android/server/power/batterysaver/BatterySavingStats;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;-><init>(FZZZZZZZZZZZZZZZII)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getBatterySaverPolicy(I)Landroid/os/PowerSaveState;+]Landroid/os/PowerSaveState$Builder;Landroid/os/PowerSaveState$Builder;]Lcom/android/server/power/batterysaver/BatterySaverPolicy;Lcom/android/server/power/batterysaver/BatterySaverPolicy;
 HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->getBatterySaverPolicy()Lcom/android/server/power/batterysaver/BatterySaverPolicy;+]Lcom/android/server/power/batterysaver/BatterySaverController;Lcom/android/server/power/batterysaver/BatterySaverController;
-HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;-><init>(Lcom/android/server/power/hint/HintManagerService;II[ILandroid/os/IBinder;JJ)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;
-HPLcom/android/server/power/hint/HintManagerService$AppHintSession;->close()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;->sendHint(I)V+]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
 HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;->run()V
 HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->isUidForeground(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidStateChanged$1(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/power/hint/HintManagerService$MyUidObserver;Lcom/android/server/power/hint/HintManagerService$MyUidObserver;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidStateChanged$1(II)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/hint/HintManagerService$MyUidObserver;Lcom/android/server/power/hint/HintManagerService$MyUidObserver;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
 HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidStateChanged(IIJI)V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;+]Landroid/os/SynchronousResultReceiver;Landroid/os/SynchronousResultReceiver;
+HSPLcom/android/server/power/stats/AggregatedPowerStats;->setUidState(IIIJ)V+]Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V+]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/SynchronousResultReceiver;Landroid/os/SynchronousResultReceiver;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/os/connectivity/WifiActivityEnergyInfo;)Landroid/os/connectivity/WifiActivityEnergyInfo;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->getEnergyConsumersLocked(I)Ljava/util/concurrent/CompletableFuture;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleCpuSyncDueToWakelockChange(J)Ljava/util/concurrent/Future;+]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(Ljava/util/concurrent/Future;Ljava/lang/Runnable;J)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/Future;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;]Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToProcessStateChange(IJ)V+]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
 HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZI[IZ)V+]Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;]Landroid/net/wifi/WifiManager;Landroid/net/wifi/WifiManager;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/EnergyConsumerSnapshot;Lcom/android/server/power/stats/EnergyConsumerSnapshot;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/MobileRadioPowerStatsCollector;]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda1;->onUidCpuTime(ILjava/lang/Object;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->setState(IJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Landroid/os/Parcel;Landroid/os/Parcel;
-HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->addCpuClusterSpeedDurationsMs(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;IIJ)V+]Lcom/android/server/power/stats/CpuPowerCalculator;Lcom/android/server/power/stats/CpuPowerCalculator;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZI[IZ)V+]Landroid/net/wifi/WifiManager;Landroid/net/wifi/WifiManager;]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/EnergyConsumerSnapshot;Lcom/android/server/power/stats/EnergyConsumerSnapshot;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/BluetoothPowerStatsCollector;,Lcom/android/server/power/stats/MobileRadioPowerStatsCollector;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
+HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->addCpuClusterSpeedDurationsMs(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;IIJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/CpuPowerCalculator;Lcom/android/server/power/stats/CpuPowerCalculator;
 HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->getOrCreateUidCpuClusterCharges(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)[D+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->onTimeStopped(JJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->uidProcessStateChanged(II)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->getHistoryStepDetails()Landroid/os/BatteryStats$HistoryStepDetails;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/server/am/BatteryStatsService;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->-$$Nest$mwriteSummaryToParcelLocked(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([JZ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;J)Ljava/lang/Object;+]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;J)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;J)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I
 HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(JJ)J
@@ -3509,34 +3075,27 @@
 HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;)J+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->add(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->add(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeUptime(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getRealtime(J)J
 HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getUptime(J)J
 HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->init(JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;megamorphic_types]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Landroid/os/Parcel;Landroid/os/Parcel;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/LongMultiStateCounter;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->getTotalCountLocked()J+]Lcom/android/internal/os/LongMultiStateCounter;Lcom/android/internal/os/LongMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->writeToParcel(Landroid/os/Parcel;)V+]Lcom/android/internal/os/LongMultiStateCounter;Lcom/android/internal/os/LongMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;megamorphic_types]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/HashMap$KeyIterator;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/Clock;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
 HPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Ljava/lang/String;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/server/power/stats/BatteryStatsImpl$Timer;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;IJJ)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->ensureNetworkActivityLocked()V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
 HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getEnergyConsumptionUC(I)J+]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
@@ -3544,148 +3103,121 @@
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorStats()Landroid/util/SparseArray;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getUid()I
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V
 HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->maybeScheduleExternalStatsSync(II)V+]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/os/LongArrayMultiStateCounter;Lcom/android/internal/os/LongArrayMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/LongArrayMultiStateCounter;Lcom/android/internal/os/LongArrayMultiStateCounter;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;->exists(I)Z
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->clearPendingRemovedUidsLocked()V+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Ljava/util/Queue;Ljava/util/LinkedList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeDelta(Landroid/net/NetworkStats;Landroid/net/NetworkStats;)Ljava/util/List;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeDelta(Landroid/net/NetworkStats;Landroid/net/NetworkStats;)Ljava/util/List;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptimeLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;JJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I+]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->markPartialTimersAsEligible()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteModemControllerActivity(Landroid/telephony/ModemActivityInfo;JJJLandroid/app/usage/NetworkStatsManager;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/MobileRadioPowerCalculator;Lcom/android/server/power/stats/MobileRadioPowerCalculator;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Landroid/net/NetworkStats$1;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Landroid/util/SparseDoubleArray;Landroid/util/SparseDoubleArray;]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Lcom/android/internal/os/RailStats;Lcom/android/internal/os/RailStats;]Landroid/telephony/ModemActivityInfo;Landroid/telephony/ModemActivityInfo;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenStateLocked(IIJJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyItemTagLocked(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->readKernelUidCpuFreqTimesLocked(Ljava/util/ArrayList;ZZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteModemControllerActivity(Landroid/telephony/ModemActivityInfo;JJJLandroid/app/usage/NetworkStatsManager;)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Landroid/telephony/ModemActivityInfo;Landroid/telephony/ModemActivityInfo;]Landroid/util/SparseDoubleArray;Landroid/util/SparseDoubleArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Lcom/android/internal/os/RailStats;Lcom/android/internal/os/RailStats;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/MobileRadioPowerCalculator;Lcom/android/server/power/stats/MobileRadioPowerCalculator;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/BatteryStats$HistoryEventTracker;Landroid/os/BatteryStats$HistoryEventTracker;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Landroid/os/BatteryStats$HistoryEventTracker;Landroid/os/BatteryStats$HistoryEventTracker;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
 HSPLcom/android/server/power/stats/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordHistoryEventLocked(JJILjava/lang/String;I)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->reportChangesToStatsLog(III)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;]Landroid/os/BatteryStats$LevelStepTracker;Landroid/os/BatteryStats$LevelStepTracker;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->trackPerProcStateCpuTimes()Z
-HPLcom/android/server/power/stats/BatteryStatsImpl;->updateBluetoothStateLocked(Landroid/bluetooth/BluetoothActivityEnergyInfo;JJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;]Landroid/bluetooth/BluetoothActivityEnergyInfo;Landroid/bluetooth/BluetoothActivityEnergyInfo;]Landroid/bluetooth/UidTraffic;Landroid/bluetooth/UidTraffic;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuEnergyConsumerStatsLocked([JLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimesForAllUids()V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/internal/os/LongArrayMultiStateCounter;Lcom/android/internal/os/LongArrayMultiStateCounter;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/internal/os/KernelSingleUidTimeReader;Lcom/android/internal/os/KernelSingleUidTimeReader;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/CpuPowerStatsCollector;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/HashMap;Ljava/util/HashMap;,Lcom/android/server/power/stats/KernelWakelockStats;]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRailStatsLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V+]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiState(Landroid/os/connectivity/WifiActivityEnergyInfo;JJJLandroid/app/usage/NetworkStatsManager;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/WifiPowerStatsCollector;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Landroid/net/NetworkStats$1;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/RailStats;Lcom/android/internal/os/RailStats;]Landroid/os/connectivity/WifiActivityEnergyInfo;Landroid/os/connectivity/WifiActivityEnergyInfo;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;]Lcom/android/internal/os/MonotonicClock;Lcom/android/internal/os/MonotonicClock;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Landroid/util/MapCollections$MapIterator;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;,Landroid/util/MapCollections$MapIterator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/HashMap$EntrySet;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BatteryStats$LevelStepTracker;Landroid/os/BatteryStats$LevelStepTracker;
-HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->getCurrentBatteryUsageStats(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/BatteryUsageStatsQuery;J)Landroid/os/BatteryUsageStats;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/PowerCalculator;megamorphic_types]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsExporter;Lcom/android/server/power/stats/PowerStatsExporter;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/BatteryUsageStatsProvider;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
-HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->verify(Landroid/os/BatteryUsageStats;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/os/BatteryUsageStats;Landroid/os/BatteryUsageStats;]Landroid/os/UidBatteryConsumer;Landroid/os/UidBatteryConsumer;
-HPLcom/android/server/power/stats/BluetoothPowerCalculator;->calculateApp(Landroid/os/UidBatteryConsumer$Builder;Lcom/android/server/power/stats/BluetoothPowerCalculator$PowerAndDuration;Landroid/os/BatteryUsageStatsQuery;)V+]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Lcom/android/server/power/stats/BluetoothPowerCalculator;Lcom/android/server/power/stats/BluetoothPowerCalculator;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V+]Landroid/os/BatteryStats$LevelStepTracker;Landroid/os/BatteryStats$LevelStepTracker;]Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuEnergyConsumerStatsLocked([JLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;,Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiState(Landroid/os/connectivity/WifiActivityEnergyInfo;JJJLandroid/app/usage/NetworkStatsManager;)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Landroid/os/connectivity/WifiActivityEnergyInfo;Landroid/os/connectivity/WifiActivityEnergyInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Lcom/android/internal/os/RailStats;Lcom/android/internal/os/RailStats;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/WifiPowerStatsCollector;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V+]Landroid/os/BatteryStats$LevelStepTracker;Landroid/os/BatteryStats$LevelStepTracker;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/MonotonicClock;Lcom/android/internal/os/MonotonicClock;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/HashMap$EntrySet;
+HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->getCurrentBatteryUsageStats(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/BatteryUsageStatsQuery;J)Landroid/os/BatteryUsageStats;+]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/BatteryUsageStatsProvider;]Lcom/android/server/power/stats/PowerCalculator;megamorphic_types]Lcom/android/server/power/stats/PowerStatsExporter;Lcom/android/server/power/stats/PowerStatsExporter;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->verify(Landroid/os/BatteryUsageStats;)V+]Landroid/os/BatteryUsageStats;Landroid/os/BatteryUsageStats;]Landroid/os/UidBatteryConsumer;Landroid/os/UidBatteryConsumer;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BluetoothPowerCalculator;->calculateApp(Landroid/os/UidBatteryConsumer$Builder;Lcom/android/server/power/stats/BluetoothPowerCalculator$PowerAndDuration;Landroid/os/BatteryUsageStatsQuery;)V+]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;]Lcom/android/server/power/stats/BluetoothPowerCalculator;Lcom/android/server/power/stats/BluetoothPowerCalculator;
 HPLcom/android/server/power/stats/CpuPowerCalculator;->calculatePerCpuFreqPowerMah(IIJ)D+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;
-HSPLcom/android/server/power/stats/EnergyConsumerSnapshot;->updateAndGetDelta([Landroid/hardware/power/stats/EnergyConsumerResult;I)Lcom/android/server/power/stats/EnergyConsumerSnapshot$EnergyConsumerDeltaData;+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Landroid/system/suspend/internal/ISuspendControlServiceInternal;Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy;
+HSPLcom/android/server/power/stats/CpuPowerStatsProcessor;->estimateUidPowerConsumption(Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/CpuPowerStatsLayout;Lcom/android/server/power/stats/CpuPowerStatsLayout;]Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/PowerStatsLayout;Lcom/android/server/power/stats/CpuPowerStatsLayout;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/EnergyConsumerSnapshot;->updateAndGetDelta([Landroid/hardware/power/stats/EnergyConsumerResult;I)Lcom/android/server/power/stats/EnergyConsumerSnapshot$EnergyConsumerDeltaData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Landroid/system/suspend/internal/ISuspendControlServiceInternal;Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy;]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;
 HSPLcom/android/server/power/stats/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->updateVersion(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
 HSPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;
-HPLcom/android/server/power/stats/MobileRadioPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Lcom/android/server/power/stats/MobileRadioPowerCalculator;Lcom/android/server/power/stats/MobileRadioPowerCalculator;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$1;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/AggregateBatteryConsumer$Builder;Landroid/os/AggregateBatteryConsumer$Builder;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
-HPLcom/android/server/power/stats/PowerCalculator;->getPowerModel(JLandroid/os/BatteryUsageStatsQuery;)I+]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;
+HPLcom/android/server/power/stats/MobileRadioPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Landroid/os/AggregateBatteryConsumer$Builder;Landroid/os/AggregateBatteryConsumer$Builder;]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/MobileRadioPowerCalculator;Lcom/android/server/power/stats/MobileRadioPowerCalculator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/MultiStateStats$Factory;->getSerialState([I)I+]Lcom/android/server/power/stats/MultiStateStats$Factory;Lcom/android/server/power/stats/MultiStateStats$Factory;
+HSPLcom/android/server/power/stats/MultiStateStats$Factory;->setStateInComposite(III)I
+HSPLcom/android/server/power/stats/MultiStateStats$States;->forEachTrackedStateCombination(Ljava/util/function/Consumer;[Lcom/android/server/power/stats/MultiStateStats$States;[II)V+]Ljava/util/function/Consumer;Lcom/android/server/power/stats/MultiStateStats$$ExternalSyntheticLambda0;,Lcom/android/server/power/stats/MultiStateStats$$ExternalSyntheticLambda1;,Lcom/android/server/power/stats/PowerStatsExporter$$ExternalSyntheticLambda1;,Lcom/android/server/power/stats/PowerStatsExporter$$ExternalSyntheticLambda2;
+HSPLcom/android/server/power/stats/MultiStateStats;->getStats([J[I)V+]Lcom/android/server/power/stats/MultiStateStats$Factory;Lcom/android/server/power/stats/MultiStateStats$Factory;
+HSPLcom/android/server/power/stats/MultiStateStats;->setState(IIJ)V+]Lcom/android/server/power/stats/MultiStateStats$Factory;Lcom/android/server/power/stats/MultiStateStats$Factory;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/MultiStateStats;Lcom/android/server/power/stats/MultiStateStats;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->createUidStats(Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats$UidStats;J)V+]Lcom/android/server/power/stats/MultiStateStats$Factory;Lcom/android/server/power/stats/MultiStateStats$Factory;]Lcom/android/server/power/stats/MultiStateStats;Lcom/android/server/power/stats/MultiStateStats;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->getUidStats(I)Lcom/android/server/power/stats/PowerComponentAggregatedPowerStats$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/MultiStateStats$States;Lcom/android/server/power/stats/MultiStateStats$States;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->getUidStats([JI[I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/MultiStateStats;Lcom/android/server/power/stats/MultiStateStats;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->setState(IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/MultiStateStats$States;Lcom/android/server/power/stats/MultiStateStats$States;]Lcom/android/server/power/stats/MultiStateStats;Lcom/android/server/power/stats/MultiStateStats;
+HSPLcom/android/server/power/stats/PowerComponentAggregatedPowerStats;->setUidState(IIIJ)V+]Lcom/android/server/power/stats/MultiStateStats$States;Lcom/android/server/power/stats/MultiStateStats$States;]Lcom/android/server/power/stats/MultiStateStats;Lcom/android/server/power/stats/MultiStateStats;
+HSPLcom/android/server/power/stats/PowerStatsAggregator;->aggregatePowerStats(JJLjava/util/function/Consumer;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/BatteryStatsHistoryIterator;Lcom/android/internal/os/BatteryStatsHistoryIterator;]Lcom/android/server/power/stats/AggregatedPowerStats;Lcom/android/server/power/stats/AggregatedPowerStats;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/PowerStatsExporter$$ExternalSyntheticLambda0;,Lcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda2;
 HSPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HPLcom/android/server/power/stats/UsageBasedPowerEstimator;->calculatePower(J)D
-HPLcom/android/server/power/stats/VideoPowerCalculator;->calculateApp(Landroid/os/UidBatteryConsumer$Builder;Lcom/android/server/power/stats/VideoPowerCalculator$PowerAndDuration;Landroid/os/BatteryStats$Uid;J)V+]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
-HPLcom/android/server/power/stats/WakelockPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/AggregateBatteryConsumer$Builder;Landroid/os/AggregateBatteryConsumer$Builder;]Lcom/android/server/power/stats/WakelockPowerCalculator;Lcom/android/server/power/stats/WakelockPowerCalculator;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
-HPLcom/android/server/power/stats/WakelockPowerCalculator;->calculateApp(Lcom/android/server/power/stats/WakelockPowerCalculator$PowerAndDuration;Landroid/os/BatteryStats$Uid;JI)V+]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/power/stats/WifiPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/AggregateBatteryConsumer$Builder;Landroid/os/AggregateBatteryConsumer$Builder;]Lcom/android/server/power/stats/WifiPowerCalculator;Lcom/android/server/power/stats/WifiPowerCalculator;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;
-HPLcom/android/server/power/stats/WifiPowerCalculator;->calculateApp(Lcom/android/server/power/stats/WifiPowerCalculator$PowerDurationAndTraffic;Landroid/os/BatteryStats$Uid;IJIZJ)V+]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Lcom/android/server/power/stats/WifiPowerCalculator;Lcom/android/server/power/stats/WifiPowerCalculator;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;->parseWakeup(Ljava/lang/String;JJLcom/android/server/power/stats/wakeups/IrqDeviceMap;)Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;+]Lcom/android/server/power/stats/wakeups/IrqDeviceMap;Lcom/android/server/power/stats/wakeups/IrqDeviceMap;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/lang/String;Ljava/lang/String;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/util/function/LongSupplier;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionFor(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->logWakeupAttribution(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/power/stats/WifiPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Landroid/os/AggregateBatteryConsumer$Builder;Landroid/os/AggregateBatteryConsumer$Builder;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryUsageStats$Builder;]Landroid/os/BatteryUsageStatsQuery;Landroid/os/BatteryUsageStatsQuery;]Landroid/os/UidBatteryConsumer$Builder;Landroid/os/UidBatteryConsumer$Builder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/WifiPowerCalculator;Lcom/android/server/power/stats/WifiPowerCalculator;
+HPLcom/android/server/power/stats/WifiPowerCalculator;->calculateApp(Lcom/android/server/power/stats/WifiPowerCalculator$PowerDurationAndTraffic;Landroid/os/BatteryStats$Uid;IJIZJ)V+]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/WifiPowerCalculator;Lcom/android/server/power/stats/WifiPowerCalculator;
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;->parseWakeup(Ljava/lang/String;JJLcom/android/server/power/stats/wakeups/IrqDeviceMap;)Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/wakeups/IrqDeviceMap;Lcom/android/server/power/stats/wakeups/IrqDeviceMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/function/LongSupplier;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionFor(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->logWakeupAttribution(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteUidProcessState(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakeupTimeAndReason(JJLjava/lang/String;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
 HPLcom/android/server/powerstats/BatteryTrigger$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
 HSPLcom/android/server/powerstats/PowerStatsService;->getHandler()Landroid/os/Handler;
-HPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullOnDevicePowerMeasurement(ILjava/util/List;)I+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/Map;Ljava/util/HashMap;
-HPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullSubsystemSleepState(ILjava/util/List;)I+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforceObserveSensorPrivacyPermission()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V+]Ljava/util/List;Landroid/net/Uri$PathSegments;]Lcom/android/server/slice/DirtyTracker;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullOnDevicePowerMeasurement(ILjava/util/List;)I+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/slice/DirtyTracker;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;]Ljava/util/List;Landroid/net/Uri$PathSegments;
 HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->isPathPrefixMatch([Ljava/lang/String;[Ljava/lang/String;)Z
-HPLcom/android/server/slice/SliceClientPermissions;->createFrom(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/slice/DirtyTracker;)Lcom/android/server/slice/SliceClientPermissions;+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser;
-HPLcom/android/server/slice/SliceClientPermissions;->getOrCreateAuthority(Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;+]Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/SlicePermissionManager$PkgUser;]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;
-HPLcom/android/server/slice/SliceClientPermissions;->hasPermission(Landroid/net/Uri;I)Z+]Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;
 HPLcom/android/server/slice/SliceManagerService;->getProviderPkg(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;
-HPLcom/android/server/slice/SliceManagerService;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V+]Lcom/android/server/slice/SlicePermissionManager;Lcom/android/server/slice/SlicePermissionManager;
 HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Lcom/android/server/slice/SlicePermissionManager$PkgUser;,Ljava/lang/Class;
 HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->hashCode()I+]Ljava/lang/Object;Ljava/lang/String;
-HPLcom/android/server/slice/SlicePermissionManager;->getClient(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions;+]Lcom/android/server/slice/SlicePermissionManager$ParserHolder;Lcom/android/server/slice/SlicePermissionManager$ParserHolder;
-HPLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V+]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;]Lcom/android/server/slice/SliceProviderPermissions;Lcom/android/server/slice/SliceProviderPermissions;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;
-HSPLcom/android/server/smartspace/SmartspaceManagerService$SmartspaceManagerStub;->requestSmartspaceUpdate(Landroid/app/smartspace/SmartspaceSessionId;)V
-HSPLcom/android/server/smartspace/SmartspaceManagerService$SmartspaceManagerStub;->runForUserLocked(Ljava/lang/String;Landroid/app/smartspace/SmartspaceSessionId;Ljava/util/function/Consumer;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/function/Consumer;megamorphic_types]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;
-HSPLcom/android/server/smartspace/SmartspacePerUserService;->requestSmartspaceUpdateLocked(Landroid/app/smartspace/SmartspaceSessionId;)V+]Lcom/android/server/smartspace/SmartspacePerUserService;Lcom/android/server/smartspace/SmartspacePerUserService;
-HPLcom/android/server/soundtrigger/SoundTriggerService$MyAppOpsListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V+]Ljava/util/function/Consumer;Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda2;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->readCmdlineFromProcfs(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;]Lcom/android/server/slice/SliceProviderPermissions;Lcom/android/server/slice/SliceProviderPermissions;
+HSPLcom/android/server/smartspace/SmartspaceManagerService$SmartspaceManagerStub;->runForUserLocked(Ljava/lang/String;Landroid/app/smartspace/SmartspaceSessionId;Ljava/util/function/Consumer;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/function/Consumer;megamorphic_types
+HSPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->noteUidProcessState(IIJJ)V
 HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda15;->test(Ljava/lang/Object;)Z
 HPLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda16;->onUidCpuTime(ILjava/lang/Object;)V
 HPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I+]Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->addNetworkStats(ILjava/util/List;Lcom/android/server/stats/pull/netstats/NetworkStatsExt;)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;
+HSPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;->noteUidProcessState(II)V+]Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->addNetworkStats(ILjava/util/List;Lcom/android/server/stats/pull/netstats/NetworkStatsExt;)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/stats/pull/StatsPullAtomService;->collectNetworkStatsSnapshotForAtom(I)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplate(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;
-HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTransport(I)Landroid/net/NetworkStats;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplate(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
 HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullCpuCyclesPerUidClusterLocked$13(Landroid/util/SparseArray;I[I[J[DI[J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->processHistoricalOps(Landroid/app/AppOpsManager$HistoricalOps;II)Ljava/util/List;+]Landroid/app/AppOpsManager$HistoricalOps;Landroid/app/AppOpsManager$HistoricalOps;]Landroid/app/AppOpsManager$HistoricalUidOps;Landroid/app/AppOpsManager$HistoricalUidOps;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService;]Landroid/app/AppOpsManager$HistoricalPackageOps;Landroid/app/AppOpsManager$HistoricalPackageOps;]Landroid/app/AppOpsManager$AttributedHistoricalOps;Landroid/app/AppOpsManager$AttributedHistoricalOps;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuCyclesPerUidClusterLocked(ILjava/util/List;)I+]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDataBytesTransferLocked(ILjava/util/List;)I+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Landroid/net/NetworkStats$1;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelockLocked(ILjava/util/List;)I+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemorySnapshot(ILjava/util/List;)I+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuCyclesPerUidClusterLocked(ILjava/util/List;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDataBytesTransferLocked(ILjava/util/List;)I+]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelockLocked(ILjava/util/List;)I+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/stats/pull/StatsPullAtomService;->removeEmptyEntries(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;
-HSPLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;+]Ljava/util/function/Function;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda4;]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;+]Landroid/net/NetworkStats;Landroid/net/NetworkStats;]Ljava/util/Iterator;Landroid/net/NetworkStats$1;]Ljava/util/function/Function;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda4;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;
 HSPLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V
 HPLcom/android/server/stats/pull/netstats/NetworkStatsExt;->hasSameSlicing(Lcom/android/server/stats/pull/netstats/NetworkStatsExt;)Z
 HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V+]Lcom/android/internal/statusbar/IStatusBar;Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
-HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/app/usage/UsageStats;Landroid/app/usage/UsageStats;]Landroid/app/usage/CacheQuotaHint$Builder;Landroid/app/usage/CacheQuotaHint$Builder;
-HSPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V+]Ljava/io/File;Ljava/io/File;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/timedetector/TimeDetectorService;->latestNetworkTime()Landroid/app/time/UnixEpochTime;+]Lcom/android/server/timedetector/TimeDetectorStrategy;Lcom/android/server/timedetector/TimeDetectorStrategyImpl;]Lcom/android/server/timedetector/NetworkTimeSuggestion;Lcom/android/server/timedetector/NetworkTimeSuggestion;
-HSPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;+]Lcom/android/server/timezonedetector/ReferenceWithHistory;Lcom/android/server/timezonedetector/ReferenceWithHistory;
-HSPLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Landroid/os/TimestampedValue;Landroid/os/TimestampedValue;
-HSPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(II)Z+]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;
-HSPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(II)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;
-HSPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V+]Lcom/android/server/trust/TrustAgentWrapper;Lcom/android/server/trust/TrustAgentWrapper;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;]Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
-HSPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
+HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;+]Landroid/app/usage/CacheQuotaHint$Builder;Landroid/app/usage/CacheQuotaHint$Builder;]Landroid/app/usage/UsageStats;Landroid/app/usage/UsageStats;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/timedetector/TimeDetectorService;->latestNetworkTime()Landroid/app/time/UnixEpochTime;+]Lcom/android/server/timedetector/NetworkTimeSuggestion;Lcom/android/server/timedetector/NetworkTimeSuggestion;]Lcom/android/server/timedetector/TimeDetectorStrategy;Lcom/android/server/timedetector/TimeDetectorStrategyImpl;
+HSPLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;+]Landroid/os/TimestampedValue;Landroid/os/TimestampedValue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Lcom/android/server/trust/TrustAgentWrapper;Lcom/android/server/trust/TrustAgentWrapper;]Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/os/UserManager;Landroid/os/UserManager;
 HSPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;I)V
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;I)Lcom/android/server/uri/NeededUriGrants;+]Lcom/android/server/uri/UriGrantsManagerService$LocalService;Lcom/android/server/uri/UriGrantsManagerService$LocalService;
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->internalCheckGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/ClipData$Item;Landroid/content/ClipData$Item;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService;
-HPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternalUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService;]Landroid/content/pm/PathPermission;Landroid/content/pm/PathPermission;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HPLcom/android/server/uri/UriGrantsManagerService;->isContentUriWithAccessModeFlags(Lcom/android/server/uri/GrantUri;ILjava/lang/String;)Z+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
+HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/ClipData$Item;Landroid/content/ClipData$Item;]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService;
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService;
+HSPLcom/android/server/uri/UriGrantsManagerService;->enforceRequireContentUriPermissionFromCallerOnIntentExtraStream(Landroid/content/Intent;IIILjava/lang/Integer;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/usage/AppIdleHistory;->getAppStandbyBucket(Ljava/lang/String;IJ)I+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
-HSPLcom/android/server/usage/AppIdleHistory;->getAppUsageHistory(Ljava/lang/String;IJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
 HSPLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
 HSPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;JZ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
@@ -3696,21 +3228,18 @@
 HSPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJIIZ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
 HSPLcom/android/server/usage/AppIdleHistory;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
 HSPLcom/android/server/usage/AppIdleHistory;->shouldInformListeners(Ljava/lang/String;IJI)Z
-HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(IJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Lcom/android/internal/util/jobs/FastXmlSerializer;Lcom/android/internal/util/jobs/FastXmlSerializer;
-HSPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;]Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;
+HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(IJ)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/util/jobs/FastXmlSerializer;Lcom/android/internal/util/jobs/FastXmlSerializer;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;
+HSPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
 HSPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->obtain(Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;+]Lcom/android/server/usage/AppStandbyController$Pool;Lcom/android/server/usage/AppStandbyController$Pool;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->elapsedRealtime()J
 HSPLcom/android/server/usage/AppStandbyController$Injector;->getActiveNetworkScorer()Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/NetworkScoreManager;Landroid/net/NetworkScoreManager;
-HPLcom/android/server/usage/AppStandbyController$Injector;->getValidCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;+]Landroid/content/pm/CrossProfileAppsInternal;Lcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HPLcom/android/server/usage/AppStandbyController$Injector;->getValidCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;+]Landroid/content/pm/CrossProfileAppsInternal;Lcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
 HSPLcom/android/server/usage/AppStandbyController$Injector;->isNonIdleWhitelisted(Ljava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/usage/AppStandbyController$Injector;->isWellbeingPackage(Ljava/lang/String;)Z
 HSPLcom/android/server/usage/AppStandbyController$Injector;->shouldGetExactAlarmBucketElevation(Ljava/lang/String;I)Z+]Lcom/android/server/AlarmManagerInternal;Lcom/android/server/alarm/AlarmManagerService$LocalService;
-HSPLcom/android/server/usage/AppStandbyController$Pool;->obtain()Ljava/lang/Object;
-HSPLcom/android/server/usage/AppStandbyController$Pool;->recycle(Ljava/lang/Object;)V
 HSPLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->obtain(Ljava/lang/String;IIIZ)Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;+]Lcom/android/server/usage/AppStandbyController$Pool;Lcom/android/server/usage/AppStandbyController$Pool;
-HSPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(Ljava/lang/String;II)I+]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(Ljava/lang/String;II)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucket(Ljava/lang/String;IJZ)I+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
 HPLcom/android/server/usage/AppStandbyController;->getCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;
 HSPLcom/android/server/usage/AppStandbyController;->informListeners(Ljava/lang/String;IIIZ)V+]Lcom/android/server/usage/AppStandbyInternal$AppIdleStateChangeListener;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
@@ -3719,87 +3248,71 @@
 HSPLcom/android/server/usage/AppStandbyController;->isAdminProtectedPackages(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Landroid/util/ArraySet;
 HSPLcom/android/server/usage/AppStandbyController;->isAppIdleEnabled()Z
 HSPLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
-HSPLcom/android/server/usage/AppStandbyController;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
-HSPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;
+HSPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLcom/android/server/usage/AppStandbyController;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
 HSPLcom/android/server/usage/AppStandbyController;->isInParole()Z
-HSPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Landroid/os/Handler;Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;
-HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;
-HSPLcom/android/server/usage/AppStandbyController;->postReportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Landroid/os/Handler;Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;
+HSPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V+]Landroid/os/Handler;Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
+HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V+]Landroid/os/Handler;Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
 HSPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
-HSPLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V+]Lcom/android/server/usage/BroadcastResponseStatsLogger$Data;Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;
-HSPLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V+]Lcom/android/server/usage/BroadcastResponseStatsLogger;Lcom/android/server/usage/BroadcastResponseStatsLogger;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/BroadcastEvent;Lcom/android/server/usage/BroadcastEvent;
 HPLcom/android/server/usage/IntervalStats;-><init>()V
 HPLcom/android/server/usage/IntervalStats;->addEvent(Landroid/app/usage/UsageEvents$Event;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;
-HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;
-HPLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;
-HPLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
+HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;
 HPLcom/android/server/usage/IntervalStats;->obfuscateEventsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;
-HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;
-HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V+]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/usage/UsageStats;Landroid/app/usage/UsageStats;
+HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/usage/PackagesTokenData;Lcom/android/server/usage/PackagesTokenData;]Ljava/lang/Integer;Ljava/lang/Integer;
+HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V+]Landroid/app/usage/UsageStats;Landroid/app/usage/UsageStats;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;
 HPLcom/android/server/usage/PackagesTokenData;->getPackageString(I)Ljava/lang/String;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(Ljava/lang/String;J)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Long;Ljava/lang/Long;
+HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(Ljava/lang/String;J)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/usage/PackagesTokenData;->getString(II)Ljava/lang/String;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Ljava/io/File;Ljava/io/File;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/StatFs;Landroid/os/StatFs;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;
-HPLcom/android/server/usage/StorageStatsService;->checkStatsPermission(ILjava/lang/String;Z)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/usage/StorageStatsService;->forEachStorageStatsAugmenter(Ljava/util/function/Consumer;Ljava/lang/String;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/function/Consumer;Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda0;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda2;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HPLcom/android/server/usage/StorageStatsService;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;
-HPLcom/android/server/usage/StorageStatsService;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;
+HSPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/StatFs;Landroid/os/StatFs;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;]Ljava/io/File;Ljava/io/File;
+HPLcom/android/server/usage/StorageStatsService;->checkStatsPermission(ILjava/lang/String;Z)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/usage/StorageStatsService;->computeAppStatsByDataTypes(Landroid/content/pm/PackageStats;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/art/model/ArtManagedFileStats;Lcom/android/server/art/model/ArtManagedFileStats;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;
+HPLcom/android/server/usage/StorageStatsService;->forEachStorageStatsAugmenter(Ljava/util/function/Consumer;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/function/Consumer;Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda0;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda2;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService;
 HPLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats;
-HPLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;+]Lcom/android/server/usage/UsageStatsDatabase$StatCombiner;megamorphic_types]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
-HPLcom/android/server/usage/UsageStatsProtoV2;->loadConfigStats(Landroid/util/proto/ProtoInputStream;Lcom/android/server/usage/IntervalStats;)V+]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HPLcom/android/server/usage/UsageStatsProtoV2;->parseEvent(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageEvents$Event;+]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadConfigStats(Landroid/util/proto/ProtoInputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;
+HPLcom/android/server/usage/UsageStatsProtoV2;->parseEvent(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageEvents$Event;+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;
 HPLcom/android/server/usage/UsageStatsProtoV2;->parseUsageStats(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageStats;+]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;
 HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;Z)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/proto/ProtoInputStream;Landroid/util/proto/ProtoInputStream;
-HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeEvent(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageEvents$Event;)V+]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeObfuscatedData(Ljava/io/OutputStream;Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
+HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
 HPLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V+]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
 HPLcom/android/server/usage/UsageStatsProtoV2;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageStats;)V+]Landroid/util/proto/ProtoOutputStream;Landroid/util/proto/ProtoOutputStream;
 HSPLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
 HSPLcom/android/server/usage/UsageStatsService$1;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
 HSPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/os/Message;Landroid/os/Message;
-HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;ILjava/lang/String;)Z+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsHelper(IJJLjava/lang/String;[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;+]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;
-HSPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;Lcom/android/server/job/controllers/PrefetchController$1;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;]Lcom/android/server/usage/BroadcastResponseStatsTracker;Lcom/android/server/usage/BroadcastResponseStatsTracker;]Landroid/os/Handler;Lcom/android/server/usage/UsageStatsService$H;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;ILjava/lang/String;)Z+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;Lcom/android/server/job/controllers/PrefetchController$1;]Landroid/os/Handler;Lcom/android/server/usage/UsageStatsService$H;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/BroadcastResponseStatsTracker;Lcom/android/server/usage/BroadcastResponseStatsTracker;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(Ljava/lang/String;IJ)I+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;IIILandroid/content/ComponentName;)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
 HPLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/usage/UsageStatsService;->isInstantApp(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/usage/UsageStatsService;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;Lcom/android/server/usage/AppStandbyController;,Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;,Lcom/android/server/job/controllers/QuotaController$UsageEventTracker;,Lcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;
-HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Landroid/util/ArrayMap;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;]Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/usage/UsageStatsService$H;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;
-HSPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;]Landroid/os/Handler;Lcom/android/server/usage/UsageStatsService$H;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;
-HPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/usage/UserUsageStatsService$4;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZ[ZIZLandroid/util/ArraySet;Landroid/util/ArraySet;)V
-HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;
-HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;
+HSPLcom/android/server/usage/UsageStatsService;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;,Lcom/android/server/job/controllers/QuotaController$UsageEventTracker;,Lcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;,Lcom/android/server/usage/AppStandbyController;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/usage/UsageStatsService$H;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
+HSPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Handler;Lcom/android/server/usage/UsageStatsService$H;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
+HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J+]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;+]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;+]Lcom/android/server/usage/UsageStatsDatabase$StatCombiner;megamorphic_types]Lcom/android/server/usage/UsageStatsDatabase;Lcom/android/server/usage/UsageStatsDatabase;
-HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/UnixCalendar;Lcom/android/server/usage/UnixCalendar;]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Ljava/lang/Object;Ljava/lang/String;]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V+]Landroid/app/NotificationManager;Landroid/app/NotificationManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Lcom/android/server/usb/UsbDeviceManager$UsbHandler;Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
-HSPLcom/android/server/utils/AlarmQueue$1;->run()V
+HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V+]Landroid/app/usage/UsageEvents$Event;Landroid/app/usage/UsageEvents$Event;]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Lcom/android/server/usage/UnixCalendar;Lcom/android/server/usage/UnixCalendar;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;]Ljava/lang/Object;Ljava/lang/String;
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V+]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/NotificationManager;Landroid/app/NotificationManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/server/usb/UsbDeviceManager$UsbHandler;Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;
 HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->lambda$static$0(Landroid/util/Pair;Landroid/util/Pair;)I+]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;,Lcom/android/server/job/controllers/JobStatus;,Landroid/content/pm/UserPackage;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
-HSPLcom/android/server/utils/AlarmQueue;->addAlarm(Ljava/lang/Object;J)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;,Lcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;,Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;,Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;
-HSPLcom/android/server/utils/AlarmQueue;->removeAlarmForKey(Ljava/lang/Object;)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;,Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;,Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;,Lcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;
-HSPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked(J)V+]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/pm/UserPackage;,Lcom/android/server/job/controllers/JobStatus;,Ljava/lang/String;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
+HSPLcom/android/server/utils/AlarmQueue;->addAlarm(Ljava/lang/Object;J)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;,Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;,Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;,Lcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
+HSPLcom/android/server/utils/AlarmQueue;->removeAlarmForKey(Ljava/lang/Object;)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;,Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;,Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
+HSPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked(J)V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
 HSPLcom/android/server/utils/AnrTimer$FeatureDisabled;->cancel(Ljava/lang/Object;)Z+]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/am/ActivityManagerService$MainHandler;
-HSPLcom/android/server/utils/AnrTimer$FeatureDisabled;->start(Ljava/lang/Object;IIJ)V+]Landroid/os/Handler;Lcom/android/server/am/ActivityManagerService$MainHandler;,Landroid/os/Handler;
+HSPLcom/android/server/utils/AnrTimer$FeatureDisabled;->start(Ljava/lang/Object;IIJ)V+]Landroid/os/Handler;Landroid/os/Handler;,Lcom/android/server/am/ActivityManagerService$MainHandler;
 HSPLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureDisabled;
 HSPLcom/android/server/utils/AnrTimer;->serviceEnabled()Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureDisabled;
-HSPLcom/android/server/utils/EventLogger;->enqueue(Lcom/android/server/utils/EventLogger$Event;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLcom/android/server/utils/Slogf;->getMessage(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
 HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Lcom/android/server/utils/Snappable;+]Lcom/android/server/utils/Snappable;megamorphic_types
 HSPLcom/android/server/utils/SnapshotCache;-><init>()V
@@ -3822,10 +3335,10 @@
 HSPLcom/android/server/utils/WatchedArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/utils/WatchedArrayMap;->keyAt(I)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/utils/WatchedArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V+]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Map;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/utils/WatchedLongSparseArray;,Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;,Lcom/android/server/utils/WatchedLongSparseArray;
 HSPLcom/android/server/utils/WatchedArrayMap;->size()I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
 HSPLcom/android/server/utils/WatchedArrayMap;->valueAt(I)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/utils/WatchedArraySet;-><init>(IZ)V
 HSPLcom/android/server/utils/WatchedArraySet;->add(Ljava/lang/Object;)Z
@@ -3833,18 +3346,14 @@
 HSPLcom/android/server/utils/WatchedArraySet;->contains(Ljava/lang/Object;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/utils/WatchedArraySet;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/utils/WatchedArraySet;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/utils/WatchedArraySet;->remove(Ljava/lang/Object;)Z
 HSPLcom/android/server/utils/WatchedArraySet;->size()I+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
 HSPLcom/android/server/utils/WatchedArraySet;->valueAt(I)Ljava/lang/Object;+]Landroid/util/ArraySet;Landroid/util/ArraySet;
 HSPLcom/android/server/utils/WatchedLongSparseArray;->size()I+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
 HSPLcom/android/server/utils/WatchedLongSparseArray;->valueAt(I)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
-HSPLcom/android/server/utils/WatchedSparseArray$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedSparseArray;
 HSPLcom/android/server/utils/WatchedSparseArray;-><init>()V
-HSPLcom/android/server/utils/WatchedSparseArray;-><init>(I)V
 HSPLcom/android/server/utils/WatchedSparseArray;->get(I)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/utils/WatchedSparseArray;->size()I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;)V+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedSparseArray;]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
 HSPLcom/android/server/utils/WatchedSparseBooleanArray;-><init>(Lcom/android/server/utils/WatchedSparseBooleanArray;)V
 HSPLcom/android/server/utils/WatchedSparseBooleanArray;->get(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/utils/WatchedSparseBooleanArray;->snapshot()Lcom/android/server/utils/WatchedSparseBooleanArray;
@@ -3853,188 +3362,126 @@
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(I)I
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(IZ)I+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->nextFree(Z)I
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->onChanged()V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->put(IIZ)V+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAt(IIZ)V+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAtInternal(IIZ)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(I)V
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(II)V+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAt(II)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
 HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAtInternal(II)Z
-HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot(Lcom/android/server/utils/WatchedSparseIntArray;Lcom/android/server/utils/WatchedSparseIntArray;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedSparseIntArray;]Lcom/android/server/utils/WatchedSparseIntArray;Lcom/android/server/utils/WatchedSparseIntArray;
 HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
 HSPLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
 HSPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
 HSPLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;+]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
-HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;+]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;,Lcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/utils/quota/CountQuotaTracker;->isUnderCountQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;,Lcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;
 HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
-HPLcom/android/server/utils/quota/CountQuotaTracker;->noteEvent(ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
-HSPLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V+]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
+HPLcom/android/server/utils/quota/CountQuotaTracker;->noteEvent(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Lcom/android/server/utils/quota/QuotaTracker$Injector;Lcom/android/server/utils/quota/QuotaTracker$Injector;]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;
 HSPLcom/android/server/utils/quota/QuotaTracker$Injector;->getElapsedRealtime()J
 HSPLcom/android/server/utils/quota/QuotaTracker;->isQuotaFreeLocked(ILjava/lang/String;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HSPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
-HSPLcom/android/server/utils/quota/UptcMap;->getOrCreate(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object;+]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/function/Function;Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;,Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
+HSPLcom/android/server/utils/quota/UptcMap;->getOrCreate(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Ljava/util/function/Function;Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;,Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;
 HSPLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;J)V
-HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;+]Lcom/android/server/webkit/WebViewUpdateServiceInterface;Lcom/android/server/webkit/WebViewUpdateServiceImpl2;,Lcom/android/server/webkit/WebViewUpdateServiceImpl;
+HSPLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;J)V
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;+]Lcom/android/server/webkit/WebViewUpdateServiceInterface;Lcom/android/server/webkit/WebViewUpdateServiceImpl2;
 HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->grantVisibilityToCaller(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
 HSPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatState(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V+]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister;]Landroid/app/ActivityOptions$SceneTransitionInfo;Landroid/app/ActivityOptions$SceneTransitionInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V+]Landroid/app/ActivityOptions$SceneTransitionInfo;Landroid/app/ActivityOptions$SceneTransitionInfo;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister;
 HSPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->canReceiveKeys()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLockedInner(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLockedInner(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
 HSPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Ljava/util/function/Predicate;megamorphic_types
-HSPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I+]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;+]Ljava/util/Optional;Ljava/util/Optional;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
-HSPLcom/android/server/wm/ActivityRecord;->getDisplayId()I
-HSPLcom/android/server/wm/ActivityRecord;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->getOverrideOrientation()I+]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
+HSPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
+HSPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Ljava/util/Optional;Ljava/util/Optional;
 HSPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/ActivityRecord;->getScreenResolvedBounds()Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->getTurnScreenOnFlag()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/ActivityRecord;->isFocusable()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->isVisible()Z
 HSPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->occludesParent(Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V+]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;
-HSPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;
-HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V+]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ComponentName;Landroid/content/ComponentName;
-HSPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/internal/protolog/ProtoLogGroup;Lcom/android/internal/protolog/ProtoLogGroup;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->updateReportedConfigurationAndSend()Z+]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->updateVisibilityIgnoringKeyguard(Z)V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
-HSPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStarter;->execute()I+]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityStarter$Request;Lcom/android/server/wm/ActivityStarter$Request;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/wm/ActivityStarter;->executeRequest(Lcom/android/server/wm/ActivityStarter$Request;)I+]Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/policy/PermissionPolicyService$Internal;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;]Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;]Lcom/android/server/wm/BackgroundActivityStartController;Lcom/android/server/wm/BackgroundActivityStartController;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Lcom/android/server/wm/PendingRemoteAnimationRegistry;Lcom/android/server/wm/PendingRemoteAnimationRegistry;]Lcom/android/server/wm/ActivityStartInterceptor;Lcom/android/server/wm/ActivityStartInterceptor;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityStartController;
-HSPLcom/android/server/wm/ActivityStarter;->startActivityInner(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/uri/NeededUriGrants;I)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Lcom/android/server/wm/BackgroundActivityStartController;Lcom/android/server/wm/BackgroundActivityStartController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityStarter;Lcom/android/server/wm/ActivityStarter;]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;+]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/internal/protolog/ProtoLogGroup;Lcom/android/internal/protolog/ProtoLogGroup;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/ActivityRecord;->updateReportedConfigurationAndSend()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
+HSPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopApp()Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppDied(Lcom/android/server/wm/WindowProcessController;ZLjava/lang/Runnable;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppDied(Lcom/android/server/wm/WindowProcessController;ZLjava/lang/Runnable;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isCallerRecents(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isGetTasksAllowed(Ljava/lang/String;II)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()Z
 HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessUnMapped(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;)V+]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->checkCallingPermission(Ljava/lang/String;)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->checkPermission(Ljava/lang/String;II)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getFocusedRootTaskInfo()Landroid/app/ActivityTaskManager$RootTaskInfo;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/RootWindowContainer;
 HPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Landroid/app/IApplicationThread;)Lcom/android/server/wm/WindowProcessController;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskBounds(I)Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getTaskChangeNotificationController()Lcom/android/server/wm/TaskChangeNotificationController;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;
-HPLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
+HPLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->isCallerRecents(I)Z+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updateActivityUsageStats(Lcom/android/server/wm/ActivityRecord;I)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getVisibleOpaqueActivity(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Ljava/lang/Object;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;
 HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;
 HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->fillAndReturnTop(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;ZZLandroid/content/res/Configuration;)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V+]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->computeProcessActivityStateBatch()V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
 HSPLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->processStoppingAndFinishingActivities(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->realStartActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;ZZ)Z+]Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityStartController;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/RootWindowContainer;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Lcom/android/server/wm/WindowProcessController;)V
-HSPLcom/android/server/wm/AppTransition;->isReady()Z
-HSPLcom/android/server/wm/AppTransition;->isRunning()Z
 HSPLcom/android/server/wm/AppTransition;->isTransitionSet()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
-HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->tryFinish()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
 HSPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/BackNavigationController;->checkAnimationReady(Lcom/android/server/wm/WallpaperController;)V+]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
 HSPLcom/android/server/wm/BackgroundLaunchProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Landroid/util/IntArray;Landroid/util/IntArray;
 HPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;IZZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;
 HSPLcom/android/server/wm/BackgroundLaunchProcessController;->clearBalOptInBoundClientUids()V+]Landroid/util/IntArray;Landroid/util/IntArray;
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/wm/BackgroundActivityStartCallback;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/BackgroundActivityStartCallback;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Ljava/util/List;Ljava/util/ArrayList;
 HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/function/IntPredicate;Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;,Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda8;
 HSPLcom/android/server/wm/BackgroundLaunchProcessController;->removeAllowBackgroundStartPrivileges(Landroid/os/Binder;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransaction;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V+]Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransaction;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;
+HSPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;
 HSPLcom/android/server/wm/ClientLifecycleManager;->shouldDispatchPendingTransactionsImmediately()Z+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
 HSPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;IZ)F
 HSPLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/CompatScaleProvider;Lcom/android/server/app/GameManagerService$LocalService;
 HSPLcom/android/server/wm/ConfigurationContainer;-><init>()V
 HSPLcom/android/server/wm/ConfigurationContainer;->getActivityType()I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
 HSPLcom/android/server/wm/ConfigurationContainer;->getWindowConfiguration()Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->getWindowingMode()I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
 HSPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ConfigurationContainerListener;megamorphic_types]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ConfigurationContainer;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;,Lcom/android/server/wm/LegacyDimmer;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Dimmable;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayArea$Dimmable;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Tokens;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;
-HSPLcom/android/server/wm/DisplayArea;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
-HSPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
-HSPLcom/android/server/wm/DisplayArea;->getIgnoreOrientationRequest()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/DisplayArea;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/DisplayArea;->getOrientation(I)I+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/DisplayArea$Dimmable;
+HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainerListener;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
+HSPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
+HSPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayArea$Dimmable;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Dimmable;
+HSPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Tokens;
+HSPLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Lcom/android/server/wm/DisplayArea;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
 HSPLcom/android/server/wm/DisplayArea;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/DisplayArea;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/DisplayArea;->isOrganized()Z
-HSPLcom/android/server/wm/DisplayArea;->shouldIgnoreOrientationRequest(I)Z+]Lcom/android/server/wm/DisplayArea;megamorphic_types
 HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
 HSPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
 HSPLcom/android/server/wm/DisplayContent$ImeContainer;->skipImeWindowsDuringTraversal(Lcom/android/server/wm/DisplayContent;)Z
 HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Lcom/android/server/wm/WallpaperVisibilityListeners;Lcom/android/server/wm/WallpaperVisibilityListeners;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;]Lcom/android/server/wm/ImeInsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/DisplayContent$ImeContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;
-HSPLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotation(I)Landroid/view/DisplayCutout;+]Lcom/android/server/wm/utils/RotationCache;Lcom/android/server/wm/utils/RotationCache;]Lcom/android/server/wm/utils/WmDisplayCutout;Lcom/android/server/wm/utils/WmDisplayCutout;
-HSPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/DisplayContent;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/ImeInsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperVisibilityListeners;Lcom/android/server/wm/WallpaperVisibilityListeners;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HSPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/DisplayContent$ImeContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/DisplayContent;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/DisplayContent;->finishHoldScreenUpdate()V+]Landroid/os/PowerManager$WakeLock;Landroid/os/PowerManager$WakeLock;
 HSPLcom/android/server/wm/DisplayContent;->getAsyncRotationController()Lcom/android/server/wm/AsyncRotationController;
 HSPLcom/android/server/wm/DisplayContent;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;+]Lcom/android/server/wm/DisplayAreaPolicy;Lcom/android/server/wm/DisplayAreaPolicyBuilder$Result;
@@ -4043,396 +3490,283 @@
 HSPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
 HSPLcom/android/server/wm/DisplayContent;->getFocusedRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/DisplayContent;->getImeTarget(I)Lcom/android/server/wm/InsetsControlTarget;
-HSPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
 HSPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-HSPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
 HSPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
 HSPLcom/android/server/wm/DisplayContent;->getOrientation()I+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotationCompatPolicy;Lcom/android/server/wm/DisplayRotationCompatPolicy;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
 HSPLcom/android/server/wm/DisplayContent;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->handlesOrientationChangeFromDescendant(I)Z+]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/DisplayContent;->hasOwnFocus()Z
 HSPLcom/android/server/wm/DisplayContent;->inTransition()Z
-HSPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z+]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/DisplayContent;->isKeyguardLocked()Z+]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
+HSPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
 HSPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
-HSPLcom/android/server/wm/DisplayContent;->isReady()Z
-HSPLcom/android/server/wm/DisplayContent;->isSleeping()Z
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$5(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->okToAnimate(ZZ)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->okToDisplay(ZZ)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
-HSPLcom/android/server/wm/DisplayContent;->onDisplayInfoChanged()V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
-HSPLcom/android/server/wm/DisplayContent;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;Lcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;
+HSPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V
 HSPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayUpdater;Lcom/android/server/wm/DeferredDisplayUpdater;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayWindowSettings;Lcom/android/server/wm/DisplayWindowSettings;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->updateDisplayInfo(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;
-HSPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V+]Lcom/android/server/wm/DisplayWindowListenerController;Lcom/android/server/wm/DisplayWindowListenerController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/Set;Landroid/util/ArraySet;]Ljava/lang/Object;Landroid/util/ArraySet;
-HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/DisplayRotationReversionController;Lcom/android/server/wm/DisplayRotationReversionController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayUpdater;Lcom/android/server/wm/DeferredDisplayUpdater;]Lcom/android/server/wm/DisplayWindowSettings;Lcom/android/server/wm/DisplayWindowSettings;
+HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z+]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayWindowListenerController;Lcom/android/server/wm/DisplayWindowListenerController;]Ljava/lang/Object;Landroid/util/ArraySet;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayRotationReversionController;Lcom/android/server/wm/DisplayRotationReversionController;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/DisplayContent;->updateRecording()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/ISystemGestureExclusionListener;Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;
-HSPLcom/android/server/wm/DisplayFrames;->update(IIILandroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;)Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;
+HSPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/view/ISystemGestureExclusionListener;Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V+]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
 HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/ImeInsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
-HSPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
-HSPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/ImeInsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HPLcom/android/server/wm/DisplayPolicy;->calculateInsetsFrame(Landroid/graphics/Rect;Landroid/graphics/Insets;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZ)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
 HSPLcom/android/server/wm/DisplayPolicy;->configureStatusBarOpacity(I)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HPLcom/android/server/wm/DisplayPolicy;->getBarContentFrameForWindow(Lcom/android/server/wm/WindowState;I)Landroid/graphics/Rect;+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;
+HSPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
+HPLcom/android/server/wm/DisplayPolicy;->getBarContentFrameForWindow(Lcom/android/server/wm/WindowState;I)Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/DisplayPolicy;->getNotificationShade()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
-HSPLcom/android/server/wm/DisplayPolicy;->getStatusBar()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
-HSPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
+HSPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
 HSPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;
 HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
-HPLcom/android/server/wm/DisplayPolicy;->isLightBarAllowed(Lcom/android/server/wm/WindowState;I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->isOverlappingWithNavBar(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayPolicy;->isRemoteInsetsControllerControllingSystemBars()Z
-HPLcom/android/server/wm/DisplayPolicy;->lambda$getFrameProvider$1(Lcom/android/server/wm/WindowState;IILcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarsLw$8(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayPolicy;->lambda$getFrameProvider$1(Lcom/android/server/wm/WindowState;IILcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarsLw$8(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V+]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HPLcom/android/server/wm/DisplayPolicy;->navigationBarPosition(I)I
-HSPLcom/android/server/wm/DisplayPolicy;->shouldBeHiddenByKeyguard(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
-HSPLcom/android/server/wm/DisplayPolicy;->topAppHidesSystemBar(I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
+HSPLcom/android/server/wm/DisplayPolicy;->shouldBeHiddenByKeyguard(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayPolicy;->topAppHidesSystemBar(I)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/DisplayPolicy;->updateLightNavigationBarLw(ILcom/android/server/wm/WindowState;)I
-HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/statusbar/StatusBarManagerInternal;Lcom/android/server/statusbar/StatusBarManagerService$1;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ImmersiveModeConfirmation;Lcom/android/server/wm/ImmersiveModeConfirmation;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/DisplayRotation;->isRotatingSeamlessly()Z
-HPLcom/android/server/wm/DisplayRotation;->rotationForOrientation(II)I+]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowOrientationListener;Lcom/android/server/wm/DisplayRotation$OrientationListener;]Lcom/android/server/wm/DisplayRotation$FoldController;Lcom/android/server/wm/DisplayRotation$FoldController;
-HSPLcom/android/server/wm/DisplayRotation;->updateOrientationListenerLw()V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowOrientationListener;Lcom/android/server/wm/DisplayRotation$OrientationListener;]Lcom/android/server/wm/DisplayRotation$OrientationListener;Lcom/android/server/wm/DisplayRotation$OrientationListener;
-HSPLcom/android/server/wm/DisplayRotation;->updateRotationUnchecked(Z)Z+]Lcom/android/server/wm/DisplayRotationCoordinator;Lcom/android/server/wm/DisplayRotationCoordinator;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;Lcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;]Lcom/android/server/wm/DisplayRotation$FoldController;Lcom/android/server/wm/DisplayRotation$FoldController;
-HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/statusbar/StatusBarManagerInternal;Lcom/android/server/statusbar/StatusBarManagerService$1;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/ImmersiveModeConfirmation;Lcom/android/server/wm/ImmersiveModeConfirmation;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/HighRefreshRateDenylist;->isDenylisted(Ljava/lang/String;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/wm/ImeInsetsSourceProvider;->onSourceChanged()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/os/Handler;Lcom/android/server/wm/WindowManagerService$H;]Landroid/os/Message;Landroid/os/Message;
-HPLcom/android/server/wm/ImeInsetsSourceProvider;->setServerVisible(Z)V
 HSPLcom/android/server/wm/InputConfigAdapter;->getInputConfigFromWindowParams(III)I
-HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/DragDropController;]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;]Lcom/android/server/wm/RecentsAnimationController;Lcom/android/server/wm/RecentsAnimationController;
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V+]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/DragDropController;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;
 HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V+]Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;
-HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/ActivityRecord;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V+]Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/DragDropController;
-HSPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Object;Ljava/lang/String;
-HSPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
+HSPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;+]Ljava/lang/Object;Ljava/lang/String;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/InputMonitor;->resetInputConsumers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/InputMonitor;->scheduleUpdateInputWindows()V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;
+HSPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->hasWallpaper()Z
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->isFocusable()Z
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->isPaused()Z
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setDispatchingTimeoutMillis(J)V
-HSPLcom/android/server/wm/InputWindowHandleWrapper;->setFocusable(Z)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setInputApplicationHandle(Landroid/view/InputApplicationHandle;)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setInputConfigMasked(II)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsFlags(I)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setName(Ljava/lang/String;)V
-HSPLcom/android/server/wm/InputWindowHandleWrapper;->setPaused(Z)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setPaused(Z)V+]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setReplaceTouchableRegionWithCrop(Z)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setScaleFactor(F)V
-HSPLcom/android/server/wm/InputWindowHandleWrapper;->setSurfaceInset(I)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setToken(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchOcclusionMode(I)V
 HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
-HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegionCrop(Landroid/view/SurfaceControl;)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;
-HSPLcom/android/server/wm/InputWindowHandleWrapper;->setWindowToken(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/InsetsPolicy$BarWindow;->setVisible(Z)V+]Lcom/android/server/statusbar/StatusBarManagerInternal;Lcom/android/server/statusbar/StatusBarManagerService$1;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/InsetsPolicy$BarWindow;->updateVisibility(Lcom/android/server/wm/InsetsControlTarget;I)V+]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/InsetsPolicy$ControlTarget;]Lcom/android/server/wm/InsetsPolicy$BarWindow;Lcom/android/server/wm/InsetsPolicy$BarWindow;
-HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegionCrop(Landroid/view/SurfaceControl;)V+]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setWindowToken(Landroid/os/IBinder;)V+]Landroid/view/InputWindowHandle;Landroid/view/InputWindowHandle;
+HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
 HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
 HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSources(Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;
-HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsPolicy;->areTypesForciblyShowing(I)Z
-HSPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Landroid/view/WindowManager$LayoutParams;IZLandroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsPolicy;->forceShowingNavigationBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
-HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HSPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/InsetsPolicy;->isTransient(I)Z
+HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Landroid/view/WindowManager$LayoutParams;IZLandroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
 HSPLcom/android/server/wm/InsetsPolicy;->remoteInsetsControllerControlsSystemBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
-HSPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;
+HSPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
 HSPLcom/android/server/wm/InsetsPolicy;->updateSystemBars(Lcom/android/server/wm/WindowState;ZZ)V+]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HPLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;
+HPLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HPLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z
-HSPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Ljava/util/function/Consumer;Lcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/graphics/Insets;Landroid/graphics/Insets;
+HSPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Landroid/graphics/Insets;Landroid/graphics/Insets;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/function/Consumer;Lcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;
 HSPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;
-HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/InsetsStateController$1;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/internal/util/function/TriFunction;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda11;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/internal/util/function/TriFunction;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda11;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Ljava/lang/Integer;Ljava/lang/Integer;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
 HPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HSPLcom/android/server/wm/InsetsStateController;->getControlsForDispatch(Lcom/android/server/wm/InsetsControlTarget;)[Landroid/view/InsetsSourceControl;+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
 HSPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;+]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$3()V+]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;
+HSPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$3()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
 HSPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
-HSPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HPLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsControlTarget;Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsStateController;->onPostLayout()V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsStateController;->updateAboveInsetsState(Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/function/Consumer;Lcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda2;
-HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->lambda$getRootTaskForControllingOccluding$0(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->updateVisibility(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Landroid/os/PowerManager;Landroid/os/PowerManager;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HPLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsControlTarget;Z)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/InsetsStateController;->onPostLayout()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->updateVisibility(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/DisplayContent;)V+]Landroid/os/PowerManager;Landroid/os/PowerManager;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
 HSPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/wm/KeyguardController;->isKeyguardGoingAway(I)Z
-HSPLcom/android/server/wm/KeyguardController;->isKeyguardLocked(I)Z+]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
-HSPLcom/android/server/wm/KeyguardController;->updateVisibility()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
+HSPLcom/android/server/wm/KeyguardController;->updateVisibility()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
 HSPLcom/android/server/wm/LetterboxConfiguration;->getDefaultLetterboxBackgroundType()I+]Lcom/android/server/wm/SynchedDeviceConfig;Lcom/android/server/wm/SynchedDeviceConfig;
-HSPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z+]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/SynchedDeviceConfig;Lcom/android/server/wm/SynchedDeviceConfig;
 HSPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioSettingsEnabled()Z+]Lcom/android/server/wm/SynchedDeviceConfig;Lcom/android/server/wm/SynchedDeviceConfig;
-HSPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;->getAsBoolean()Z
-HSPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;->getAsBoolean()Z
-HSPLcom/android/server/wm/LetterboxUiController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityRecord;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
 HSPLcom/android/server/wm/LetterboxUiController;->findOpaqueNotFinishingActivityBelow()Ljava/util/Optional;
-HSPLcom/android/server/wm/LetterboxUiController;->getLetterboxDetails()Lcom/android/internal/statusbar/LetterboxDetails;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/LetterboxUiController;->hasInheritedLetterboxBehavior()Z
-HSPLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
-HSPLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/LetterboxUiController;->isSystemOverrideToFullscreenEnabled()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
-HSPLcom/android/server/wm/LetterboxUiController;->isUserFullscreenOverrideEnabled()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Ljava/lang/Object;Ljava/lang/Boolean;
-HSPLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
-HSPLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/LetterboxUiController;->layoutLetterboxIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Letterbox;Lcom/android/server/wm/Letterbox;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/LetterboxUiController;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/Boolean;
-HSPLcom/android/server/wm/LetterboxUiController;->shouldApplyUserFullscreenOverride()Z+]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Ljava/lang/Object;Ljava/lang/Boolean;
-HSPLcom/android/server/wm/LetterboxUiController;->shouldEnableUserAspectRatioSettings()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Ljava/lang/Object;Ljava/lang/Boolean;
+HSPLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
+HSPLcom/android/server/wm/LetterboxUiController;->isUserFullscreenOverrideEnabled()Z+]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Ljava/lang/Object;Ljava/lang/Boolean;
+HSPLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
+HSPLcom/android/server/wm/LetterboxUiController;->layoutLetterboxIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Letterbox;Lcom/android/server/wm/Letterbox;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/LetterboxUiController;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Ljava/lang/Object;Ljava/lang/Boolean;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/wm/LetterboxUiController;->shouldEnableUserAspectRatioSettings()Z+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Ljava/lang/Object;Ljava/lang/Boolean;
 HSPLcom/android/server/wm/LetterboxUiController;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/LetterboxUiController;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/LetterboxUiController;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/Letterbox;Lcom/android/server/wm/Letterbox;
-HSPLcom/android/server/wm/LetterboxUiController;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/ActivityRecord;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
+HSPLcom/android/server/wm/LetterboxUiController;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/LetterboxUiController;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/LetterboxUiController;->updateWallpaperForLetterbox(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;
 HSPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
 HSPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/wm/PackageConfigPersister;->findPackageConfiguration(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$PackageConfig;
-HSPLcom/android/server/wm/PackageConfigPersister;->findRecord(Landroid/util/SparseArray;Ljava/lang/String;I)Lcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/server/wm/RecentTasks$1;,Lcom/android/internal/widget/PointerLocationView;,Lcom/android/server/wm/SystemGesturesPointerEventListener;]Landroid/view/InputEventReceiver;Lcom/android/server/wm/PointerEventDispatcher;]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Landroid/view/InputEventReceiver;Lcom/android/server/wm/PointerEventDispatcher;]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/internal/widget/PointerLocationView;,Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener;
 HSPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z
-HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->refreshRateEquals(F)Z
-HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->reset()Z+]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;
-HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z
+HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z+]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;
 HSPLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;->get(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;+]Ljava/util/HashMap;Ljava/util/HashMap;
-HSPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;
-HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;
-HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;
-HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;
-HSPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;
+HSPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I+]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I+]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/view/Display$Mode;Landroid/view/Display$Mode;]Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist;]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Ljava/lang/Long;Ljava/lang/Long;
-HSPLcom/android/server/wm/RootWindowContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/internal/util/function/pooled/PooledPredicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/StrictModeFlash;Lcom/android/server/wm/StrictModeFlash;
-HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AppTransitionController;Lcom/android/server/wm/AppTransitionController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/StrictModeFlash;Lcom/android/server/wm/StrictModeFlash;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/RootWindowContainer;->clearFrameChangingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
-HSPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/util/function/Consumer;megamorphic_types
 HSPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/wm/RootWindowContainer;->getTopDisplayFocusedRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HPLcom/android/server/wm/RootWindowContainer;->lambda$getRootTaskInfo$22([ILandroid/app/ActivityTaskManager$RootTaskInfo;Lcom/android/server/wm/Task;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$7(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;
-HSPLcom/android/server/wm/RootWindowContainer;->lambda$rankTaskLayers$29(Lcom/android/server/wm/Task;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/os/Handler;Lcom/android/server/wm/RootWindowContainer$MyHandler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Message;Landroid/os/Message;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/RecentsAnimationController;Lcom/android/server/wm/RecentsAnimationController;
-HSPLcom/android/server/wm/RootWindowContainer;->rankTaskLayers()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/RootWindowContainer;->updateDisplayImePolicyCache()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;
-HSPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/RunningTasks;
+HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V+]Landroid/os/Handler;Lcom/android/server/wm/RootWindowContainer$MyHandler;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;
+HSPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/RunningTasks;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;)V
 HPLcom/android/server/wm/SafeActivityOptions;->setCallerOptions(Landroid/app/ActivityOptions;)V
-HSPLcom/android/server/wm/Session;->actionOnWallpaper(Landroid/os/IBinder;Ljava/util/function/BiConsumer;)V+]Ljava/util/function/BiConsumer;Lcom/android/server/wm/Session$$ExternalSyntheticLambda5;,Lcom/android/server/wm/Session$$ExternalSyntheticLambda3;,Lcom/android/server/wm/Session$$ExternalSyntheticLambda1;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HPLcom/android/server/wm/Session;->setWallpaperZoomOut(Landroid/os/IBinder;F)V+]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;
 HSPLcom/android/server/wm/SmoothDimmer;->getDimBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/SmoothDimmer;->resetDimStates()V
-HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V+]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
-HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;
 HSPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
 HSPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
 HSPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V+]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V+]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer;
 HSPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
 HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
-HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I+]Lcom/android/server/wm/SystemGesturesPointerEventListener;Lcom/android/server/wm/SystemGesturesPointerEventListener;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V+]Landroid/view/GestureDetector;Lcom/android/server/wm/SystemGesturesPointerEventListener$1;]Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;Lcom/android/server/wm/DisplayPolicy$1;]Lcom/android/server/wm/SystemGesturesPointerEventListener;Lcom/android/server/wm/SystemGesturesPointerEventListener;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;
-HSPLcom/android/server/wm/Task$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V+]Landroid/view/GestureDetector;Lcom/android/server/wm/SystemGesturesPointerEventListener$1;]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;Lcom/android/server/wm/DisplayPolicy$1;]Lcom/android/server/wm/SystemGesturesPointerEventListener;Lcom/android/server/wm/SystemGesturesPointerEventListener;
 HSPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/Task$FindRootHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
-HSPLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z+]Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/Task$FindRootHelper;
-HSPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;
-HSPLcom/android/server/wm/Task;->canAffectSystemUiFlags()Z
-HSPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->cropWindowsToRootTaskBounds()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->dispatchTaskInfoChangedIfNeeded(Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;
-HSPLcom/android/server/wm/Task;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/PictureInPictureParams;Landroid/app/PictureInPictureParams;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/LetterboxConfiguration;
-HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda31;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda30;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/os/Handler;Lcom/android/server/wm/Task$ActivityTaskHandler;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Landroid/app/PictureInPictureParams;Landroid/app/PictureInPictureParams;]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/util/function/Consumer;megamorphic_types
+HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda31;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult;
 HSPLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Consumer;megamorphic_types
-HSPLcom/android/server/wm/Task;->getAdjacentTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;
-HSPLcom/android/server/wm/Task;->getDisplayInfo()Landroid/view/DisplayInfo;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/Task;->getOrganizedTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->getPictureInPictureParams(Lcom/android/server/wm/ActivityRecord;)Landroid/app/PictureInPictureParams;+]Landroid/app/PictureInPictureParams;Landroid/app/PictureInPictureParams;
-HSPLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/Task$FindRootHelper;
+HSPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;+]Landroid/view/DisplayCutout;Landroid/view/DisplayCutout;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Predicate;megamorphic_types
-HSPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->hasVisibleChildren()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->isCompatible(II)Z
-HSPLcom/android/server/wm/Task;->isFocused()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/Task;->isLeafTask()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->isOrganized()Z
-HSPLcom/android/server/wm/Task;->isResizeable()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->isResizeable(Z)Z
+HSPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->hasVisibleChildren()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->isLeafTask()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/Task;->isResizeable(Z)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/Task;->isRootTask()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->lambda$getTopVisibleActivity$10(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/Task;->onConfigurationChangedInner(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;
-HSPLcom/android/server/wm/Task;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;,Lcom/android/server/wm/LegacyDimmer;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/Task;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/Task;->sendTaskFragmentParentInfoChangedIfNeeded()V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->setTaskDescriptionFromActivityAboveRoot(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;
+HSPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;
+HSPLcom/android/server/wm/Task;->prepareSurfaces()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/LegacyDimmer;,Lcom/android/server/wm/SmoothDimmer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/Task;->shouldIgnoreInput()Z
-HSPLcom/android/server/wm/Task;->shouldSleepActivities()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/Task;->updateTaskDescription()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/internal/util/function/pooled/PooledPredicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;
-HSPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/internal/os/SomeArgs;Lcom/android/internal/os/SomeArgs;
+HSPLcom/android/server/wm/Task;->shouldSleepActivities()Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V+]Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V+]Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;megamorphic_types]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
+HSPLcom/android/server/wm/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;megamorphic_types
 HSPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/TaskDisplayArea;->getFocusedRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/TaskDisplayArea;->getOrientation(I)I+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskDisplayArea;]Ljava/lang/Integer;Ljava/lang/Integer;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
+HSPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;,Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TaskDisplayArea;->getRootTask(II)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/TaskDisplayArea;->lambda$getRootTask$0(IILcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Ljava/util/function/Predicate;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/TaskFragment;->getActivityType()I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskFragment;->getAdjacentTaskFragment()Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskDisplayArea;->lambda$getRootTask$0(IILcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/util/function/Predicate;Lcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda30;,Lcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda31;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda26;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda49;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda15;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda16;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda27;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda28;,Lcom/android/server/wm/TaskFragmentOrganizerController$$ExternalSyntheticLambda0;
+HSPLcom/android/server/wm/TaskFragment;->getActivityType()I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/DisplayArea;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/TaskFragment;->getDisplayId()I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->getOrientation(I)I+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->hasRunningActivity(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->isAttached()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
+HSPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->hasRunningActivity(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->isAttached()Z+]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/TaskFragment;->isFocusableAndVisible()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/TaskFragment;->isForceHidden()Z
-HSPLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskFragment;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;
-HSPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;,Lcom/android/server/wm/LegacyDimmer;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/TaskFragment;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
-HSPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;
-HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;
-HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/app/ActivityManager$RunningTaskInfo;Landroid/app/ActivityManager$RunningTaskInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;
-HSPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;
-HSPLcom/android/server/wm/TaskOrganizerController;->onTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/window/ITaskOrganizer;Landroid/window/ITaskOrganizer$Stub$Proxy;
-HSPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V
-HSPLcom/android/server/wm/Transition;->applyReady()V+]Lcom/android/server/wm/Transition$ReadyTrackerOld;Lcom/android/server/wm/Transition$ReadyTrackerOld;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;
-HSPLcom/android/server/wm/Transition;->finishTransition()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/wm/TaskSnapshotController;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/DisplayRotationCompatPolicy;Lcom/android/server/wm/DisplayRotationCompatPolicy;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/window/TransitionInfo$Root;Landroid/window/TransitionInfo$Root;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;]Landroid/window/TransitionInfo;Landroid/window/TransitionInfo;]Landroid/window/TransitionInfo$AnimationOptions;Landroid/window/TransitionInfo$AnimationOptions;
-HSPLcom/android/server/wm/TransitionController$Logger;->buildOnFinishLog()Ljava/lang/String;
-HSPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
+HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;
+HSPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
+HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V+]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
+HSPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/Transition;->finishTransition()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotationCompatPolicy;Lcom/android/server/wm/DisplayRotationCompatPolicy;]Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/wm/TaskSnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Landroid/window/TransitionInfo$AnimationOptions;Landroid/window/TransitionInfo$AnimationOptions;]Landroid/window/TransitionInfo$Root;Landroid/window/TransitionInfo$Root;]Landroid/window/TransitionInfo;Landroid/window/TransitionInfo;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->inPlayingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->inTransition()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->inTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
 HSPLcom/android/server/wm/TransitionController;->isCollecting()Z
 HSPLcom/android/server/wm/TransitionController;->isPlaying()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/TransitionController;->isShellTransitionsEnabled()Z
+HSPLcom/android/server/wm/TransitionController;->isShellTransitionsEnabled()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->isTransientVisible(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->isTransitionOnDisplay(Lcom/android/server/wm/DisplayContent;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/TransitionController;->shouldKeepFocus(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/VisibleActivityProcessTracker;->hasVisibleActivity(I)Z
-HSPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILjava/util/function/Predicate;)Z+]Ljava/util/function/Predicate;Lcom/android/server/wm/VisibleActivityProcessTracker$$ExternalSyntheticLambda0;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WallpaperController;->findWallpaperTarget()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WallpaperController;->findWallpapers()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILjava/util/function/Predicate;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/Predicate;Lcom/android/server/wm/VisibleActivityProcessTracker$$ExternalSyntheticLambda0;
 HSPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WallpaperController;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WallpaperController;->setWallpaperZoomOut(Lcom/android/server/wm/WindowState;F)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;
-HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;
+HSPLcom/android/server/wm/WallpaperController;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/wm/WallpaperWindowToken;->isVisible()Z+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;
-HSPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V+]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;
-HSPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(Z)V+]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda1;->doFrame(J)V
-HSPLcom/android/server/wm/WindowAnimator;->animate(J)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowTracing;Lcom/android/server/wm/WindowTracing;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;
+HSPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;
+HSPLcom/android/server/wm/WindowAnimator;->animate(J)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/WindowTracing;Lcom/android/server/wm/WindowTracing;
 HSPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
-HSPLcom/android/server/wm/WindowAnimator;->executeAfterPrepareSurfacesRunnables()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Runnable;Lcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;,Lcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda9;
-HSPLcom/android/server/wm/WindowAnimator;->lambda$new$1(J)V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Ljava/lang/Object;Lcom/android/server/wm/WindowManagerGlobalLock;
+HSPLcom/android/server/wm/WindowAnimator;->executeAfterPrepareSurfacesRunnables()V+]Ljava/lang/Runnable;Lcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda9;,Lcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowAnimator;->lambda$new$1(J)V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
 HSPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V+]Landroid/view/Choreographer;Landroid/view/Choreographer;
 HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z+]Ljava/util/function/Consumer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z+]Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
 HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
-HSPLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken;
-HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
 HSPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
+HSPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
-HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->getAnimatingContainer(II)Lcom/android/server/wm/WindowContainer;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
@@ -4440,85 +3774,58 @@
 HSPLcom/android/server/wm/WindowContainer;->getChildCount()I+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->getDisplayArea()Lcom/android/server/wm/DisplayArea;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HPLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray;
-HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/lang/Object;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->getOverrideOrientation()I
+HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
 HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Point;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;+]Lcom/android/server/wm/WindowList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;
 HSPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->hasInsetsSourceProvider()Z
 HSPLcom/android/server/wm/WindowContainer;->inTransition()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowContainer;->isAttached()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->isFocusable()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->isOnTop()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;
+HSPLcom/android/server/wm/WindowContainer;->isOnTop()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z+]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types
 HSPLcom/android/server/wm/WindowContainer;->isVisible()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->isVisibleRequested()Z
-HSPLcom/android/server/wm/WindowContainer;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->needsZBoost()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/WindowContainer;->needsZBoost()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;]Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
-HSPLcom/android/server/wm/WindowContainer;->onChildAdded(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;,Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContainer$2;,Lcom/android/server/wm/ContentRecorder;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->providesOrientation()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/ContentRecorder;,Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContainer$2;,Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;
-HSPLcom/android/server/wm/WindowContainer;->setVisibleRequested(Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;,Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContainer$2;,Lcom/android/server/wm/ContentRecorder;
-HSPLcom/android/server/wm/WindowContainer;->showWallpaper()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowContainer;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
+HSPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowFrames;->hasInsetsChanged()Z
 HSPLcom/android/server/wm/WindowFrames;->setReportResizeHints()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
 HSPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Message;Landroid/os/Message;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/view/IWindowSessionCallback;Landroid/view/IWindowSessionCallback$Stub$Proxy;
-HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/wm/WindowManagerThreadPriorityBooster;Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
-HSPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Handler;Lcom/android/server/wm/WindowManagerService$H;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Message;Landroid/os/Message;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V+]Landroid/os/Handler;Lcom/android/server/wm/WindowManagerService$H;]Landroid/os/Message;Landroid/os/Message;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V+]Ljava/lang/RuntimeException;Ljava/lang/RuntimeException;
-HSPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
 HSPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
 HSPLcom/android/server/wm/WindowManagerService;->getRecentsAnimationController()Lcom/android/server/wm/RecentsAnimationController;
-HSPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
 HSPLcom/android/server/wm/WindowManagerService;->isUserVisible(I)Z+]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HSPLcom/android/server/wm/WindowManagerService;->makeSurfaceBuilder(Landroid/view/SurfaceSession;)Landroid/view/SurfaceControl$Builder;+]Ljava/util/function/Function;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;
-HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/os/Bundle;)I+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/os/Bundle;Landroid/os/Bundle;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Ljava/lang/RuntimeException;Ljava/lang/RuntimeException;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;
 HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/wm/WindowManagerThreadPriorityBooster;Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
 HSPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
-HSPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
-HSPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;+]Ljava/util/HashMap;Ljava/util/HashMap;
-HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
-HSPLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/Transition;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;Lcom/android/server/wm/Transition;)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/lang/Object;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/window/WindowContainerTransaction$Change;Landroid/window/WindowContainerTransaction$Change;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Lcom/android/server/wm/WindowOrganizerController;Lcom/android/server/wm/WindowOrganizerController;
-HSPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;
+HSPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V+]Lcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;
-HSPLcom/android/server/wm/WindowProcessController;->addPackage(Ljava/lang/String;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(IZ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HPLcom/android/server/wm/WindowProcessController;->computeOomAdjFromActivities(Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;)I+]Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
-HSPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;
-HSPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
-HSPLcom/android/server/wm/WindowProcessController;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(IZ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/WindowProcessController;->hasActivities()Z
 HSPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z
 HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
@@ -4527,174 +3834,138 @@
 HSPLcom/android/server/wm/WindowProcessController;->isHeavyWeightProcess()Z
 HSPLcom/android/server/wm/WindowProcessController;->isHomeProcess()Z
 HSPLcom/android/server/wm/WindowProcessController;->isPreviousProcess()Z
-HPLcom/android/server/wm/WindowProcessController;->isShowingUiWhileDozing()Z
-HSPLcom/android/server/wm/WindowProcessController;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;
-HSPLcom/android/server/wm/WindowProcessController;->onServiceStarted(Landroid/content/pm/ServiceInfo;)V+]Ljava/lang/Object;Ljava/lang/String;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/WindowProcessController;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/wm/WindowProcessController;->onServiceStarted(Landroid/content/pm/ServiceInfo;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/lang/Object;Ljava/lang/String;
 HSPLcom/android/server/wm/WindowProcessController;->registeredForDisplayAreaConfigChanges()Z
 HSPLcom/android/server/wm/WindowProcessController;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;
-HSPLcom/android/server/wm/WindowProcessController;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/WindowProcessController;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/WindowProcessController;->setCurrentAdj(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setCurrentProcState(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setCurrentSchedulingGroup(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setFgInteractionTime(J)V
 HSPLcom/android/server/wm/WindowProcessController;->setInteractionEventTime(J)V
 HSPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V
-HSPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;
-HSPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
+HSPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
 HSPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/wm/WindowProcessControllerMap;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V+]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
-HSPLcom/android/server/wm/WindowState;->applyDims()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/SmoothDimmer;,Lcom/android/server/wm/LegacyDimmer;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
-HSPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/WindowState;->applyDims()V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/LegacyDimmer;,Lcom/android/server/wm/SmoothDimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
+HSPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/internal/util/ToBooleanFunction;megamorphic_types]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->areAppWindowBoundsLetterboxed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
-HSPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
 HSPLcom/android/server/wm/WindowState;->canBeHiddenByKeyguard()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
-HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->canReceiveKeys()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->computeDragResizing()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->computeDragResizing()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->fillsDisplay()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->finishDrawing(Landroid/view/SurfaceControl$Transaction;I)Z+]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
 HSPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
 HSPLcom/android/server/wm/WindowState;->getBaseType()I+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->getCompatInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/InsetsState;Landroid/view/InsetsState;
-HSPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/WindowState;->getDisplayFrames(Lcom/android/server/wm/DisplayFrames;)Lcom/android/server/wm/DisplayFrames;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;
-HSPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->getDisplayFrames(Lcom/android/server/wm/DisplayFrames;)Lcom/android/server/wm/DisplayFrames;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getFrame()Landroid/graphics/Rect;
-HPLcom/android/server/wm/WindowState;->getImeInputTarget()Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;
 HSPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutMillis()J
 HSPLcom/android/server/wm/WindowState;->getInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
 HSPLcom/android/server/wm/WindowState;->getKeepClearAreas(Ljava/util/Collection;Ljava/util/Collection;Landroid/graphics/Matrix;[F)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/Collection;Landroid/util/ArraySet;
 HSPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLcom/android/server/wm/WindowState;->getOrientationChanging()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
-HSPLcom/android/server/wm/WindowState;->getOwningUid()I
 HSPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;,Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLcom/android/server/wm/WindowState;->getRequestedVisibleTypes()I
-HPLcom/android/server/wm/WindowState;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;
-HSPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;Landroid/view/WindowManager$LayoutParams;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/graphics/Rect;Landroid/graphics/Rect;
+HSPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;Landroid/view/WindowManager$LayoutParams;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getTouchOcclusionMode()I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Ljava/util/function/Predicate;megamorphic_types]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+HSPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Ljava/lang/CharSequence;Ljava/lang/String;
 HSPLcom/android/server/wm/WindowState;->getWindowType()I
 HSPLcom/android/server/wm/WindowState;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Lcom/android/server/wm/AccessibilityController;Lcom/android/server/wm/AccessibilityController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->hasMoved()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->hasMoved()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->hasWallpaper()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isAnimationRunningSelfOrParent()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isChildWindow()Z
-HSPLcom/android/server/wm/WindowState;->isDimming()Z
-HSPLcom/android/server/wm/WindowState;->isDisplayed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->isDisplayed()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isDrawn()Z
 HSPLcom/android/server/wm/WindowState;->isDreamWindow()Z
 HSPLcom/android/server/wm/WindowState;->isFocused()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isFullyTransparent()Z
-HSPLcom/android/server/wm/WindowState;->isGoneForLayout()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->isGoneForLayout()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isImeLayeringTarget()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isImplicitlyExcludingAllSystemGestures()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isLastConfigReportedToClient()Z
-HSPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutout()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutout()Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isOnScreen()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isOnScreen()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isParentWindowGoneForLayout()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isRequestedVisible(I)Z
 HSPLcom/android/server/wm/WindowState;->isSelfAnimating(II)Z
 HSPLcom/android/server/wm/WindowState;->isVisible()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->isVisibleByPolicy()Z
-HSPLcom/android/server/wm/WindowState;->isVisibleByPolicyOrInsets()Z+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isVisibleRequestedOrAdding()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->isWindowTrustedOverlay()Z
-HSPLcom/android/server/wm/WindowState;->lambda$updateAboveInsetsState$3(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/ArraySet;Landroid/util/ArraySet;
-HPLcom/android/server/wm/WindowState;->matchesDisplayAreaBounds()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;]Landroid/graphics/Rect;Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowState;->needsZBoost()Z+]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowState;->notifyInsetsChanged()V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Landroid/os/Handler;Lcom/android/server/wm/WindowManagerService$H;
-HSPLcom/android/server/wm/WindowState;->onSurfaceShownChanged(Z)V+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowState;->performShowLocked()Z+]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/WindowState;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->registeredForDisplayAreaConfigChanges()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(I)I+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->reportResized()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLcom/android/server/wm/WindowState;->isVisibleByPolicyOrInsets()Z+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isVisibleRequestedOrAdding()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->needsZBoost()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->performShowLocked()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/WindowState;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
+HSPLcom/android/server/wm/WindowState;->registeredForDisplayAreaConfigChanges()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(I)I+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowState;->reportResized()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->resetContentChanged()V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
-HSPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->setFrames(Landroid/window/ClientWindowFrames;II)V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowState;->setLastExclusionHeights(III)V
+HSPLcom/android/server/wm/WindowState;->setFrames(Landroid/window/ClientWindowFrames;II)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/WindowState;->setReportResizeHints()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
-HSPLcom/android/server/wm/WindowState;->setWallpaperOffset(IIF)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->setWindowScale(II)V
 HSPLcom/android/server/wm/WindowState;->shouldCheckTokenVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
-HSPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z+]Lcom/android/server/wm/BlurController;Lcom/android/server/wm/BlurController;
-HSPLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->skipLayout()Z
+HSPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z
 HSPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
-HSPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Point;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Landroid/os/Handler;Lcom/android/server/wm/WindowManagerService$H;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WindowState;->updateScaleIfNeeded()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;,Lcom/android/server/wm/ImeInsetsSourceProvider;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/function/Consumer;Lcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;,Lcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;
-HSPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;
-HSPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Lcom/android/server/wm/WindowList;
+HSPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowState;->updateScaleIfNeeded()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/LetterboxUiController;Lcom/android/server/wm/LetterboxUiController;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/function/Consumer;Lcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;,Lcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;
+HSPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
+HSPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z+]Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Lcom/android/server/wm/WindowSurfaceController;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked(Landroid/view/SurfaceControl$Transaction;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
 HSPLcom/android/server/wm/WindowStateAnimator;->getShown()Z+]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;
 HSPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z+]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;
-HSPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowSurfaceController;-><init>(Ljava/lang/String;IILcom/android/server/wm/WindowStateAnimator;I)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;
+HSPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowSurfaceController;Lcom/android/server/wm/WindowSurfaceController;
 HSPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z
-HSPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;
 HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
-HSPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
 HSPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
 HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V+]Landroid/os/Handler;Landroid/os/Handler;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
-HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V+]Landroid/os/Handler;Landroid/os/Handler;
-HSPLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayFrames()Lcom/android/server/wm/DisplayFrames;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/WindowToken;->getFixedRotationTransformInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;,Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowToken;->getFixedRotationTransformInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
 HSPLcom/android/server/wm/WindowToken;->isClientVisible()Z
 HSPLcom/android/server/wm/WindowToken;->isFixedRotationTransforming()Z
-HSPLcom/android/server/wm/WindowTracing;->isEnabled()Z
 HSPLcom/android/server/wm/utils/DisplayInfoOverrides;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->getValue()I+]Lcom/android/server/wm/utils/OptPropFactory$ThrowableBooleanSupplier;Lcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda1;,Lcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda0;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->isFalse()Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;,Lcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->isFalse()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;,Lcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;
 HPLcom/android/server/wm/utils/RegionUtils;->forEachRectReverse(Landroid/graphics/Region;Ljava/util/function/Consumer;)V+]Landroid/graphics/RegionIterator;Landroid/graphics/RegionIterator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLcom/android/server/wm/utils/RegionUtils;->rectListToRegion(Ljava/util/List;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/util/List;Ljava/util/ArrayList;
-Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;
+Landroid/os/IInstalld$Stub$Proxy;
 Lcom/android/server/BatteryService$LocalService;
+Lcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl$$ExternalSyntheticLambda0;
 Lcom/android/server/DeviceIdleController$LocalService;
 Lcom/android/server/alarm/AlarmManagerService$LocalService;
 Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
@@ -4703,8 +3974,11 @@
 Lcom/android/server/am/ActivityManagerService$LocalService;
 Lcom/android/server/am/ActivityManagerService$MainHandler;
 Lcom/android/server/am/BatteryStatsService$3;
+Lcom/android/server/am/BatteryStatsService$LocalService;
+Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
 Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
 Lcom/android/server/am/ProcessRecord;
+Lcom/android/server/app/GameServiceProviderInstanceImpl$4;
 Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;
 Lcom/android/server/apphibernation/AppHibernationService$LocalService;
 Lcom/android/server/appop/AppOpsService$2;
@@ -4713,7 +3987,9 @@
 Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;
 Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;
 Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;
+Lcom/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider$BiometricTaskStackListener;
 Lcom/android/server/connectivity/MultipathPolicyTracker$2;
+Lcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;
 Lcom/android/server/display/DisplayManagerService$LocalService;
 Lcom/android/server/dreams/DreamManagerService$LocalService;
 Lcom/android/server/input/InputManagerService$LocalService;
@@ -4738,7 +4014,6 @@
 Lcom/android/server/pm/UserManagerService$LocalService;
 Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
 Lcom/android/server/pm/local/PackageManagerLocalImpl;
-Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
 Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
 Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;
 Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
@@ -4770,4 +4045,3 @@
 Lcom/android/server/wm/WindowManagerService$LocalService;
 Lcom/android/server/wm/WindowManagerService;
 Lcom/android/server/wm/WindowState;
-Lcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;
diff --git a/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java b/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java
index f289115..aa76200 100644
--- a/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java
+++ b/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java
@@ -62,6 +62,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.os.SystemClock;
 import android.provider.Settings;
 import android.service.autofill.Dataset;
 import android.text.TextUtils;
@@ -211,17 +212,21 @@
             AUTOFILL_FILL_RESPONSE_REPORTED__DETECTION_PREFERENCE__DETECTION_PREFER_AUTOFILL_PROVIDER;
     public static final int DETECTION_PREFER_PCC =
             AUTOFILL_FILL_RESPONSE_REPORTED__DETECTION_PREFERENCE__DETECTION_PREFER_PCC;
-    private final int mSessionId;
 
+    private static final int DEFAULT_VALUE_INT = -1;
+
+    private final int mSessionId;
     /**
      * For app_package_uid.
      */
     private final int mCallingAppUid;
     private Optional<PresentationStatsEventInternal> mEventInternal;
+    private final long mSessionStartTimestamp;
 
-    private PresentationStatsEventLogger(int sessionId, int callingAppUid) {
+    private PresentationStatsEventLogger(int sessionId, int callingAppUid, long timestamp) {
         mSessionId = sessionId;
         mCallingAppUid = callingAppUid;
+        mSessionStartTimestamp = timestamp;
         mEventInternal = Optional.empty();
     }
 
@@ -229,8 +234,8 @@
      * Create PresentationStatsEventLogger, populated with sessionId and the callingAppUid
      */
     public static PresentationStatsEventLogger createPresentationLog(
-            int sessionId, int callingAppUid) {
-        return new PresentationStatsEventLogger(sessionId, callingAppUid);
+            int sessionId, int callingAppUid, long timestamp) {
+        return new PresentationStatsEventLogger(sessionId, callingAppUid, timestamp);
     }
 
     public void startNewEvent() {
@@ -370,28 +375,50 @@
         });
     }
 
+    public void maybeSetFillRequestSentTimestampMs() {
+        maybeSetFillRequestSentTimestampMs(getElapsedTime());
+    }
+
     public void maybeSetFillResponseReceivedTimestampMs(int timestamp) {
         mEventInternal.ifPresent(event -> {
             event.mFillResponseReceivedTimestampMs = timestamp;
         });
     }
 
+    public void maybeSetFillResponseReceivedTimestampMs() {
+        maybeSetFillResponseReceivedTimestampMs(getElapsedTime());
+    }
+
     public void maybeSetSuggestionSentTimestampMs(int timestamp) {
         mEventInternal.ifPresent(event -> {
             event.mSuggestionSentTimestampMs = timestamp;
         });
     }
 
+    public void maybeSetSuggestionSentTimestampMs() {
+        maybeSetSuggestionSentTimestampMs(getElapsedTime());
+    }
+
     public void maybeSetSuggestionPresentedTimestampMs(int timestamp) {
         mEventInternal.ifPresent(event -> {
-            event.mSuggestionPresentedTimestampMs = timestamp;
+            // mSuggestionPresentedTimestampMs only tracks the first suggested timestamp.
+            if (event.mSuggestionPresentedTimestampMs == DEFAULT_VALUE_INT) {
+                event.mSuggestionPresentedTimestampMs = timestamp;
+            }
+
+            event.mSuggestionPresentedLastTimestampMs = timestamp;
         });
     }
 
+    public void maybeSetSuggestionPresentedTimestampMs() {
+        maybeSetSuggestionPresentedTimestampMs(getElapsedTime());
+    }
+
     public void maybeSetSelectedDatasetId(int selectedDatasetId) {
         mEventInternal.ifPresent(event -> {
             event.mSelectedDatasetId = selectedDatasetId;
         });
+        setPresentationSelectedTimestamp();
     }
 
     public void maybeSetDialogDismissed(boolean dialogDismissed) {
@@ -479,6 +506,11 @@
         });
     }
 
+    /** Set latency_authentication_ui_display_millis as long as mEventInternal presents. */
+    public void maybeSetLatencyAuthenticationUiDisplayMillis() {
+        maybeSetLatencyAuthenticationUiDisplayMillis(getElapsedTime());
+    }
+
     /**
      * Set latency_dataset_display_millis as long as mEventInternal presents.
      */
@@ -488,6 +520,11 @@
         });
     }
 
+    /** Set latency_dataset_display_millis as long as mEventInternal presents. */
+    public void maybeSetLatencyDatasetDisplayMillis() {
+        maybeSetLatencyDatasetDisplayMillis(getElapsedTime());
+    }
+
     /**
      * Set available_pcc_count.
      */
@@ -524,6 +561,53 @@
         });
     }
 
+    /**
+     * Set various timestamps whenever the ViewState is modified
+     *
+     * <p>If the ViewState contains ViewState.STATE_AUTOFILLED, sets field_autofilled_timestamp_ms
+     * else, set field_first_modified_timestamp_ms (if unset) and field_last_modified_timestamp_ms
+     */
+    public void onFieldTextUpdated(ViewState state) {
+        mEventInternal.ifPresent(
+                event -> {
+                    int timestamp = getElapsedTime();
+                    // Focused id should be set before this is called
+                    if (state.id != null && state.id.getViewId() != event.mFocusedId) {
+                        // if these don't match, the currently field different than before
+                        Slog.w(
+                                TAG,
+                                "current id: "
+                                        + state.id.getViewId()
+                                        + " is different than focused id: "
+                                        + event.mFocusedId);
+                        return;
+                    }
+
+                    if ((state.getState() & ViewState.STATE_AUTOFILLED) != 0) {
+                        event.mAutofilledTimestampMs = timestamp;
+                    } else {
+                        if (event.mFieldModifiedFirstTimestampMs == DEFAULT_VALUE_INT) {
+                            event.mFieldModifiedFirstTimestampMs = timestamp;
+                        }
+                        event.mFieldModifiedLastTimestampMs = timestamp;
+                    }
+                });
+    }
+
+    public void setPresentationSelectedTimestamp() {
+        mEventInternal.ifPresent(event -> {
+            event.mSelectionTimestamp = getElapsedTime();
+        });
+    }
+
+    /**
+     * Returns timestamp (relative to mSessionStartTimestamp)
+     */
+    private int getElapsedTime() {
+        return (int)(SystemClock.elapsedRealtime() - mSessionStartTimestamp);
+    }
+
+
     private int convertDatasetPickReason(@Dataset.DatasetEligibleReason int val) {
         switch (val) {
             case 0:
@@ -648,7 +732,17 @@
                     + " mViewFillFailureCount=" + event.mViewFillFailureCount
                     + " mFocusedId=" + event.mFocusedId
                     + " mViewFillSuccessCount=" + event.mViewFillSuccessCount
-                    + " mViewFilledButUnexpectedCount=" + event.mViewFilledButUnexpectedCount);
+                    + " mViewFilledButUnexpectedCount=" + event.mViewFilledButUnexpectedCount
+                    + " event.mSelectionTimestamp=" + event.mSelectionTimestamp
+                    + " event.mAutofilledTimestampMs=" + event.mAutofilledTimestampMs
+                    + " event.mFieldModifiedFirstTimestampMs="
+                    + event.mFieldModifiedFirstTimestampMs
+                    + " event.mFieldModifiedLastTimestampMs=" + event.mFieldModifiedLastTimestampMs
+                    + " event.mSuggestionPresentedLastTimestampMs="
+                    + event.mSuggestionPresentedLastTimestampMs
+                    + " event.mFocusedVirtualAutofillId=" + event.mFocusedVirtualAutofillId
+                    + " event.mFieldFirstLength=" + event.mFieldFirstLength
+                    + " event.mFieldLastLength=" + event.mFieldLastLength);
         }
 
         // TODO(b/234185326): Distinguish empty responses from other no presentation reasons.
@@ -694,7 +788,15 @@
                 event.mViewFillFailureCount,
                 event.mFocusedId,
                 event.mViewFillSuccessCount,
-                event.mViewFilledButUnexpectedCount);
+                event.mViewFilledButUnexpectedCount,
+                event.mSelectionTimestamp,
+                event.mAutofilledTimestampMs,
+                event.mFieldModifiedFirstTimestampMs,
+                event.mFieldModifiedLastTimestampMs,
+                event.mSuggestionPresentedLastTimestampMs,
+                event.mFocusedVirtualAutofillId,
+                event.mFieldFirstLength,
+                event.mFieldLastLength);
         mEventInternal = Optional.empty();
     }
 
@@ -708,31 +810,39 @@
         int mCountNotShownImePresentationNotDrawn;
         int mCountNotShownImeUserNotSeen;
         int mDisplayPresentationType = AUTOFILL_PRESENTATION_EVENT_REPORTED__DISPLAY_PRESENTATION_TYPE__UNKNOWN_AUTOFILL_DISPLAY_PRESENTATION_TYPE;
-        int mAutofillServiceUid = -1;
-        int mInlineSuggestionHostUid = -1;
+        int mAutofillServiceUid = DEFAULT_VALUE_INT;
+        int mInlineSuggestionHostUid = DEFAULT_VALUE_INT;
         boolean mIsRequestTriggered;
-        int mFillRequestSentTimestampMs;
-        int mFillResponseReceivedTimestampMs;
-        int mSuggestionSentTimestampMs;
-        int mSuggestionPresentedTimestampMs;
-        int mSelectedDatasetId = -1;
+        int mFillRequestSentTimestampMs = DEFAULT_VALUE_INT;
+        int mFillResponseReceivedTimestampMs = DEFAULT_VALUE_INT;
+        int mSuggestionSentTimestampMs = DEFAULT_VALUE_INT;
+        int mSuggestionPresentedTimestampMs = DEFAULT_VALUE_INT;
+        int mSelectedDatasetId = DEFAULT_VALUE_INT;
         boolean mDialogDismissed = false;
         boolean mNegativeCtaButtonClicked = false;
         boolean mPositiveCtaButtonClicked = false;
         int mAuthenticationType = AUTHENTICATION_TYPE_UNKNOWN;
         int mAuthenticationResult = AUTHENTICATION_RESULT_UNKNOWN;
-        int mLatencyAuthenticationUiDisplayMillis = -1;
-        int mLatencyDatasetDisplayMillis = -1;
-        int mAvailablePccCount = -1;
-        int mAvailablePccOnlyCount = -1;
+        int mLatencyAuthenticationUiDisplayMillis = DEFAULT_VALUE_INT;
+        int mLatencyDatasetDisplayMillis = DEFAULT_VALUE_INT;
+        int mAvailablePccCount = DEFAULT_VALUE_INT;
+        int mAvailablePccOnlyCount = DEFAULT_VALUE_INT;
         @DatasetPickedReason int mSelectedDatasetPickedReason = PICK_REASON_UNKNOWN;
         @DetectionPreference int mDetectionPreference = DETECTION_PREFER_UNKNOWN;
-        int mFieldClassificationRequestId = -1;
+        int mFieldClassificationRequestId = DEFAULT_VALUE_INT;
         boolean mIsCredentialRequest = false;
         boolean mWebviewRequestedCredential = false;
-        int mViewFillableTotalCount = -1;
-        int mViewFillFailureCount = -1;
-        int mFocusedId = -1;
+        int mViewFillableTotalCount = DEFAULT_VALUE_INT;
+        int mViewFillFailureCount = DEFAULT_VALUE_INT;
+        int mFocusedId = DEFAULT_VALUE_INT;
+        int mSelectionTimestamp = DEFAULT_VALUE_INT;
+        int mAutofilledTimestampMs = DEFAULT_VALUE_INT;
+        int mFieldModifiedFirstTimestampMs = DEFAULT_VALUE_INT;
+        int mFieldModifiedLastTimestampMs = DEFAULT_VALUE_INT;
+        int mSuggestionPresentedLastTimestampMs = DEFAULT_VALUE_INT;
+        int mFocusedVirtualAutofillId = DEFAULT_VALUE_INT;
+        int mFieldFirstLength = DEFAULT_VALUE_INT;
+        int mFieldLastLength = DEFAULT_VALUE_INT;
 
         // Default value for success count is set to 0 explicitly. Setting it to -1 for
         // uninitialized doesn't help much, as this would be non-zero only if callback is received.
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index c46464b..aa67ffe 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -1553,7 +1553,7 @@
         mLatencyBaseTime = mStartTime;
         mRequestCount = 0;
         mPresentationStatsEventLogger = PresentationStatsEventLogger.createPresentationLog(
-                sessionId, uid);
+                sessionId, uid, mLatencyBaseTime);
         mFillRequestEventLogger = FillRequestEventLogger.forSessionId(sessionId);
         mFillResponseEventLogger = FillResponseEventLogger.forSessionId(sessionId);
         mSessionCommittedEventLogger = SessionCommittedEventLogger.forSessionId(sessionId);
@@ -1575,14 +1575,6 @@
                     @Override
                     public void notifyInlineUiShown(AutofillId autofillId) {
                         notifyFillUiShown(autofillId);
-
-                        synchronized (mLock) {
-                            // TODO(b/262448552): Log when chip inflates instead of here
-                            final long inlineUiShownRelativeTimestamp =
-                                    SystemClock.elapsedRealtime() - mLatencyBaseTime;
-                            mPresentationStatsEventLogger.maybeSetSuggestionPresentedTimestampMs(
-                                    (int) (inlineUiShownRelativeTimestamp));
-                        }
                     }
 
                     @Override
@@ -2678,6 +2670,7 @@
                 mLoggedInlineDatasetShown = true;
             }
             mService.logDatasetShown(this.id, mClientState, uiType);
+            mPresentationStatsEventLogger.maybeSetSuggestionPresentedTimestampMs();
             Slog.d(TAG, "onShown(): " + uiType);
         }
     }
@@ -4788,7 +4781,6 @@
         updateFilteringStateOnValueChangedLocked(textValue, viewState);
 
         viewState.setCurrentValue(value);
-
         final String filterText = textValue;
 
         final AutofillValue filledValue = viewState.getAutofilledValue();
@@ -4815,6 +4807,7 @@
                 currentView.maybeCallOnFillReady(flags);
             }
         }
+        mPresentationStatsEventLogger.onFieldTextUpdated(viewState);
 
         if (viewState.id.equals(this.mCurrentViewId)
                 && (viewState.getState() & ViewState.STATE_INLINE_SHOWN) != 0) {
@@ -4902,10 +4895,7 @@
 
         synchronized (mLock) {
             // Time passed since Session was created
-            final long suggestionSentRelativeTimestamp =
-                    SystemClock.elapsedRealtime() - mLatencyBaseTime;
-            mPresentationStatsEventLogger.maybeSetSuggestionSentTimestampMs(
-                    (int) (suggestionSentRelativeTimestamp));
+            mPresentationStatsEventLogger.maybeSetSuggestionSentTimestampMs();
         }
 
         final AutofillId[] ids = response.getFillDialogTriggerIds();
@@ -4922,13 +4912,6 @@
                 // Note: Cannot disable before requestShowFillDialog() because the method
                 //       need to check whether fill dialog enabled.
                 setFillDialogDisabled();
-                synchronized (mLock) {
-                    // Logs when fill dialog ui is shown; time since Session was created
-                    final long fillDialogUiShownRelativeTimestamp =
-                            SystemClock.elapsedRealtime() - mLatencyBaseTime;
-                    mPresentationStatsEventLogger.maybeSetSuggestionPresentedTimestampMs(
-                            (int) (fillDialogUiShownRelativeTimestamp));
-                }
                 return;
             } else {
                 setFillDialogDisabled();
@@ -4970,10 +4953,6 @@
                 // Log first time UI is shown.
                 mUiShownTime = SystemClock.elapsedRealtime();
                 final long duration = mUiShownTime - mStartTime;
-                // This logs when dropdown ui was shown. Timestamp is relative to
-                // when the session was created
-                mPresentationStatsEventLogger.maybeSetSuggestionPresentedTimestampMs(
-                        (int) (mUiShownTime - mLatencyBaseTime));
 
                 if (sDebug) {
                     final StringBuilder msg = new StringBuilder("1st UI for ")
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 30e4a3e..c9cce15 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -18,6 +18,7 @@
 package com.android.server.companion;
 
 import static android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES;
+import static android.Manifest.permission.BLUETOOTH_CONNECT;
 import static android.Manifest.permission.DELIVER_COMPANION_MESSAGES;
 import static android.Manifest.permission.MANAGE_COMPANION_DEVICES;
 import static android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED;
@@ -34,7 +35,6 @@
 import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
 import static com.android.server.companion.utils.PackageUtils.getPackageInfo;
 import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed;
-import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageCompanionDevice;
 import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
 import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOr;
 import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
@@ -53,6 +53,9 @@
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.ecm.EnhancedConfirmationManager;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothManager;
 import android.companion.AssociationInfo;
 import android.companion.AssociationRequest;
 import android.companion.IAssociationRequestCallback;
@@ -335,12 +338,6 @@
             enforceCallerCanManageAssociationsForPackage(getContext(), userId, packageName,
                     "get associations");
 
-            if (!checkCallerCanManageCompanionDevice(getContext())) {
-                // If the caller neither is system nor holds MANAGE_COMPANION_DEVICES: it needs to
-                // request the feature (also: the caller is the app itself).
-                enforceUsesCompanionDeviceFeature(getContext(), userId, packageName);
-            }
-
             return mAssociationStore.getActiveAssociationsByPackage(userId, packageName);
         }
 
@@ -548,6 +545,31 @@
         }
 
         @Override
+        @EnforcePermission(BLUETOOTH_CONNECT)
+        public boolean removeBond(int associationId, String packageName, int userId) {
+            removeBond_enforcePermission();
+
+            Slog.i(TAG, "removeBond() "
+                    + "associationId=" + associationId + ", "
+                    + "package=u" + userId + "/" + packageName);
+            enforceCallerCanManageAssociationsForPackage(getContext(), userId, packageName,
+                    "remove bonds");
+
+            AssociationInfo association = mAssociationStore
+                    .getAssociationWithCallerChecks(associationId);
+            MacAddress address = association.getDeviceMacAddress();
+            if (address == null) {
+                throw new IllegalArgumentException(
+                        "Association id=[" + associationId + "] doesn't have a device address.");
+            }
+
+            BluetoothAdapter btAdapter = getContext().getSystemService(BluetoothManager.class)
+                    .getAdapter();
+            BluetoothDevice btDevice = btAdapter.getRemoteDevice(address.toString().toUpperCase());
+            return btDevice.removeBond();
+        }
+
+        @Override
         public PendingIntent buildPermissionTransferUserConsentIntent(String packageName,
                 int userId, int associationId) {
             return mSystemDataTransferProcessor.buildPermissionTransferUserConsentIntent(
diff --git a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
index d09d7e6..3fbd856 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
@@ -347,6 +347,8 @@
      * Set association tag.
      */
     public void setAssociationTag(int associationId, String tag) {
+        Slog.i(TAG, "Setting association tag=[" + tag + "] to id=[" + associationId + "]...");
+
         AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
                 associationId);
         association = (new AssociationInfo.Builder(association)).setTag(tag).build();
diff --git a/services/companion/java/com/android/server/companion/association/AssociationStore.java b/services/companion/java/com/android/server/companion/association/AssociationStore.java
index 29e8095..757abd9 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationStore.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationStore.java
@@ -18,7 +18,7 @@
 
 import static com.android.server.companion.utils.MetricUtils.logCreateAssociation;
 import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation;
-import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageAssociationsForPackage;
+import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -457,6 +457,10 @@
 
     /**
      * Get association by id with caller checks.
+     *
+     * If the association is not found, an IllegalArgumentException would be thrown.
+     *
+     * If the caller can't access the association, a SecurityException would be thrown.
      */
     @NonNull
     public AssociationInfo getAssociationWithCallerChecks(int associationId) {
@@ -466,13 +470,9 @@
                     "getAssociationWithCallerChecks() Association id=[" + associationId
                             + "] doesn't exist.");
         }
-        if (checkCallerCanManageAssociationsForPackage(mContext, association.getUserId(),
-                association.getPackageName())) {
-            return association;
-        }
-
-        throw new IllegalArgumentException(
-                "The caller can't interact with the association id=[" + associationId + "].");
+        enforceCallerCanManageAssociationsForPackage(mContext, association.getUserId(),
+                association.getPackageName(), null);
+        return association;
     }
 
     /**
diff --git a/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java b/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java
index 8c1116b..6f0baef 100644
--- a/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java
+++ b/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java
@@ -98,7 +98,6 @@
         Slog.i(TAG, "Disassociating id=[" + id + "]...");
 
         final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(id);
-
         final int userId = association.getUserId();
         final String packageName = association.getPackageName();
         final String deviceProfile = association.getDeviceProfile();
diff --git a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
index 026d29c..00e049c 100644
--- a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
+++ b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
@@ -122,7 +122,6 @@
      */
     public boolean isPermissionTransferUserConsented(int associationId) {
         mAssociationStore.getAssociationWithCallerChecks(associationId);
-
         PermissionSyncRequest request = getPermissionSyncRequest(associationId);
         if (request == null) {
             return false;
@@ -147,12 +146,12 @@
             return null;
         }
 
-        final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
-                associationId);
-
         Slog.i(LOG_TAG, "Creating permission sync intent for userId [" + userId
                 + "] associationId [" + associationId + "]");
 
+        final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
+                associationId);
+
         // Create an internal intent to launch the user consent dialog
         final Bundle extras = new Bundle();
         PermissionSyncRequest request = new PermissionSyncRequest(associationId);
@@ -220,7 +219,9 @@
      * Enable perm sync for the association
      */
     public void enablePermissionsSync(int associationId) {
-        int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId();
+        AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
+                associationId);
+        int userId = association.getUserId();
         PermissionSyncRequest request = new PermissionSyncRequest(associationId);
         request.setUserConsented(true);
         mSystemDataTransferRequestStore.writeRequest(userId, request);
@@ -230,7 +231,9 @@
      * Disable perm sync for the association
      */
     public void disablePermissionsSync(int associationId) {
-        int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId();
+        AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
+                associationId);
+        int userId = association.getUserId();
         PermissionSyncRequest request = new PermissionSyncRequest(associationId);
         request.setUserConsented(false);
         mSystemDataTransferRequestStore.writeRequest(userId, request);
@@ -241,8 +244,9 @@
      */
     @Nullable
     public PermissionSyncRequest getPermissionSyncRequest(int associationId) {
-        int userId = mAssociationStore.getAssociationWithCallerChecks(associationId)
-                .getUserId();
+        AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
+                associationId);
+        int userId = association.getUserId();
         List<SystemDataTransferRequest> requests =
                 mSystemDataTransferRequestStore.readRequestsByAssociationId(userId,
                         associationId);
@@ -259,7 +263,9 @@
      */
     public void removePermissionSyncRequest(int associationId) {
         Binder.withCleanCallingIdentity(() -> {
-            int userId = mAssociationStore.getAssociationById(associationId).getUserId();
+            AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(
+                    associationId);
+            int userId = association.getUserId();
             mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId);
         });
     }
diff --git a/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java b/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
index f397814..796d285 100644
--- a/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
@@ -149,21 +149,6 @@
     }
 
     /**
-     * Check if the caller is system UID or the provided user.
-     */
-    public static boolean checkCallerIsSystemOr(@UserIdInt int userId,
-            @NonNull String packageName) {
-        final int callingUid = getCallingUid();
-        if (callingUid == SYSTEM_UID) return true;
-
-        if (getCallingUserId() != userId) return false;
-
-        if (!checkPackage(callingUid, packageName)) return false;
-
-        return true;
-    }
-
-    /**
      * Check if the calling user id matches the userId, and if the package belongs to
      * the calling uid.
      */
@@ -184,21 +169,30 @@
     }
 
     /**
-     * Check if the caller holds the necessary permission to manage companion devices.
-     */
-    public static boolean checkCallerCanManageCompanionDevice(@NonNull Context context) {
-        if (getCallingUid() == SYSTEM_UID) return true;
-
-        return context.checkCallingPermission(MANAGE_COMPANION_DEVICES) == PERMISSION_GRANTED;
-    }
-
-    /**
      * Require the caller to be able to manage the associations for the package.
      */
     public static void enforceCallerCanManageAssociationsForPackage(@NonNull Context context,
             @UserIdInt int userId, @NonNull String packageName,
             @Nullable String actionDescription) {
-        if (checkCallerCanManageAssociationsForPackage(context, userId, packageName)) return;
+        final int callingUid = getCallingUid();
+
+        // If the caller is the system
+        if (callingUid == SYSTEM_UID) {
+            return;
+        }
+
+        // If caller can manage the package or has the permissions to manage companion devices
+        boolean canInteractAcrossUsers = context.checkCallingPermission(INTERACT_ACROSS_USERS)
+                == PERMISSION_GRANTED;
+        boolean canManageCompanionDevices = context.checkCallingPermission(MANAGE_COMPANION_DEVICES)
+                == PERMISSION_GRANTED;
+        if (getCallingUserId() == userId) {
+            if (checkPackage(callingUid, packageName) || canManageCompanionDevices) {
+                return;
+            }
+        } else if (canInteractAcrossUsers && canManageCompanionDevices) {
+            return;
+        }
 
         throw new SecurityException("Caller (uid=" + getCallingUid() + ") does not have "
                 + "permissions to "
@@ -219,25 +213,6 @@
         }
     }
 
-    /**
-     * Check if the caller is either:
-     * <ul>
-     * <li> the package itself
-     * <li> the System ({@link android.os.Process#SYSTEM_UID})
-     * <li> holds {@link Manifest.permission#MANAGE_COMPANION_DEVICES} and, if belongs to a
-     * different user, also holds {@link Manifest.permission#INTERACT_ACROSS_USERS}.
-     * </ul>
-     * @return whether the caller is one of the above.
-     */
-    public static boolean checkCallerCanManageAssociationsForPackage(@NonNull Context context,
-            @UserIdInt int userId, @NonNull String packageName) {
-        if (checkCallerIsSystemOr(userId, packageName)) return true;
-
-        if (!checkCallerCanInteractWithUserId(context, userId)) return false;
-
-        return checkCallerCanManageCompanionDevice(context);
-    }
-
     private static boolean checkPackage(@UserIdInt int uid, @NonNull String packageName) {
         try {
             return getAppOpsService().checkPackage(uid, packageName) == MODE_ALLOWED;
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index 4a99007..6704049 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -1055,7 +1055,7 @@
 
     @Override // Binder call
     @EnforcePermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
-    public int getVirtualCameraId(@NonNull VirtualCameraConfig cameraConfig)
+    public String getVirtualCameraId(@NonNull VirtualCameraConfig cameraConfig)
             throws RemoteException {
         super.getVirtualCameraId_enforcePermission();
         Objects.requireNonNull(cameraConfig);
diff --git a/services/companion/java/com/android/server/companion/virtual/camera/VirtualCameraController.java b/services/companion/java/com/android/server/companion/virtual/camera/VirtualCameraController.java
index 743086e..62efafb 100644
--- a/services/companion/java/com/android/server/companion/virtual/camera/VirtualCameraController.java
+++ b/services/companion/java/com/android/server/companion/virtual/camera/VirtualCameraController.java
@@ -135,7 +135,7 @@
     }
 
     /** Return the id of the virtual camera with the given config. */
-    public int getCameraId(@NonNull VirtualCameraConfig cameraConfig) {
+    public String getCameraId(@NonNull VirtualCameraConfig cameraConfig) {
         connectVirtualCameraServiceIfNeeded();
 
         try {
diff --git a/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java b/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
index f5db6e9..bc35fea 100644
--- a/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
+++ b/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
@@ -20,6 +20,7 @@
 import static android.app.AppOpsManager.OP_ASSIST_SCREENSHOT;
 import static android.app.AppOpsManager.OP_ASSIST_STRUCTURE;
 import static android.content.Context.CONTEXTUAL_SEARCH_SERVICE;
+import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
 import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION;
@@ -245,7 +246,7 @@
 
         if (DEBUG_USER) Log.d(TAG, "Launch component: " + launchIntent.getComponent());
         launchIntent.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_NO_ANIMATION
-                | FLAG_ACTIVITY_NO_USER_ACTION);
+                | FLAG_ACTIVITY_NO_USER_ACTION | FLAG_ACTIVITY_CLEAR_TASK);
         launchIntent.putExtra(
                 ContextualSearchManager.EXTRA_INVOCATION_TIME_MS,
                 SystemClock.uptimeMillis());
diff --git a/services/core/Android.bp b/services/core/Android.bp
index f1339e9..167c384 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -93,38 +93,6 @@
 }
 
 genrule {
-    name: "checked-protolog.json",
-    srcs: [
-        ":generate-protolog.json",
-        ":services.core.protolog.json",
-    ],
-    cmd: "cp $(location :generate-protolog.json) $(out) && " +
-        "{ ! (diff $(out) $(location :services.core.protolog.json) | grep -q '^<') || " +
-        "{ echo -e '\\n\\n################################################################\\n#\\n" +
-        "#  ERROR: ProtoLog viewer config is stale.  To update it, run:\\n#\\n" +
-        "#  cp $${ANDROID_BUILD_TOP}/$(location :generate-protolog.json) " +
-        "$${ANDROID_BUILD_TOP}/$(location :services.core.protolog.json)\\n#\\n" +
-        "################################################################\\n\\n' >&2 && false; } }",
-    out: ["services.core.protolog.json"],
-}
-
-genrule {
-    name: "checked-core.protolog.pb",
-    srcs: [
-        ":gen-core.protolog.pb",
-        ":file-core.protolog.pb",
-    ],
-    cmd: "cp $(location :gen-core.protolog.pb) $(out) && " +
-        "{ ! (diff $(out) $(location :file-core.protolog.pb) | grep -q '^<') || " +
-        "{ echo -e '\\n\\n################################################################\\n#\\n" +
-        "#  ERROR: ProtoLog viewer config is stale.  To update it, run:\\n#\\n" +
-        "#  cp $${ANDROID_BUILD_TOP}/$(location :gen-core.protolog.pb) " +
-        "$${ANDROID_BUILD_TOP}/$(location :file-core.protolog.pb)\\n#\\n" +
-        "################################################################\\n\\n' >&2 && false; } }",
-    out: ["core.protolog.pb"],
-}
-
-genrule {
     name: "statslog-art-java-gen",
     tools: ["stats-log-api-gen"],
     cmd: "$(location stats-log-api-gen) --java $(out) --module art" +
@@ -303,7 +271,7 @@
 
 genrule {
     name: "services.core.json.gz",
-    srcs: [":checked-protolog.json"],
+    srcs: [":generate-protolog.json"],
     out: ["services.core.protolog.json.gz"],
     cmd: "gzip -c < $(in) > $(out)",
 }
@@ -315,5 +283,5 @@
 
 prebuilt_etc {
     name: "core.protolog.pb",
-    src: ":checked-core.protolog.pb",
+    src: ":gen-core.protolog.pb",
 }
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index e64a87f..43774bb 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -368,17 +368,17 @@
             Intent intent, @Nullable String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags, int filterCallingUid, int userId);
 
-
     /**
      * Retrieve all receivers that can handle a broadcast of the given intent.
+     *
      * @param filterCallingUid The results will be filtered in the context of this UID instead
      *                         of the calling UID.
-     * @param forSend true if the invocation is intended for sending broadcasts. The value
-     *                of this parameter affects how packages are filtered.
+     * @param forSend          true if the invocation is intended for sending broadcasts. The value
+     *                         of this parameter affects how packages are filtered.
      */
-    public abstract List<ResolveInfo> queryIntentReceivers(Intent intent,
-            String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
-            int filterCallingUid, int userId, boolean forSend);
+    public abstract List<ResolveInfo> queryIntentReceivers(
+            Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
+            int filterCallingUid, int callingPid, int userId, boolean forSend);
 
     /**
      * Retrieve all services that can be performed for the given intent.
@@ -611,17 +611,9 @@
             @NonNull Set<String> outInvalidPackageNames);
 
     /**
-     * Resolves an activity intent, allowing instant apps to be resolved.
-     */
-    public abstract ResolveInfo resolveIntent(Intent intent, String resolvedType,
-            @PackageManager.ResolveInfoFlagsBits long flags,
-            @PrivateResolveFlags long privateResolveFlags, int userId, boolean resolveForStart,
-            int filterCallingUid);
-
-    /**
      * Resolves an exported activity intent, allowing instant apps to be resolved.
      */
-    public abstract ResolveInfo resolveIntentExported(Intent intent, String resolvedType,
+    public abstract ResolveInfo resolveIntent(Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags,
             @PrivateResolveFlags long privateResolveFlags, int userId, boolean resolveForStart,
             int filterCallingUid, int callingPid);
@@ -632,6 +624,15 @@
     public abstract ResolveInfo resolveService(Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid);
 
+
+    /**
+     * Resolves a service intent for start.
+     */
+    public abstract ResolveInfo resolveService(
+            Intent intent, String resolvedType,
+            @PackageManager.ResolveInfoFlagsBits long flags, int userId,
+            int callingUid, int callingPid);
+
     /**
     * Resolves a content provider intent.
     */
diff --git a/services/core/java/com/android/server/BootReceiver.java b/services/core/java/com/android/server/BootReceiver.java
index f69a521..23cee9d 100644
--- a/services/core/java/com/android/server/BootReceiver.java
+++ b/services/core/java/com/android/server/BootReceiver.java
@@ -141,6 +141,10 @@
     private static final int MAX_ERROR_REPORTS = 8;
     private static int sSentReports = 0;
 
+    // Max tombstone file size to add to dropbox.
+    private static final long MAX_TOMBSTONE_SIZE_BYTES =
+            DropBoxManagerService.DEFAULT_QUOTA_KB * 1024;
+
     @Override
     public void onReceive(final Context context, Intent intent) {
         // Log boot events in the background to avoid blocking the main thread with I/O
@@ -390,6 +394,12 @@
     private static void addAugmentedProtoToDropbox(
                 File tombstone, DropBoxManager db,
                 DropboxRateLimiter.RateLimitResult rateLimitResult) throws IOException {
+        // Do not add proto files larger than 20Mb to DropBox as they can cause OOMs when
+        // processing large tombstones. The text tombstone is still added to DropBox.
+        if (tombstone.length() > MAX_TOMBSTONE_SIZE_BYTES) {
+            Slog.w(TAG, "Tombstone too large to add to DropBox: " + tombstone.toPath());
+            return;
+        }
         // Read the proto tombstone file as bytes.
         final byte[] tombstoneBytes = Files.readAllBytes(tombstone.toPath());
 
diff --git a/services/core/java/com/android/server/DropBoxManagerService.java b/services/core/java/com/android/server/DropBoxManagerService.java
index 1a8c3b0..75b0fc2 100644
--- a/services/core/java/com/android/server/DropBoxManagerService.java
+++ b/services/core/java/com/android/server/DropBoxManagerService.java
@@ -105,7 +105,7 @@
     private static final int DEFAULT_AGE_SECONDS = 3 * 86400;
     private static final int DEFAULT_MAX_FILES = 1000;
     private static final int DEFAULT_MAX_FILES_LOWRAM = 300;
-    private static final int DEFAULT_QUOTA_KB = Build.IS_USERDEBUG ? 20 * 1024 : 10 * 1024;
+    public static final int DEFAULT_QUOTA_KB = Build.IS_USERDEBUG ? 20 * 1024 : 10 * 1024;
     private static final int DEFAULT_QUOTA_PERCENT = 10;
     private static final int DEFAULT_RESERVE_PERCENT = 0;
     private static final int QUOTA_RESCAN_MILLIS = 5000;
diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS
index 2545620..c4d38e4 100644
--- a/services/core/java/com/android/server/OWNERS
+++ b/services/core/java/com/android/server/OWNERS
@@ -1,5 +1,5 @@
 # BootReceiver / Watchdog
-per-file BootReceiver.java,Watchdog.java = gaillard@google.com
+per-file BootReceiver.java,Watchdog.java = benmiles@google.com
 
 # Connectivity / Networking
 per-file ConnectivityService.java,ConnectivityServiceInitializer.java,NetworkManagementService.java,NsdService.java,VpnManagerService.java = file:/services/core/java/com/android/server/net/OWNERS
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index a619257..966478e 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -138,6 +138,12 @@
 
     static final long DEFAULT_BOOT_LOOP_TRIGGER_WINDOW_MS = TimeUnit.MINUTES.toMillis(10);
 
+    // Time needed to apply mitigation
+    private static final String MITIGATION_WINDOW_MS =
+            "persist.device_config.configuration.mitigation_window_ms";
+    @VisibleForTesting
+    static final long DEFAULT_MITIGATION_WINDOW_MS = TimeUnit.SECONDS.toMillis(5);
+
     // Threshold level at which or above user might experience significant disruption.
     private static final String MAJOR_USER_IMPACT_LEVEL_THRESHOLD =
             "persist.device_config.configuration.major_user_impact_level_threshold";
@@ -210,6 +216,9 @@
     @GuardedBy("mLock")
     private boolean mSyncRequired = false;
 
+    @GuardedBy("mLock")
+    private long mLastMitigation = -1000000;
+
     @FunctionalInterface
     @VisibleForTesting
     interface SystemClock {
@@ -400,6 +409,16 @@
             Slog.w(TAG, "Could not resolve a list of failing packages");
             return;
         }
+        synchronized (mLock) {
+            final long now = mSystemClock.uptimeMillis();
+            if (Flags.recoverabilityDetection()) {
+                if (now >= mLastMitigation
+                        && (now - mLastMitigation) < getMitigationWindowMs()) {
+                    Slog.i(TAG, "Skipping onPackageFailure mitigation");
+                    return;
+                }
+            }
+        }
         mLongTaskHandler.post(() -> {
             synchronized (mLock) {
                 if (mAllObservers.isEmpty()) {
@@ -500,10 +519,17 @@
                               int currentObserverImpact,
                               int mitigationCount) {
         if (currentObserverImpact < getUserImpactLevelLimit()) {
+            synchronized (mLock) {
+                mLastMitigation = mSystemClock.uptimeMillis();
+            }
             currentObserverToNotify.execute(versionedPackage, failureReason, mitigationCount);
         }
     }
 
+    private long getMitigationWindowMs() {
+        return SystemProperties.getLong(MITIGATION_WINDOW_MS, DEFAULT_MITIGATION_WINDOW_MS);
+    }
+
 
     /**
      * Called when the system server boots. If the system server is detected to be in a boot loop,
diff --git a/services/core/java/com/android/server/SystemConfig.java b/services/core/java/com/android/server/SystemConfig.java
index 8c1bb3b..44aea15 100644
--- a/services/core/java/com/android/server/SystemConfig.java
+++ b/services/core/java/com/android/server/SystemConfig.java
@@ -352,7 +352,7 @@
     @NonNull private final Set<String> mInitialNonStoppedSystemPackages = new ArraySet<>();
 
     // Which packages (key) are allowed to join particular SharedUid (value).
-    @NonNull private final Map<String, String> mPackageToSharedUidAllowList = new ArrayMap<>();
+    @NonNull private final ArrayMap<String, String> mPackageToSharedUidAllowList = new ArrayMap<>();
 
     // A map of preloaded package names and the path to its app metadata file path.
     private final ArrayMap<String, String> mAppMetadataFilePaths = new ArrayMap<>();
@@ -574,7 +574,7 @@
     }
 
     @NonNull
-    public Map<String, String> getPackageToSharedUidAllowList() {
+    public ArrayMap<String, String> getPackageToSharedUidAllowList() {
         return mPackageToSharedUidAllowList;
     }
 
@@ -720,6 +720,9 @@
         }
         // Read configuration of features, libs and priv-app permissions from apex module.
         int apexPermissionFlag = ALLOW_LIBS | ALLOW_FEATURES | ALLOW_PRIVAPP_PERMISSIONS;
+        if (android.permission.flags.Flags.apexSignaturePermissionAllowlistEnabled()) {
+            apexPermissionFlag |= ALLOW_SIGNATURE_PERMISSIONS;
+        }
         // TODO: Use a solid way to filter apex module folders?
         for (File f: FileUtils.listFilesOrEmpty(Environment.getApexDirectory())) {
             if (f.isFile() || f.getPath().contains("@")) {
@@ -1322,6 +1325,8 @@
                                     Environment.getProductDirectory().toPath() + "/");
                             boolean systemExt = permFile.toPath().startsWith(
                                     Environment.getSystemExtDirectory().toPath() + "/");
+                            boolean apex = permFile.toPath().startsWith(
+                                    Environment.getApexDirectory().toPath() + "/");
                             if (vendor) {
                                 readSignatureAppPermissions(parser,
                                         mPermissionAllowlist.getVendorSignatureAppAllowlist());
@@ -1331,6 +1336,9 @@
                             } else if (systemExt) {
                                 readSignatureAppPermissions(parser,
                                         mPermissionAllowlist.getSystemExtSignatureAppAllowlist());
+                            } else if (apex) {
+                                readSignatureAppPermissions(parser,
+                                        mPermissionAllowlist.getApexSignatureAppAllowlist());
                             } else {
                                 readSignatureAppPermissions(parser,
                                         mPermissionAllowlist.getSignatureAppAllowlist());
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index f1d3584..1c13ad5 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -32,6 +32,7 @@
 import static android.app.UiModeManager.PROJECTION_TYPE_NONE;
 import static android.os.UserHandle.USER_SYSTEM;
 import static android.os.UserHandle.getCallingUserId;
+import static android.os.UserManager.isVisibleBackgroundUsersEnabled;
 import static android.provider.Settings.Secure.CONTRAST_LEVEL;
 import static android.util.TimeUtils.isTimeBetween;
 
@@ -99,6 +100,7 @@
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.internal.notification.SystemNotificationChannels;
 import com.android.internal.util.DumpUtils;
+import com.android.server.pm.UserManagerService;
 import com.android.server.twilight.TwilightListener;
 import com.android.server.twilight.TwilightManager;
 import com.android.server.twilight.TwilightState;
@@ -848,6 +850,8 @@
             }
 
             final int user = UserHandle.getCallingUserId();
+            enforceValidCallingUser(user);
+
             final long ident = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -910,6 +914,8 @@
                 @AttentionModeThemeOverlayType int attentionModeThemeOverlayType) {
             setAttentionModeThemeOverlay_enforcePermission();
 
+            enforceValidCallingUser(UserHandle.getCallingUserId());
+
             synchronized (mLock) {
                 if (mAttentionModeThemeOverlay != attentionModeThemeOverlayType) {
                     mAttentionModeThemeOverlay = attentionModeThemeOverlayType;
@@ -999,6 +1005,8 @@
                 return false;
             }
             final int user = Binder.getCallingUserHandle().getIdentifier();
+            enforceValidCallingUser(user);
+
             if (user != mCurrentUser && getContext().checkCallingOrSelfPermission(
                     android.Manifest.permission.INTERACT_ACROSS_USERS)
                     != PackageManager.PERMISSION_GRANTED) {
@@ -1056,6 +1064,8 @@
                 return;
             }
             final int user = UserHandle.getCallingUserId();
+            enforceValidCallingUser(user);
+
             final long ident = Binder.clearCallingIdentity();
             try {
                 LocalTime newTime = LocalTime.ofNanoOfDay(time * 1000);
@@ -1084,6 +1094,8 @@
                 return;
             }
             final int user = UserHandle.getCallingUserId();
+            enforceValidCallingUser(user);
+
             final long ident = Binder.clearCallingIdentity();
             try {
                 LocalTime newTime = LocalTime.ofNanoOfDay(time * 1000);
@@ -1104,6 +1116,8 @@
             assertLegit(callingPackage);
             assertSingleProjectionType(projectionType);
             enforceProjectionTypePermissions(projectionType);
+            enforceValidCallingUser(getCallingUserId());
+
             synchronized (mLock) {
                 if (mProjectionHolders == null) {
                     mProjectionHolders = new SparseArray<>(1);
@@ -1148,6 +1162,8 @@
             assertLegit(callingPackage);
             assertSingleProjectionType(projectionType);
             enforceProjectionTypePermissions(projectionType);
+            enforceValidCallingUser(getCallingUserId());
+
             return releaseProjectionUnchecked(projectionType, callingPackage);
         }
 
@@ -1187,6 +1203,9 @@
             if (projectionType == PROJECTION_TYPE_NONE) {
                 return;
             }
+
+            enforceValidCallingUser(getCallingUserId());
+
             synchronized (mLock) {
                 if (mProjectionListeners == null) {
                     mProjectionListeners = new SparseArray<>(1);
@@ -1234,6 +1253,32 @@
         }
     };
 
+    // This method validates whether calling user is valid in visible background users
+    // feature. Valid user is the current user or the system or in the same profile group as
+    // the current user.
+    private void enforceValidCallingUser(int userId) {
+        if (!isVisibleBackgroundUsersEnabled()) {
+            return;
+        }
+        if (LOG) {
+            Slog.d(TAG, "enforceValidCallingUser: userId=" + userId
+                    + " isSystemUser=" + (userId == USER_SYSTEM) + " current user=" + mCurrentUser
+                    + " callingPid=" + Binder.getCallingPid()
+                    + " callingUid=" + mInjector.getCallingUid());
+        }
+        long ident = Binder.clearCallingIdentity();
+        try {
+            if (userId != USER_SYSTEM && userId != mCurrentUser
+                    && !UserManagerService.getInstance().isSameProfileGroup(userId, mCurrentUser)) {
+                throw new SecurityException(
+                        "Calling user is not valid for level-1 compatibility in MUMD. "
+                                + "callingUserId=" + userId + " currentUserId=" + mCurrentUser);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+    }
+
     private void enforceProjectionTypePermissions(@UiModeManager.ProjectionType int p) {
         if ((p & PROJECTION_TYPE_AUTOMOTIVE) != 0) {
             getContext().enforceCallingPermission(
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 9be0e1f..0c1d0fb 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -499,8 +499,6 @@
     private final ServiceAnrTimer mShortFGSAnrTimer;
     // ActivityManagerConstants.DEFAULT_SERVICE_START_FOREGROUND_TIMEOUT_MS
     private final ServiceAnrTimer mServiceFGAnrTimer;
-    // see ServiceRecord#getEarliestStopTypeAndTime()
-    private final ServiceAnrTimer mFGSAnrTimer;
 
     /**
      * Mapping of uid to {fgs_type, fgs_info} for time limited fgs types such as dataSync and
@@ -784,9 +782,6 @@
         this.mServiceFGAnrTimer = new ServiceAnrTimer(service,
                 ActivityManagerService.SERVICE_FOREGROUND_TIMEOUT_MSG,
                 "SERVICE_FOREGROUND_TIMEOUT");
-        this.mFGSAnrTimer = new ServiceAnrTimer(service,
-                ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG,
-                "FGS_TIMEOUT");
     }
 
     void systemServicesReady() {
@@ -835,7 +830,8 @@
             for (int i = 0; i < smap.mServicesByInstanceName.size(); i++) {
                 final ServiceRecord sr = smap.mServicesByInstanceName.valueAt(i);
                 if (sr.appInfo.packageName.equals(pkg) && sr.isForeground) {
-                    if (Objects.equals(sr.foregroundNoti.getChannelId(), channelId)) {
+                    if (sr.foregroundNoti != null
+                            && Objects.equals(sr.foregroundNoti.getChannelId(), channelId)) {
                         if (DEBUG_FOREGROUND_SERVICE) {
                             Slog.d(TAG_SERVICE, "Channel u" + userId + "/pkg=" + pkg
                                     + "/channelId=" + channelId
@@ -2457,11 +2453,9 @@
                                             + " foreground service type "
                                             + ServiceInfo.foregroundServiceTypeToLabel(
                                                     foregroundServiceType);
-                                    // Only throw an exception if the new ANR behavior
-                                    // ("do nothing") is not gated or the new crashing logic gate
+                                    // Only throw an exception if the new crashing logic gate
                                     // is enabled; otherwise, reset the limit temporarily.
-                                    if (!android.app.Flags.gateFgsTimeoutAnrBehavior()
-                                            || android.app.Flags.enableFgsTimeoutCrashBehavior()) {
+                                    if (android.app.Flags.enableFgsTimeoutCrashBehavior()) {
                                         throw new ForegroundServiceStartNotAllowedException(
                                                     exceptionMsg);
                                     } else {
@@ -3811,8 +3805,9 @@
 
             if (!sr.isFgsTimeLimited()) {
                 // Reset timers since new type does not have a timeout.
-                mFGSAnrTimer.cancel(sr);
                 mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_TIMEOUT_MSG, sr);
+                mAm.mHandler.removeMessages(
+                                ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
                 return;
             }
         }
@@ -3834,9 +3829,9 @@
         }
         fgsTypeInfo.noteFgsFgsStart(nowUptime);
 
-        // We'll cancel the previous ANR timer and start a fresh one below.
-        mFGSAnrTimer.cancel(sr);
+        // We'll cancel the timeout and crash messages and post a fresh one below.
         mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_TIMEOUT_MSG, sr);
+        mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
 
         final Message msg = mAm.mHandler.obtainMessage(
                 ActivityManagerService.SERVICE_FGS_TIMEOUT_MSG, sr);
@@ -3864,8 +3859,8 @@
             fgsTypeInfo.decNumParallelServices();
         }
         Slog.d(TAG_SERVICE, "Stop FGS timeout: " + sr);
-        mFGSAnrTimer.cancel(sr);
         mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_TIMEOUT_MSG, sr);
+        mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
     }
 
     void onUidRemovedLocked(int uid) {
@@ -3892,7 +3887,8 @@
         synchronized (mAm) {
             final int fgsType = getTimeLimitedFgsType(sr.foregroundServiceType);
             if (fgsType == ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE || sr.app == null) {
-                mFGSAnrTimer.discard(sr);
+                mAm.mHandler.removeMessages(
+                                ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
                 return;
             }
 
@@ -3901,8 +3897,9 @@
             final long nowUptime = SystemClock.uptimeMillis();
             if (lastTopTime != Long.MIN_VALUE && constantTimeLimit > (nowUptime - lastTopTime)) {
                 // Discard any other messages for this service
-                mFGSAnrTimer.discard(sr);
                 mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_FGS_TIMEOUT_MSG, sr);
+                mAm.mHandler.removeMessages(
+                                ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
                 // The app was in the TOP state after the FGS was started so its time allowance
                 // should be counted from that time since this is considered a user interaction
                 final Message msg = mAm.mHandler.obtainMessage(
@@ -3913,7 +3910,6 @@
 
             Slog.e(TAG_SERVICE, "FGS (" + ServiceInfo.foregroundServiceTypeToLabel(fgsType)
                     + ") timed out: " + sr);
-            mFGSAnrTimer.accept(sr);
             traceInstant("FGS timed out: ", sr);
 
             final TimeLimitedFgsInfo fgsTypeInfo = getFgsTimeLimitedInfo(sr.appInfo.uid, fgsType);
@@ -3940,7 +3936,9 @@
             }
 
             // Crash the service after giving the service some time to clean up.
-            mFGSAnrTimer.start(sr, mAm.mConstants.mFgsCrashExtraWaitDuration);
+            final Message msg = mAm.mHandler.obtainMessage(
+                                    ActivityManagerService.SERVICE_FGS_CRASH_TIMEOUT_MSG, sr);
+            mAm.mHandler.sendMessageDelayed(msg, mAm.mConstants.mFgsCrashExtraWaitDuration);
         }
     }
 
@@ -3957,20 +3955,12 @@
                 // stop the service, decrement the number of parallel running services here.
                 fgsTypeInfo.decNumParallelServices();
             }
-        }
 
-        final String reason = "A foreground service of type "
-                + ServiceInfo.foregroundServiceTypeToLabel(fgsType)
-                + " did not stop within its timeout: " + sr.getComponentName();
-
-        if (android.app.Flags.gateFgsTimeoutAnrBehavior()) {
-            // Log a WTF instead of throwing an ANR while the new behavior is gated.
-            Slog.wtf(TAG, reason);
-            return;
-        }
-        if (android.app.Flags.enableFgsTimeoutCrashBehavior()) {
-            // Crash the app
-            synchronized (mAm) {
+            final String reason = "A foreground service of type "
+                    + ServiceInfo.foregroundServiceTypeToLabel(fgsType)
+                    + " did not stop within its timeout: " + sr.getComponentName();
+            if (android.app.Flags.enableFgsTimeoutCrashBehavior()) {
+                // Crash the app
                 Slog.e(TAG_SERVICE, "FGS Crashed: " + sr);
                 traceInstant("FGS Crash: ", sr);
                 if (sr.app != null) {
@@ -3980,23 +3970,9 @@
                             ForegroundServiceDidNotStopInTimeException
                                     .createExtrasForService(sr.getComponentName()));
                 }
-            }
-        } else {
-            // ANR the app if the new crash behavior is not enabled
-            final TimeoutRecord tr = TimeoutRecord.forFgsTimeout(reason);
-            tr.mLatencyTracker.waitingOnAMSLockStarted();
-            synchronized (mAm) {
-                tr.mLatencyTracker.waitingOnAMSLockEnded();
-
-                Slog.e(TAG_SERVICE, "FGS ANR'ed: " + sr);
-                traceInstant("FGS ANR: ", sr);
-                if (sr.app != null) {
-                    mAm.appNotResponding(sr.app, tr);
-                }
-
-                // TODO: Can we close the ANR dialog here, if it's still shown? Currently, the ANR
-                // dialog really doesn't remember the "cause" (especially if there have been
-                // multiple ANRs), so it's not doable.
+            } else {
+                // Log a WTF instead of crashing the app while the new behavior is gated.
+                Slog.wtf(TAG, reason);
             }
         }
     }
@@ -4887,7 +4863,7 @@
                 }
                 // TODO: come back and remove this assumption to triage all services
                 ResolveInfo rInfo = mAm.getPackageManagerInternal().resolveService(service,
-                        resolvedType, flags, userId, callingUid);
+                        resolvedType, flags, userId, callingUid, callingPid);
                 ServiceInfo sInfo = rInfo != null ? rInfo.serviceInfo : null;
                 if (sInfo == null) {
                     Slog.w(TAG_SERVICE, "Unable to start service " + service + " U=" + userId +
@@ -5007,7 +4983,7 @@
                         try {
                             ResolveInfo rInfoForUserId0 =
                                     mAm.getPackageManagerInternal().resolveService(service,
-                                            resolvedType, flags, userId, callingUid);
+                                            resolvedType, flags, userId, callingUid, callingPid);
                             if (rInfoForUserId0 == null) {
                                 Slog.w(TAG_SERVICE,
                                         "Unable to resolve service " + service + " U=" + userId
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index f7278e9..d79d198 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -137,7 +137,6 @@
 import static android.view.Display.INVALID_DISPLAY;
 
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION;
-import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH;
 import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NEW_MUTABLE_IMPLICIT_PENDING_INTENT_RETRIEVED;
 import static com.android.sdksandbox.flags.Flags.sdkSandboxInstrumentationInfo;
 import static com.android.server.am.ActiveServices.FGS_SAW_RESTRICTIONS;
@@ -268,9 +267,7 @@
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetManagerInternal;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
 import android.compat.annotation.EnabledSince;
-import android.compat.annotation.Overridable;
 import android.content.AttributionSource;
 import android.content.AutofillOptions;
 import android.content.BroadcastReceiver;
@@ -467,7 +464,7 @@
 import com.android.server.os.NativeTombstoneManager;
 import com.android.server.pm.Computer;
 import com.android.server.pm.Installer;
-import com.android.server.pm.PackageManagerServiceUtils;
+import com.android.server.pm.SaferIntentUtils;
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.pm.permission.PermissionManagerServiceInternal;
 import com.android.server.pm.pkg.AndroidPackage;
@@ -666,18 +663,6 @@
     private static final long DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED = 161145287L;
 
     /**
-     * Apps targeting Android U and above will need to export components in order to invoke them
-     * through implicit intents.
-     *
-     * If a component is not exported and invoked, it will be removed from the list of receivers.
-     * This applies specifically to activities and broadcasts.
-     */
-    @ChangeId
-    @Overridable
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.TIRAMISU)
-    public static final long IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS = 229362273;
-
-    /**
      * The maximum number of bytes that {@link #setProcessStateSummary} accepts.
      *
      * @see {@link android.app.ActivityManager#setProcessStateSummary(byte[])}
@@ -5551,9 +5536,10 @@
                                         packageName, UserHandle.of(userId));
                         String resolvedType = resolvedTypes == null
                                 || i >= resolvedTypes.length ? null : resolvedTypes[i];
-                        ActivityManagerUtils.logUnsafeIntentEvent(
+                        SaferIntentUtils.reportUnsafeIntentEvent(
                                 UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NEW_MUTABLE_IMPLICIT_PENDING_INTENT_RETRIEVED,
-                                owningUid, intent, resolvedType, isChangeEnabled);
+                                owningUid, Process.INVALID_PID,
+                                intent, resolvedType, isChangeEnabled);
                         if (isChangeEnabled) {
                             String msg = packageName + ": Targeting U+ (version "
                                     + Build.VERSION_CODES.UPSIDE_DOWN_CAKE + " and above) disallows"
@@ -5813,7 +5799,7 @@
                         intent, matchFlags, uid, userId));
             case ActivityManager.INTENT_SENDER_BROADCAST:
                 return new ParceledListSlice<>(mPackageManagerInt.queryIntentReceivers(
-                        intent, resolvedType, matchFlags, uid, userId, false));
+                        intent, resolvedType, matchFlags, uid, Process.INVALID_PID, userId, false));
             default: // ActivityManager.INTENT_SENDER_ACTIVITY_RESULT
                 throw new IllegalStateException("Unsupported intent sender type: " + res.key.type);
         }
@@ -9521,14 +9507,13 @@
      * @param callback The binder used to communicate the violations.
      */
     @Override
-    public void registerStrictModeCallback(IBinder callback) {
+    public synchronized void registerStrictModeCallback(IBinder callback) {
         int callingPid = Binder.getCallingPid();
         mStrictModeCallbacks.put(callingPid,
                 IUnsafeIntentStrictModeCallback.Stub.asInterface(callback));
         try {
-            callback.linkToDeath(new DeathRecipient() {
-                @Override
-                public void binderDied() {
+            callback.linkToDeath(() -> {
+                synchronized (ActivityManagerService.this) {
                     mStrictModeCallbacks.remove(callingPid);
                 }
             }, 0);
@@ -10222,6 +10207,19 @@
         addStartInfoTimestampInternal(key, timestampNs, userId, callingUid);
     }
 
+    @Override
+    public void reportStartInfoViewTimestamps(long renderThreadDrawStartTimeNs,
+            long framePresentedTimeNs) {
+        int callingUid = Binder.getCallingUid();
+        int userId = UserHandle.getUserId(callingUid);
+        addStartInfoTimestampInternal(
+                ApplicationStartInfo.START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME,
+                renderThreadDrawStartTimeNs, userId, callingUid);
+        addStartInfoTimestampInternal(
+                ApplicationStartInfo.START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE,
+                framePresentedTimeNs, userId, callingUid);
+    }
+
     private void addStartInfoTimestampInternal(int key, long timestampNs, int userId, int uid) {
         mProcessList.getAppStartInfoTracker().addTimestampToStart(
                 Settings.getPackageNameForUid(mContext, uid),
@@ -10439,11 +10437,6 @@
     public void onShellCommand(FileDescriptor in, FileDescriptor out,
             FileDescriptor err, String[] args, ShellCallback callback,
             ResultReceiver resultReceiver) {
-        final int callingUid = Binder.getCallingUid();
-        if (callingUid != ROOT_UID && callingUid != Process.SHELL_UID) {
-            resultReceiver.send(-1, null);
-            throw new SecurityException("Shell commands are only callable by root or shell");
-        }
         (new ActivityManagerShellCommand(this, false)).exec(
                 this, in, out, err, args, callback, resultReceiver);
     }
@@ -13731,64 +13724,6 @@
     }
 
     /**
-     * Filters out non-exported components in a given list of broadcast filters
-     * @param intent the original intent
-     * @param callingUid the calling UID
-     * @param query the list of broadcast filters
-     * @param platformCompat the instance of platform compat
-     */
-    private void filterNonExportedComponents(Intent intent, int callingUid, int callingPid,
-            List query, PlatformCompat platformCompat, String callerPackage, String resolvedType) {
-        if (query == null
-                || intent.getPackage() != null
-                || intent.getComponent() != null
-                || ActivityManager.canAccessUnexportedComponents(callingUid)) {
-            return;
-        }
-        IUnsafeIntentStrictModeCallback callback = mStrictModeCallbacks.get(callingPid);
-        for (int i = query.size() - 1; i >= 0; i--) {
-            String componentInfo;
-            ResolveInfo resolveInfo;
-            BroadcastFilter broadcastFilter;
-            if (query.get(i) instanceof ResolveInfo) {
-                resolveInfo = (ResolveInfo) query.get(i);
-                if (resolveInfo.getComponentInfo().exported) {
-                    continue;
-                }
-                componentInfo = resolveInfo.getComponentInfo()
-                        .getComponentName().flattenToShortString();
-            } else if (query.get(i) instanceof BroadcastFilter) {
-                broadcastFilter = (BroadcastFilter) query.get(i);
-                if (broadcastFilter.exported) {
-                    continue;
-                }
-                componentInfo = broadcastFilter.packageName;
-            } else {
-                continue;
-            }
-            if (callback != null) {
-                mHandler.post(() -> {
-                    try {
-                        callback.onImplicitIntentMatchedInternalComponent(intent.cloneFilter());
-                    } catch (RemoteException e) {
-                        mStrictModeCallbacks.remove(callingPid);
-                    }
-                });
-            }
-            boolean hasToBeExportedToMatch = platformCompat.isChangeEnabledByUid(
-                    ActivityManagerService.IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS,
-                    callingUid);
-            ActivityManagerUtils.logUnsafeIntentEvent(
-                    UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH,
-                    callingUid, intent, resolvedType, hasToBeExportedToMatch);
-            if (!hasToBeExportedToMatch) {
-                return;
-            }
-            query.remove(i);
-        }
-    }
-
-    /**
      * Main code for cleaning up a process when it has gone away.  This is
      * called both as a result of the process dying, or directly when stopping
      * a process when running in single process mode.
@@ -15101,8 +15036,9 @@
         mProcessList.sendPackageBroadcastLocked(cmd, packages, userId);
     }
 
-    private List<ResolveInfo> collectReceiverComponents(Intent intent, String resolvedType,
-            int callingUid, int[] users, int[] broadcastAllowList) {
+    private List<ResolveInfo> collectReceiverComponents(
+            Intent intent, String resolvedType, int callingUid, int callingPid,
+            int[] users, int[] broadcastAllowList) {
         // TODO: come back and remove this assumption to triage all broadcasts
         long pmFlags = STOCK_PM_FLAGS | MATCH_DEBUG_TRIAGED_MISSING;
 
@@ -15117,7 +15053,7 @@
                 continue;
             }
             List<ResolveInfo> newReceivers = mPackageManagerInt.queryIntentReceivers(
-                    intent, resolvedType, pmFlags, callingUid, user, true /* forSend */);
+                    intent, resolvedType, pmFlags, callingUid, callingPid, user, /* forSend */true);
             if (user != UserHandle.USER_SYSTEM && newReceivers != null) {
                 // If this is not the system user, we need to check for
                 // any receivers that should be filtered out.
@@ -15135,7 +15071,7 @@
                     final ResolveInfo ri = newReceivers.get(i);
                     final Resolution<ResolveInfo> resolution =
                             mComponentAliasResolver.resolveReceiver(intent, ri, resolvedType,
-                                    pmFlags, user, callingUid, true /* forSend */);
+                                    pmFlags, user, callingUid, callingPid);
                     if (resolution == null) {
                         // It was an alias, but the target was not found.
                         newReceivers.remove(i);
@@ -15338,15 +15274,50 @@
             BackgroundStartPrivileges backgroundStartPrivileges,
             @Nullable int[] broadcastAllowList,
             @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver) {
-        final int cookie = BroadcastQueue.traceBegin("broadcastIntentLockedTraced");
-        final int res = broadcastIntentLockedTraced(callerApp, callerPackage, callerFeatureId,
-                intent, resolvedType, resultToApp, resultTo, resultCode, resultData, resultExtras,
-                requiredPermissions, excludedPermissions, excludedPackages, appOp,
-                BroadcastOptions.fromBundleNullable(bOptions), ordered, sticky,
-                callingPid, callingUid, realCallingUid, realCallingPid, userId,
-                backgroundStartPrivileges, broadcastAllowList, filterExtrasForReceiver);
-        BroadcastQueue.traceEnd(cookie);
-        return res;
+        final int cookie = traceBroadcastIntentBegin(intent, resultTo, ordered, sticky,
+                callingUid, realCallingUid, userId);
+        try {
+            final int res = broadcastIntentLockedTraced(callerApp, callerPackage, callerFeatureId,
+                    intent, resolvedType, resultToApp, resultTo, resultCode, resultData,
+                    resultExtras, requiredPermissions, excludedPermissions, excludedPackages,
+                    appOp, BroadcastOptions.fromBundleNullable(bOptions), ordered, sticky,
+                    callingPid, callingUid, realCallingUid, realCallingPid, userId,
+                    backgroundStartPrivileges, broadcastAllowList, filterExtrasForReceiver);
+            return res;
+        } finally {
+            traceBroadcastIntentEnd(cookie);
+        }
+    }
+
+    private static int traceBroadcastIntentBegin(Intent intent, IIntentReceiver resultTo,
+            boolean ordered, boolean sticky, int callingUid, int realCallingUid, int userId) {
+        if (!Flags.traceReceiverRegistration()) {
+            return BroadcastQueue.traceBegin("broadcastIntentLockedTraced");
+        }
+        if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
+            final StringBuilder sb = new StringBuilder("broadcastIntent: ");
+            sb.append(callingUid); sb.append('/');
+            final String action = intent.getAction();
+            sb.append(action == null ? null : action); sb.append('/');
+            sb.append("0x"); sb.append(Integer.toHexString(intent.getFlags())); sb.append('/');
+            sb.append(ordered ? "O" : "_");
+            sb.append(sticky ? "S" : "_");
+            sb.append(resultTo != null ? "C" : "_");
+            sb.append('/');
+            sb.append('u'); sb.append(userId);
+            if (callingUid != realCallingUid) {
+                sb.append('/');
+                sb.append("sender="); sb.append(realCallingUid);
+            }
+            return BroadcastQueue.traceBegin(sb.toString());
+        }
+        return 0;
+    }
+
+    private static void traceBroadcastIntentEnd(int cookie) {
+        if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
+            BroadcastQueue.traceEnd(cookie);
+        }
     }
 
     @GuardedBy("this")
@@ -15977,6 +15948,10 @@
             users = new int[] {userId};
         }
 
+        var args = new SaferIntentUtils.IntentArgs(intent, resolvedType,
+                true /* isReceiver */, true /* resolveForStart */, callingUid, callingPid);
+        args.platformCompat = mPlatformCompat;
+
         // Figure out who all will receive this broadcast.
         final int cookie = BroadcastQueue.traceBegin("queryReceivers");
         List receivers = null;
@@ -15984,7 +15959,7 @@
         // Need to resolve the intent to interested receivers...
         if ((intent.getFlags() & Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) {
             receivers = collectReceiverComponents(
-                    intent, resolvedType, callingUid, users, broadcastAllowList);
+                    intent, resolvedType, callingUid, callingPid, users, broadcastAllowList);
         }
         if (intent.getComponent() == null) {
             final PackageDataSnapshot snapshot = getPackageManagerInternal().snapshot();
@@ -16009,9 +15984,7 @@
                         resolvedType, false /*defaultOnly*/, userId);
             }
             if (registeredReceivers != null) {
-                PackageManagerServiceUtils.applyNullActionBlocking(
-                        mPlatformCompat, snapshot, registeredReceivers,
-                        true, intent, callingUid);
+                SaferIntentUtils.blockNullAction(args, registeredReceivers);
             }
         }
         BroadcastQueue.traceEnd(cookie);
@@ -16033,8 +16006,6 @@
             }
         }
 
-        filterNonExportedComponents(intent, callingUid, callingPid, registeredReceivers,
-                mPlatformCompat, callerPackage, resolvedType);
         int NR = registeredReceivers != null ? registeredReceivers.size() : 0;
 
         // Merge into one list.
@@ -16117,8 +16088,7 @@
         if ((receivers != null && receivers.size() > 0)
                 || resultTo != null) {
             BroadcastQueue queue = mBroadcastQueue;
-            filterNonExportedComponents(intent, callingUid, callingPid, receivers,
-                    mPlatformCompat, callerPackage, resolvedType);
+            SaferIntentUtils.filterNonExportedComponents(args, receivers);
             BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp, callerPackage,
                     callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
                     requiredPermissions, excludedPermissions, excludedPackages, appOp, brOptions,
@@ -19926,13 +19896,23 @@
         }
 
         @Override
-        public IUnsafeIntentStrictModeCallback getRegisteredStrictModeCallback(int callingPid) {
-            return mStrictModeCallbacks.get(callingPid);
-        }
-
-        @Override
-        public void unregisterStrictModeCallback(int callingPid) {
-            mStrictModeCallbacks.remove(callingPid);
+        public void triggerUnsafeIntentStrictMode(int callingPid, int type, Intent intent) {
+            final IUnsafeIntentStrictModeCallback callback;
+            final Intent i = intent.cloneFilter();
+            synchronized (ActivityManagerService.this) {
+                callback = mStrictModeCallbacks.get(callingPid);
+            }
+            if (callback != null) {
+                BackgroundThread.getExecutor().execute(() -> {
+                    try {
+                        callback.onUnsafeIntent(type, i);
+                    } catch (RemoteException e) {
+                        synchronized (ActivityManagerService.this) {
+                            mStrictModeCallbacks.remove(callingPid);
+                        }
+                    }
+                });
+            }
         }
 
         @Override
diff --git a/services/core/java/com/android/server/am/ActivityManagerUtils.java b/services/core/java/com/android/server/am/ActivityManagerUtils.java
index 78a2ecb..3e43a82 100644
--- a/services/core/java/com/android/server/am/ActivityManagerUtils.java
+++ b/services/core/java/com/android/server/am/ActivityManagerUtils.java
@@ -17,13 +17,11 @@
 
 import android.app.ActivityThread;
 import android.content.ContentResolver;
-import android.content.Intent;
 import android.provider.Settings;
 import android.util.ArrayMap;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.FrameworkStatsLog;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -127,25 +125,4 @@
 
         return (((double) hash) / Integer.MAX_VALUE) <= rate;
     }
-
-    /**
-     * Helper method to log an unsafe intent event.
-     */
-    public static void logUnsafeIntentEvent(int event, int callingUid,
-            Intent intent, String resolvedType, boolean blocked) {
-        String[] categories = intent.getCategories() == null ? new String[0]
-                : intent.getCategories().toArray(String[]::new);
-        String component = intent.getComponent() == null ? null
-                : intent.getComponent().flattenToString();
-        FrameworkStatsLog.write(FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED,
-                event,
-                callingUid,
-                component,
-                intent.getPackage(),
-                intent.getAction(),
-                categories,
-                resolvedType,
-                intent.getScheme(),
-                blocked);
-    }
 }
diff --git a/services/core/java/com/android/server/am/AppStartInfoTracker.java b/services/core/java/com/android/server/am/AppStartInfoTracker.java
index a8227fa..dc6e2fa3 100644
--- a/services/core/java/com/android/server/am/AppStartInfoTracker.java
+++ b/services/core/java/com/android/server/am/AppStartInfoTracker.java
@@ -1128,21 +1128,8 @@
 
             // Records are sorted newest to oldest, grab record at index 0.
             ApplicationStartInfo startInfo = mInfos.get(0);
-            int startupState = startInfo.getStartupState();
 
-            // If startup state is error then don't accept any further timestamps.
-            if (startupState == ApplicationStartInfo.STARTUP_STATE_ERROR) {
-                if (DEBUG) Slog.d(TAG, "Startup state is error, not accepting new timestamps.");
-                return;
-            }
-
-            // If startup state is first frame drawn then only accept fully drawn timestamp.
-            if (startupState == ApplicationStartInfo.STARTUP_STATE_FIRST_FRAME_DRAWN
-                    && key != ApplicationStartInfo.START_TIMESTAMP_FULLY_DRAWN) {
-                if (DEBUG) {
-                    Slog.d(TAG, "Startup state is first frame drawn and timestamp is not fully "
-                            + "drawn, not accepting new timestamps.");
-                }
+            if (!isAddTimestampAllowed(startInfo, key, timestampNs)) {
                 return;
             }
 
@@ -1155,6 +1142,55 @@
             }
         }
 
+        private boolean isAddTimestampAllowed(ApplicationStartInfo startInfo, int key,
+                long timestampNs) {
+            int startupState = startInfo.getStartupState();
+
+            // If startup state is error then don't accept any further timestamps.
+            if (startupState == ApplicationStartInfo.STARTUP_STATE_ERROR) {
+                if (DEBUG) Slog.d(TAG, "Startup state is error, not accepting new timestamps.");
+                return false;
+            }
+
+            Map<Integer, Long> timestamps = startInfo.getStartupTimestamps();
+
+            if (startupState == ApplicationStartInfo.STARTUP_STATE_FIRST_FRAME_DRAWN) {
+                switch (key) {
+                    case ApplicationStartInfo.START_TIMESTAMP_FULLY_DRAWN:
+                        // Allowed, continue to confirm it's not already added.
+                        break;
+                    case ApplicationStartInfo.START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME:
+                        Long firstFrameTimeNs = timestamps
+                                .get(ApplicationStartInfo.START_TIMESTAMP_FIRST_FRAME);
+                        if (firstFrameTimeNs == null) {
+                            // This should never happen. State can't be first frame drawn if first
+                            // frame timestamp was not provided.
+                            return false;
+                        }
+
+                        if (timestampNs > firstFrameTimeNs) {
+                            // Initial renderthread frame has to occur before first frame.
+                            return false;
+                        }
+
+                        // Allowed, continue to confirm it's not already added.
+                        break;
+                    case ApplicationStartInfo.START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE:
+                        // Allowed, continue to confirm it's not already added.
+                        break;
+                    default:
+                        return false;
+                }
+            }
+
+            if (timestamps.get(key) != null) {
+                // Timestamp should not occur more than once for a given start.
+                return false;
+            }
+
+            return true;
+        }
+
         @GuardedBy("mLock")
         void dumpLocked(PrintWriter pw, String prefix, SimpleDateFormat sdf) {
             if (mMonitoringModeEnabled) {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 7c0325e..29e0f7a 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -60,6 +60,7 @@
 import android.os.BatteryUsageStatsQuery;
 import android.os.Binder;
 import android.os.BluetoothBatteryStats;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
@@ -71,6 +72,7 @@
 import android.os.PowerSaveState;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.Trace;
@@ -120,12 +122,14 @@
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.power.optimization.Flags;
 import com.android.server.power.stats.AggregatedPowerStatsConfig;
+import com.android.server.power.stats.AudioPowerStatsProcessor;
 import com.android.server.power.stats.BatteryExternalStatsWorker;
 import com.android.server.power.stats.BatteryStatsDumpHelperImpl;
 import com.android.server.power.stats.BatteryStatsImpl;
 import com.android.server.power.stats.BatteryUsageStatsProvider;
 import com.android.server.power.stats.BluetoothPowerStatsProcessor;
 import com.android.server.power.stats.CpuPowerStatsProcessor;
+import com.android.server.power.stats.FlashlightPowerStatsProcessor;
 import com.android.server.power.stats.MobileRadioPowerStatsProcessor;
 import com.android.server.power.stats.PhoneCallPowerStatsProcessor;
 import com.android.server.power.stats.PowerStatsAggregator;
@@ -134,6 +138,7 @@
 import com.android.server.power.stats.PowerStatsStore;
 import com.android.server.power.stats.PowerStatsUidResolver;
 import com.android.server.power.stats.SystemServerCpuThreadReader.SystemServiceCpuThreadTimes;
+import com.android.server.power.stats.VideoPowerStatsProcessor;
 import com.android.server.power.stats.WifiPowerStatsProcessor;
 import com.android.server.power.stats.wakeups.CpuWakeupStats;
 
@@ -192,7 +197,7 @@
     private final BatteryUsageStatsProvider mBatteryUsageStatsProvider;
     private final AtomicFile mConfigFile;
     private final BatteryStats.BatteryStatsDumpHelper mDumpHelper;
-    private final PowerStatsUidResolver mPowerStatsUidResolver;
+    private final PowerStatsUidResolver mPowerStatsUidResolver = new PowerStatsUidResolver();
     private final AggregatedPowerStatsConfig mAggregatedPowerStatsConfig;
 
     private volatile boolean mMonitorEnabled = true;
@@ -420,7 +425,6 @@
         setPowerStatsThrottlePeriods(batteryStatsConfigBuilder, context.getResources().getString(
                 com.android.internal.R.string.config_powerStatsThrottlePeriods));
         mBatteryStatsConfig = batteryStatsConfigBuilder.build();
-        mPowerStatsUidResolver = new PowerStatsUidResolver();
         mStats = new BatteryStatsImpl(mBatteryStatsConfig, Clock.SYSTEM_CLOCK, mMonotonicClock,
                 systemDir, mHandler, this, this, mUserManagerUserInfoProvider, mPowerProfile,
                 mCpuScalingPolicies, mPowerStatsUidResolver);
@@ -514,6 +518,42 @@
                         AggregatedPowerStatsConfig.STATE_PROCESS_STATE)
                 .setProcessor(
                         new BluetoothPowerStatsProcessor(mPowerProfile));
+
+        config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AUDIO)
+                .trackDeviceStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN)
+                .trackUidStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN,
+                        AggregatedPowerStatsConfig.STATE_PROCESS_STATE)
+                .setProcessor(
+                        new AudioPowerStatsProcessor(mPowerProfile,
+                                mPowerStatsUidResolver));
+
+        config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_VIDEO)
+                .trackDeviceStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN)
+                .trackUidStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN,
+                        AggregatedPowerStatsConfig.STATE_PROCESS_STATE)
+                .setProcessor(
+                        new VideoPowerStatsProcessor(mPowerProfile,
+                                mPowerStatsUidResolver));
+
+        config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)
+                .trackDeviceStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN)
+                .trackUidStates(
+                        AggregatedPowerStatsConfig.STATE_POWER,
+                        AggregatedPowerStatsConfig.STATE_SCREEN,
+                        AggregatedPowerStatsConfig.STATE_PROCESS_STATE)
+                .setProcessor(
+                        new FlashlightPowerStatsProcessor(mPowerProfile,
+                                mPowerStatsUidResolver));
         return config;
     }
 
@@ -581,6 +621,24 @@
                 BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
                 Flags.streamlinedConnectivityBatteryStats());
 
+        mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_AUDIO,
+                Flags.streamlinedMiscBatteryStats());
+        mBatteryUsageStatsProvider.setPowerStatsExporterEnabled(
+                BatteryConsumer.POWER_COMPONENT_AUDIO,
+                Flags.streamlinedMiscBatteryStats());
+
+        mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_VIDEO,
+                Flags.streamlinedMiscBatteryStats());
+        mBatteryUsageStatsProvider.setPowerStatsExporterEnabled(
+                BatteryConsumer.POWER_COMPONENT_VIDEO,
+                Flags.streamlinedMiscBatteryStats());
+
+        mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT,
+                Flags.streamlinedMiscBatteryStats());
+        mBatteryUsageStatsProvider.setPowerStatsExporterEnabled(
+                BatteryConsumer.POWER_COMPONENT_FLASHLIGHT,
+                Flags.streamlinedMiscBatteryStats());
+
         mWorker.systemServicesReady();
         mStats.systemServicesReady(mContext);
         mCpuWakeupStats.systemServicesReady();
@@ -3337,6 +3395,59 @@
         }
     }
 
+    /**
+     * Gets a snapshot of the system health for a number of uids.
+     */
+    @Override
+    public void takeUidSnapshotsAsync(int[] requestUids, ResultReceiver resultReceiver) {
+        if (!onlyCaller(requestUids)) {
+            mContext.enforceCallingOrSelfPermission(
+                    android.Manifest.permission.BATTERY_STATS, null);
+        }
+
+        Future future;
+        if (shouldCollectExternalStats()) {
+            future = mWorker.scheduleSync("get-health-stats-for-uids",
+                    BatteryExternalStatsWorker.UPDATE_ALL);
+        } else {
+            future = null;
+        }
+
+        mHandler.post(() -> {
+            if (future != null) {
+                try {
+                    // Worker uses a separate thread pool, so waiting here won't cause a deadlock
+                    future.get();
+                } catch (InterruptedException | ExecutionException e) {
+                    Slog.e(TAG, "Sync failed", e);
+                }
+            }
+
+            final long ident = Binder.clearCallingIdentity();
+            int i = -1;
+            try {
+                final int count = requestUids.length;
+                final HealthStatsParceler[] results = new HealthStatsParceler[count];
+                synchronized (mStats) {
+                    for (i = 0; i < count; i++) {
+                        results[i] = getHealthStatsForUidLocked(requestUids[i]);
+                    }
+                }
+                Bundle resultData = new Bundle(1);
+                resultData.putParcelableArray(IBatteryStats.KEY_UID_SNAPSHOTS, results);
+                resultReceiver.send(0, resultData);
+            } catch (Exception ex) {
+                if (DBG) {
+                    Slog.d(TAG, "Crashed while returning results for takeUidSnapshots("
+                            + Arrays.toString(requestUids) + ") i=" + i, ex);
+                }
+                throw ex;
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+            }
+        });
+    }
+
     private boolean shouldCollectExternalStats() {
         return (SystemClock.elapsedRealtime() - mWorker.getLastCollectionTimeStamp())
                 > mStats.getExternalStatsCollectionRateLimitMs();
diff --git a/services/core/java/com/android/server/am/BroadcastFilter.java b/services/core/java/com/android/server/am/BroadcastFilter.java
index 7494277..adb2392 100644
--- a/services/core/java/com/android/server/am/BroadcastFilter.java
+++ b/services/core/java/com/android/server/am/BroadcastFilter.java
@@ -26,7 +26,7 @@
 
 import java.io.PrintWriter;
 
-final class BroadcastFilter extends IntentFilter {
+public final class BroadcastFilter extends IntentFilter {
     // Back-pointer to the list this filter is in.
     final ReceiverList receiverList;
     final String packageName;
@@ -37,7 +37,7 @@
     final int owningUserId;
     final boolean instantApp;
     final boolean visibleToInstantApp;
-    final boolean exported;
+    public final boolean exported;
 
     BroadcastFilter(IntentFilter _filter, ReceiverList _receiverList,
             String _packageName, String _featureId, String _receiverId, String _requiredPermission,
diff --git a/services/core/java/com/android/server/am/ComponentAliasResolver.java b/services/core/java/com/android/server/am/ComponentAliasResolver.java
index 3fa6102..5d84fd9 100644
--- a/services/core/java/com/android/server/am/ComponentAliasResolver.java
+++ b/services/core/java/com/android/server/am/ComponentAliasResolver.java
@@ -455,9 +455,9 @@
     }
 
     @Nullable
-    public Resolution<ResolveInfo> resolveReceiver(@NonNull Intent intent,
-            @NonNull ResolveInfo receiver, @Nullable String resolvedType,
-            long packageFlags, int userId, int callingUid, boolean forSend) {
+    public Resolution<ResolveInfo> resolveReceiver(
+            @NonNull Intent intent, @NonNull ResolveInfo receiver, @Nullable String resolvedType,
+            long packageFlags, int userId, int callingUid, int callingPid) {
         // Resolve this alias.
         final Resolution<ComponentName> resolution = resolveComponentAlias(() ->
                 receiver.activityInfo.getComponentName());
@@ -481,7 +481,7 @@
         i.setComponent(resolution.getTarget());
 
         List<ResolveInfo> resolved = pmi.queryIntentReceivers(
-                i, resolvedType, packageFlags, callingUid, userId, forSend);
+                i, resolvedType, packageFlags, callingUid, callingPid, userId, /*forSend*/ true);
         if (resolved == null || resolved.size() == 0) {
             // Target component not found.
             Slog.w(TAG, "Alias target " + target.flattenToShortString() + " not found");
diff --git a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
index 032093b..9a3b575 100644
--- a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
+++ b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
@@ -141,6 +141,7 @@
         "app_widgets",
         "arc_next",
         "art_mainline",
+        "art_performance",
         "avic",
         "biometrics",
         "biometrics_framework",
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
index 1d21ccb..039e7f4 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
@@ -966,6 +966,11 @@
             case BluetoothProfile.LE_AUDIO_BROADCAST:
                 audioDevice = AudioSystem.DEVICE_OUT_BLE_BROADCAST;
                 break;
+            case BluetoothProfile.HEADSET:
+                // the actual device type is not important at this point and
+                // will be set by BtHelper.handleBtScoActiveDeviceChange()
+                audioDevice = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;
+                break;
             default: throw new IllegalArgumentException("Invalid profile " + d.mInfo.getProfile());
         }
         return new BtDeviceInfo(d, device, state, audioDevice, codec);
diff --git a/services/core/java/com/android/server/audio/AudioServerPermissionProvider.java b/services/core/java/com/android/server/audio/AudioServerPermissionProvider.java
index 5ea3c4b..76191bb 100644
--- a/services/core/java/com/android/server/audio/AudioServerPermissionProvider.java
+++ b/services/core/java/com/android/server/audio/AudioServerPermissionProvider.java
@@ -16,40 +16,76 @@
 
 package com.android.server.audio;
 
+import static android.Manifest.permission.CALL_AUDIO_INTERCEPTION;
+import static android.Manifest.permission.MODIFY_AUDIO_ROUTING;
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
+import static android.Manifest.permission.RECORD_AUDIO;
+
 import android.annotation.Nullable;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.ArraySet;
+import android.util.IntArray;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.media.permission.INativePermissionController;
+import com.android.media.permission.PermissionEnum;
 import com.android.media.permission.UidPackageState;
 import com.android.server.pm.pkg.PackageState;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
+import java.util.function.BiPredicate;
+import java.util.function.Supplier;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
 /** Responsible for synchronizing system server permission state to the native audioserver. */
 public class AudioServerPermissionProvider {
 
+    static final String[] MONITORED_PERMS = new String[PermissionEnum.ENUM_SIZE];
+
+    static {
+        MONITORED_PERMS[PermissionEnum.MODIFY_AUDIO_ROUTING] = MODIFY_AUDIO_ROUTING;
+        MONITORED_PERMS[PermissionEnum.MODIFY_PHONE_STATE] = MODIFY_PHONE_STATE;
+        MONITORED_PERMS[PermissionEnum.RECORD_AUDIO] = RECORD_AUDIO;
+        MONITORED_PERMS[PermissionEnum.CALL_AUDIO_INTERCEPTION] = CALL_AUDIO_INTERCEPTION;
+    }
+
     private final Object mLock = new Object();
+    private final Supplier<int[]> mUserIdSupplier;
+    private final BiPredicate<Integer, String> mPermissionPredicate;
 
     @GuardedBy("mLock")
     private INativePermissionController mDest;
 
     @GuardedBy("mLock")
     private final Map<Integer, Set<String>> mPackageMap;
+    // Values are sorted
+    @GuardedBy("mLock")
+    private final int[][] mPermMap = new int[PermissionEnum.ENUM_SIZE][];
+
+    @GuardedBy("mLock")
+    private boolean mIsUpdateDeferred = true;
 
     /**
      * @param appInfos - PackageState for all apps on the device, used to populate init state
      */
-    public AudioServerPermissionProvider(Collection<PackageState> appInfos) {
+    public AudioServerPermissionProvider(
+            Collection<PackageState> appInfos,
+            BiPredicate<Integer, String> permissionPredicate,
+            Supplier<int[]> userIdSupplier) {
+        for (int i = 0; i < PermissionEnum.ENUM_SIZE; i++) {
+            Objects.requireNonNull(MONITORED_PERMS[i]);
+        }
+        mUserIdSupplier = userIdSupplier;
+        mPermissionPredicate = permissionPredicate;
         // Initialize the package state
         mPackageMap = generatePackageMappings(appInfos);
     }
@@ -64,6 +100,18 @@
         synchronized (mLock) {
             mDest = pc;
             resetNativePackageState();
+            try {
+                for (byte i = 0; i < PermissionEnum.ENUM_SIZE; i++) {
+                    if (mIsUpdateDeferred) {
+                        mPermMap[i] = getUidsHoldingPerm(MONITORED_PERMS[i]);
+                    }
+                    mDest.populatePermissionState(i, mPermMap[i]);
+                }
+                mIsUpdateDeferred = false;
+            } catch (RemoteException e) {
+                // We will re-init the state when the service comes back up
+                mDest = null;
+            }
         }
     }
 
@@ -106,6 +154,30 @@
         }
     }
 
+    /** Called whenever any package/permission changes occur which invalidate uids holding perms */
+    public void onPermissionStateChanged() {
+        synchronized (mLock) {
+            if (mDest == null) {
+                mIsUpdateDeferred = true;
+                return;
+            }
+            try {
+                for (byte i = 0; i < PermissionEnum.ENUM_SIZE; i++) {
+                    var newPerms = getUidsHoldingPerm(MONITORED_PERMS[i]);
+                    if (!Arrays.equals(newPerms, mPermMap[i])) {
+                        mPermMap[i] = newPerms;
+                        mDest.populatePermissionState(i, newPerms);
+                    }
+                }
+            } catch (RemoteException e) {
+                // We will re-init the state when the service comes back up
+                mDest = null;
+                // We didn't necessarily finish
+                mIsUpdateDeferred = true;
+            }
+        }
+    }
+
     /** Called when full syncing package state to audioserver. */
     @GuardedBy("mLock")
     private void resetNativePackageState() {
@@ -128,6 +200,23 @@
         }
     }
 
+    @GuardedBy("mLock")
+    /** Return all uids (not app-ids) which currently hold a given permission. Not app-op aware */
+    private int[] getUidsHoldingPerm(String perm) {
+        IntArray acc = new IntArray();
+        for (int userId : mUserIdSupplier.get()) {
+            for (int appId : mPackageMap.keySet()) {
+                int uid = UserHandle.getUid(userId, appId);
+                if (mPermissionPredicate.test(uid, perm)) {
+                    acc.add(uid);
+                }
+            }
+        }
+        var unwrapped = acc.toArray();
+        Arrays.sort(unwrapped);
+        return unwrapped;
+    }
+
     /**
      * Aggregation operation on all package states list: groups by states by app-id and merges the
      * packageName for each state into an ArraySet.
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index ef65b25..c7ddccc 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -219,6 +219,7 @@
 import android.os.VibrationEffect;
 import android.os.Vibrator;
 import android.os.VibratorManager;
+import android.permission.PermissionManager;
 import android.provider.Settings;
 import android.provider.Settings.System;
 import android.service.notification.ZenModeConfig;
@@ -256,6 +257,7 @@
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.pm.UserManagerInternal.UserRestrictionsListener;
 import com.android.server.pm.UserManagerService;
+import com.android.server.pm.permission.PermissionManagerServiceInternal;
 import com.android.server.pm.pkg.PackageState;
 import com.android.server.utils.EventLogger;
 import com.android.server.wm.ActivityTaskManagerInternal;
@@ -284,6 +286,8 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.BooleanSupplier;
 import java.util.stream.Collectors;
 
@@ -11950,12 +11954,40 @@
                         .withUnfilteredSnapshot()) {
             packageStates = snapshot.getPackageStates().values();
         }
-        var provider = new AudioServerPermissionProvider(packageStates);
+        var umi = LocalServices.getService(UserManagerInternal.class);
+        var pmsi = LocalServices.getService(PermissionManagerServiceInternal.class);
+        var provider = new AudioServerPermissionProvider(packageStates,
+                (Integer uid, String perm) -> (pmsi.checkUidPermission(uid, perm,
+                        Context.DEVICE_ID_DEFAULT) == PackageManager.PERMISSION_GRANTED),
+                () -> umi.getUserIds()
+                );
         audioPolicy.registerOnStartTask(() -> {
             provider.onServiceStart(audioPolicy.getPermissionController());
         });
 
         // Set up event listeners
+        // Must be kept in sync with PermissionManager
+        Runnable cacheSysPropHandler = new Runnable() {
+            private AtomicReference<SystemProperties.Handle> mHandle = new AtomicReference();
+            private AtomicLong mNonce = new AtomicLong();
+            @Override
+            public void run() {
+                if (mHandle.get() == null) {
+                    // Cache the handle
+                    mHandle.compareAndSet(null, SystemProperties.find(
+                            PermissionManager.CACHE_KEY_PACKAGE_INFO));
+                }
+                long nonce;
+                SystemProperties.Handle ref;
+                if ((ref = mHandle.get()) != null && (nonce = ref.getLong(0)) != 0 &&
+                        mNonce.getAndSet(nonce) != nonce) {
+                    audioserverExecutor.execute(() -> provider.onPermissionStateChanged());
+                }
+            }
+        };
+
+        SystemProperties.addChangeCallback(cacheSysPropHandler);
+
         IntentFilter packageUpdateFilter = new IntentFilter();
         packageUpdateFilter.addAction(ACTION_PACKAGE_ADDED);
         packageUpdateFilter.addAction(ACTION_PACKAGE_REMOVED);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index f9f56ee..2660932 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -316,6 +316,8 @@
 
                 if (getBiometricContext().isAwake()) {
                     mALSProbeCallback.getProbe().enable();
+                } else {
+                    mALSProbeCallback.getProbe().disable();
                 }
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 4c3020f..0afca92 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -30,7 +30,6 @@
 import android.annotation.UserIdInt;
 import android.annotation.WorkerThread;
 import android.app.ActivityManagerInternal;
-import android.app.AppGlobals;
 import android.app.AppOpsManager;
 import android.app.IUriGrantsManager;
 import android.app.KeyguardManager;
@@ -48,9 +47,8 @@
 import android.content.IOnPrimaryClipChangedListener;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
 import android.content.pm.UserInfo;
 import android.graphics.drawable.Drawable;
 import android.hardware.display.DisplayManager;
@@ -1247,20 +1245,13 @@
 
     @GuardedBy("mLock")
     private void addActiveOwnerLocked(int uid, int deviceId, String pkg) {
-        final IPackageManager pm = AppGlobals.getPackageManager();
+        final PackageManagerInternal pm = LocalServices.getService(PackageManagerInternal.class);
         final int targetUserHandle = UserHandle.getCallingUserId();
         final long oldIdentity = Binder.clearCallingIdentity();
         try {
-            PackageInfo pi = pm.getPackageInfo(pkg, 0, targetUserHandle);
-            if (pi == null) {
-                throw new IllegalArgumentException("Unknown package " + pkg);
+            if (!pm.isSameApp(pkg, 0, uid, targetUserHandle)) {
+                throw new SecurityException("Calling uid " + uid + " does not own package " + pkg);
             }
-            if (!UserHandle.isSameApp(pi.applicationInfo.uid, uid)) {
-                throw new SecurityException("Calling uid " + uid
-                        + " does not own package " + pkg);
-            }
-        } catch (RemoteException e) {
-            // Can't happen; the package manager is in the same process
         } finally {
             Binder.restoreCallingIdentity(oldIdentity);
         }
diff --git a/services/core/java/com/android/server/criticalevents/OWNERS b/services/core/java/com/android/server/criticalevents/OWNERS
index 9c3136c..7935bed 100644
--- a/services/core/java/com/android/server/criticalevents/OWNERS
+++ b/services/core/java/com/android/server/criticalevents/OWNERS
@@ -1,2 +1 @@
 benmiles@google.com
-gaillard@google.com
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index eeacc53..e4db634 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -230,6 +230,16 @@
  *              <nits>55.2</nits>
  *            </displayBrightnessPoint>
  *          </blockingZoneThreshold>
+ *          <supportedModes>
+ *            <point>
+ *              <first>60</first>   // refresh rate
+ *              <second>60</second> // vsync
+ *            </point>
+ *            <point>
+ *              <first>120</first>    // refresh rate
+ *              <second>120</second> // vsync
+ *            </point>
+ *          </supportedModes>
  *        </lowerBlockingZoneConfigs>
  *        <higherBlockingZoneConfigs>
  *          <defaultRefreshRate>90</defaultRefreshRate>
@@ -244,6 +254,16 @@
  *            </displayBrightnessPoint>
  *          </blockingZoneThreshold>
  *        </higherBlockingZoneConfigs>
+ *        <lowPowerSupportedModes>
+ *          <point>
+ *            <first>60</first>   // refresh rate
+ *            <second>60</second> // vsync
+ *          </point>
+ *          <point>
+ *            <first>60</first>    // refresh rate
+ *            <second>240</second> // vsync
+ *          </point>
+ *        </lowPowerSupportedModes>
  *      </refreshRate>
  *
  *      <highBrightnessMode enabled="true">
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 8d71c70..195a516 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -159,7 +159,7 @@
     private static final int MSG_STATSD_HBM_BRIGHTNESS = 11;
     private static final int MSG_SWITCH_USER = 12;
     private static final int MSG_BOOT_COMPLETED = 13;
-    private static final int MSG_SET_DWBC_STRONG_MODE = 14;
+    private static final int MSG_SWITCH_AUTOBRIGHTNESS_MODE = 14;
     private static final int MSG_SET_DWBC_COLOR_OVERRIDE = 15;
     private static final int MSG_SET_DWBC_LOGGING_ENABLED = 16;
     private static final int MSG_SET_BRIGHTNESS_FROM_OFFLOAD = 17;
@@ -1184,15 +1184,9 @@
     @Override
     public void setAutomaticScreenBrightnessMode(
             @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
-        boolean isIdle = mode == AUTO_BRIGHTNESS_MODE_IDLE;
-        if (mAutomaticBrightnessController != null) {
-            // Set sendUpdate to true to make sure that updatePowerState() gets called
-            mAutomaticBrightnessController.switchMode(mode, /* sendUpdate= */ true);
-            setAnimatorRampSpeeds(isIdle);
-        }
         Message msg = mHandler.obtainMessage();
-        msg.what = MSG_SET_DWBC_STRONG_MODE;
-        msg.arg1 = isIdle ? 1 : 0;
+        msg.what = MSG_SWITCH_AUTOBRIGHTNESS_MODE;
+        msg.arg1 = mode;
         mHandler.sendMessageAtTime(msg, mClock.uptimeMillis());
     }
 
@@ -1361,7 +1355,7 @@
         state = mPowerState.getScreenState();
 
         DisplayBrightnessState displayBrightnessState = mDisplayBrightnessController
-                .updateBrightness(mPowerRequest, state);
+                .updateBrightness(mPowerRequest, state, mDisplayOffloadSession);
         float brightnessState = displayBrightnessState.getBrightness();
         float rawBrightnessState = displayBrightnessState.getBrightness();
         mBrightnessReasonTemp.set(displayBrightnessState.getBrightnessReason());
@@ -1374,6 +1368,10 @@
         if (displayBrightnessState.getBrightnessEvent() != null) {
             mTempBrightnessEvent.copyFrom(displayBrightnessState.getBrightnessEvent());
         }
+
+        boolean allowAutoBrightnessWhileDozing =
+                mDisplayBrightnessController.isAllowAutoBrightnessWhileDozing();
+
         if (!mFlags.isRefactorDisplayPowerControllerEnabled()) {
             // Set up the ScreenOff controller used when coming out of SCREEN_OFF and the ALS sensor
             // doesn't yet have a valid lux value to use with auto-brightness.
@@ -1381,8 +1379,7 @@
                 mScreenOffBrightnessSensorController
                         .setLightSensorEnabled(displayBrightnessState.getShouldUseAutoBrightness()
                         && mIsEnabled && (state == Display.STATE_OFF
-                        || (state == Display.STATE_DOZE
-                        && !mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig()))
+                        || (state == Display.STATE_DOZE && !allowAutoBrightnessWhileDozing))
                         && mLeadDisplayId == Layout.NO_LEAD_DISPLAY);
             }
         }
@@ -1392,12 +1389,7 @@
         final boolean wasShortTermModelActive =
                 mAutomaticBrightnessStrategy.isShortTermModelActive();
         boolean userInitiatedChange = displayBrightnessState.isUserInitiatedChange();
-        boolean allowAutoBrightnessWhileDozing =
-                mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig();
-        if (mFlags.offloadControlsDozeAutoBrightness() && mFlags.isDisplayOffloadEnabled()
-                && mDisplayOffloadSession != null) {
-            allowAutoBrightnessWhileDozing &= mDisplayOffloadSession.allowAutoBrightnessInDoze();
-        }
+
         if (!mFlags.isRefactorDisplayPowerControllerEnabled()) {
             // Switch to doze auto-brightness mode if needed
             if (mFlags.areAutoBrightnessModesEnabled() && mAutomaticBrightnessController != null
@@ -1868,7 +1860,7 @@
 
     private void setDwbcStrongMode(int arg) {
         if (mDisplayWhiteBalanceController != null) {
-            final boolean isIdle = (arg == 1);
+            final boolean isIdle = (arg == AUTO_BRIGHTNESS_MODE_IDLE);
             mDisplayWhiteBalanceController.setStrongModeEnabled(isIdle);
         }
     }
@@ -3034,7 +3026,12 @@
                     updatePowerState();
                     break;
 
-                case MSG_SET_DWBC_STRONG_MODE:
+                case MSG_SWITCH_AUTOBRIGHTNESS_MODE:
+                    boolean isIdle = msg.arg1 == AUTO_BRIGHTNESS_MODE_IDLE;
+                    if (mAutomaticBrightnessController != null) {
+                        mAutomaticBrightnessController.switchMode(msg.arg1, /* sendUpdate= */ true);
+                        setAnimatorRampSpeeds(isIdle);
+                    }
                     setDwbcStrongMode(msg.arg1);
                     break;
 
diff --git a/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java b/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
index d567331..4982a0b0 100644
--- a/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
+++ b/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
@@ -146,11 +146,13 @@
      */
     public DisplayBrightnessState updateBrightness(
             DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
-            int targetDisplayState) {
+            int targetDisplayState,
+            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
         DisplayBrightnessState state;
         synchronized (mLock) {
             mDisplayBrightnessStrategy = mDisplayBrightnessStrategySelector.selectStrategy(
-                    constructStrategySelectionRequest(displayPowerRequest, targetDisplayState));
+                    constructStrategySelectionRequest(displayPowerRequest, targetDisplayState,
+                            displayOffloadSession));
             state = mDisplayBrightnessStrategy
                         .updateBrightness(constructStrategyExecutionRequest(displayPowerRequest));
         }
@@ -204,6 +206,16 @@
      * Returns a boolean flag indicating if the light sensor is to be used to decide the screen
      * brightness when dozing
      */
+    public boolean isAllowAutoBrightnessWhileDozing() {
+        synchronized (mLock) {
+            return mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing();
+        }
+    }
+
+    /**
+     * Returns the config value indicating the auto brightness while dozing is to be
+     * allowed ot not. Note that this is a config value, but the actual status can differ from this.
+     */
     public boolean isAllowAutoBrightnessWhileDozingConfig() {
         synchronized (mLock) {
             return mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozingConfig();
@@ -587,14 +599,15 @@
 
     private StrategySelectionRequest constructStrategySelectionRequest(
             DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
-            int targetDisplayState) {
+            int targetDisplayState,
+            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
         boolean userSetBrightnessChanged = updateUserSetScreenBrightness();
         float lastUserSetScreenBrightness;
         synchronized (mLock) {
             lastUserSetScreenBrightness = mLastUserSetScreenBrightness;
         }
         return new StrategySelectionRequest(displayPowerRequest, targetDisplayState,
-                lastUserSetScreenBrightness, userSetBrightnessChanged);
+                lastUserSetScreenBrightness, userSetBrightnessChanged, displayOffloadSession);
     }
 
     private StrategyExecutionRequest constructStrategyExecutionRequest(
diff --git a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
index feec4e6..7835220 100644
--- a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
+++ b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
@@ -48,9 +48,14 @@
  */
 public class DisplayBrightnessStrategySelector {
     private static final String TAG = "DisplayBrightnessStrategySelector";
-    // True if light sensor is to be used to automatically determine doze screen brightness.
+    // True if the config to use the light sensor to automatically determine doze screen brightness
+    // is enabled. Note that the actual value representing if the auto-brightness is to be kept
+    // enabled while dozing can differ, but is dependent on this
     private final boolean mAllowAutoBrightnessWhileDozingConfig;
 
+    // True if light sensor is to be used to automatically determine doze screen brightness.
+    private boolean mAllowAutoBrightnessWhileDozing;
+
     // The brightness strategy used to manage the brightness state when the display is dozing.
     private final DozeBrightnessStrategy mDozeBrightnessStrategy;
     // The brightness strategy used to manage the brightness state when the display is in
@@ -149,6 +154,7 @@
                 mAutoBrightnessFallbackStrategy, mFallbackBrightnessStrategy};
         mAllowAutoBrightnessWhileDozingConfig = context.getResources().getBoolean(
                 R.bool.config_allowAutoBrightnessWhileDozing);
+        mAllowAutoBrightnessWhileDozing = mAllowAutoBrightnessWhileDozingConfig;
         mOldBrightnessStrategyName = mInvalidBrightnessStrategy.getName();
     }
 
@@ -163,6 +169,7 @@
         int targetDisplayState = strategySelectionRequest.getTargetDisplayState();
         DisplayManagerInternal.DisplayPowerRequest displayPowerRequest = strategySelectionRequest
                 .getDisplayPowerRequest();
+        setAllowAutoBrightnessWhileDozing(strategySelectionRequest.getDisplayOffloadSession());
         if (targetDisplayState == Display.STATE_OFF) {
             displayBrightnessStrategy = mScreenOffBrightnessStrategy;
         } else if (shouldUseDozeBrightnessStrategy(displayPowerRequest)) {
@@ -231,6 +238,14 @@
      * Returns a boolean flag indicating if the light sensor is to be used to decide the screen
      * brightness when dozing
      */
+    public boolean isAllowAutoBrightnessWhileDozing() {
+        return mAllowAutoBrightnessWhileDozing;
+    }
+
+    /**
+     * Returns the config value indicating whether auto brightness while dozing is to be
+     * allowed ot not
+     */
     public boolean isAllowAutoBrightnessWhileDozingConfig() {
         return mAllowAutoBrightnessWhileDozingConfig;
     }
@@ -251,6 +266,8 @@
         writer.println(
                 "  mAllowAutoBrightnessWhileDozingConfig= "
                         + mAllowAutoBrightnessWhileDozingConfig);
+        writer.println(
+                "  mAllowAutoBrightnessWhileDozing= " + mAllowAutoBrightnessWhileDozing);
         IndentingPrintWriter ipw = new IndentingPrintWriter(writer, " ");
         for (DisplayBrightnessStrategy displayBrightnessStrategy : mDisplayBrightnessStrategies) {
             if (displayBrightnessStrategy != null) {
@@ -259,6 +276,17 @@
         }
     }
 
+    @VisibleForTesting
+    void setAllowAutoBrightnessWhileDozing(
+            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
+        mAllowAutoBrightnessWhileDozing = mAllowAutoBrightnessWhileDozingConfig;
+        if (mDisplayManagerFlags.offloadControlsDozeAutoBrightness()
+                && mDisplayManagerFlags.isDisplayOffloadEnabled()
+                && displayOffloadSession != null) {
+            mAllowAutoBrightnessWhileDozing &= displayOffloadSession.allowAutoBrightnessInDoze();
+        }
+    }
+
     private boolean isAutoBrightnessFallbackStrategyValid() {
         return mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()
                 && mAutoBrightnessFallbackStrategy != null
@@ -270,7 +298,7 @@
             StrategySelectionRequest strategySelectionRequest) {
         mAutomaticBrightnessStrategy1.setAutoBrightnessState(
                 strategySelectionRequest.getTargetDisplayState(),
-                mAllowAutoBrightnessWhileDozingConfig,
+                mAllowAutoBrightnessWhileDozing,
                 BrightnessReason.REASON_UNKNOWN,
                 strategySelectionRequest.getDisplayPowerRequest().policy,
                 strategySelectionRequest.getLastUserSetScreenBrightness(),
@@ -287,7 +315,7 @@
                 selectedDisplayBrightnessStrategy,
                 strategySelectionRequest.getLastUserSetScreenBrightness(),
                 strategySelectionRequest.isUserSetBrightnessChanged(),
-                isAllowAutoBrightnessWhileDozingConfig(),
+                mAllowAutoBrightnessWhileDozing,
                 getAutomaticBrightnessStrategy().shouldUseAutoBrightness());
     }
 
@@ -309,7 +337,7 @@
         // a user can define a different display state(displayPowerRequest.dozeScreenState) too
         // in the request with the Doze policy
         return displayPowerRequest.policy == DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE
-                && !mAllowAutoBrightnessWhileDozingConfig
+                && !mAllowAutoBrightnessWhileDozing
                 && BrightnessUtils.isValidBrightnessValue(displayPowerRequest.dozeScreenBrightness);
     }
 
diff --git a/services/core/java/com/android/server/display/brightness/StrategySelectionRequest.java b/services/core/java/com/android/server/display/brightness/StrategySelectionRequest.java
index ae745efc..aa2f23e 100644
--- a/services/core/java/com/android/server/display/brightness/StrategySelectionRequest.java
+++ b/services/core/java/com/android/server/display/brightness/StrategySelectionRequest.java
@@ -38,13 +38,17 @@
     // Represents if the user set screen brightness was changed or not.
     private boolean mUserSetBrightnessChanged;
 
+    private DisplayManagerInternal.DisplayOffloadSession mDisplayOffloadSession;
+
     public StrategySelectionRequest(DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
             int targetDisplayState, float lastUserSetScreenBrightness,
-            boolean userSetBrightnessChanged) {
+            boolean userSetBrightnessChanged,
+            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
         mDisplayPowerRequest = displayPowerRequest;
         mTargetDisplayState = targetDisplayState;
         mLastUserSetScreenBrightness = lastUserSetScreenBrightness;
         mUserSetBrightnessChanged = userSetBrightnessChanged;
+        mDisplayOffloadSession = displayOffloadSession;
     }
 
     public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
@@ -64,6 +68,10 @@
         return mUserSetBrightnessChanged;
     }
 
+    public DisplayManagerInternal.DisplayOffloadSession getDisplayOffloadSession() {
+        return mDisplayOffloadSession;
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (!(obj instanceof StrategySelectionRequest)) {
@@ -73,12 +81,13 @@
         return Objects.equals(mDisplayPowerRequest, other.getDisplayPowerRequest())
                 && mTargetDisplayState == other.getTargetDisplayState()
                 && mLastUserSetScreenBrightness == other.getLastUserSetScreenBrightness()
-                && mUserSetBrightnessChanged == other.isUserSetBrightnessChanged();
+                && mUserSetBrightnessChanged == other.isUserSetBrightnessChanged()
+                && mDisplayOffloadSession.equals(other.getDisplayOffloadSession());
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mDisplayPowerRequest, mTargetDisplayState,
-                mLastUserSetScreenBrightness, mUserSetBrightnessChanged);
+                mLastUserSetScreenBrightness, mUserSetBrightnessChanged, mDisplayOffloadSession);
     }
 }
diff --git a/services/core/java/com/android/server/display/config/RefreshRateData.java b/services/core/java/com/android/server/display/config/RefreshRateData.java
index d7ed904..f769a89 100644
--- a/services/core/java/com/android/server/display/config/RefreshRateData.java
+++ b/services/core/java/com/android/server/display/config/RefreshRateData.java
@@ -64,18 +64,22 @@
 
     public final List<SupportedModeData> lowPowerSupportedModes;
 
+    public final List<SupportedModeData> lowLightBlockingZoneSupportedModes;
+
     @VisibleForTesting
     public RefreshRateData(int defaultRefreshRate, int defaultPeakRefreshRate,
             int defaultRefreshRateInHbmHdr, int defaultRefreshRateInHbmSunlight,
-            List<SupportedModeData> lowPowerSupportedModes) {
+            List<SupportedModeData> lowPowerSupportedModes,
+            List<SupportedModeData> lowLightBlockingZoneSupportedModes) {
         this.defaultRefreshRate = defaultRefreshRate;
         this.defaultPeakRefreshRate = defaultPeakRefreshRate;
         this.defaultRefreshRateInHbmHdr = defaultRefreshRateInHbmHdr;
         this.defaultRefreshRateInHbmSunlight = defaultRefreshRateInHbmSunlight;
         this.lowPowerSupportedModes = Collections.unmodifiableList(lowPowerSupportedModes);
+        this.lowLightBlockingZoneSupportedModes =
+                Collections.unmodifiableList(lowLightBlockingZoneSupportedModes);
     }
 
-
     @Override
     public String toString() {
         return "RefreshRateData {"
@@ -84,6 +88,7 @@
                 + ", defaultRefreshRateInHbmHdr: " + defaultRefreshRateInHbmHdr
                 + ", defaultRefreshRateInHbmSunlight: " + defaultRefreshRateInHbmSunlight
                 + ", lowPowerSupportedModes=" + lowPowerSupportedModes
+                + ", lowLightBlockingZoneSupportedModes=" + lowLightBlockingZoneSupportedModes
                 + "} ";
     }
 
@@ -100,13 +105,19 @@
         int defaultRefreshRateInHbmSunlight = loadDefaultRefreshRateInHbmSunlight(
                 refreshRateConfigs, resources);
 
-        NonNegativeFloatToFloatMap modes =
+        NonNegativeFloatToFloatMap lowPowerModes =
                 refreshRateConfigs == null ? null : refreshRateConfigs.getLowPowerSupportedModes();
-        List<SupportedModeData> lowPowerSupportedModes = SupportedModeData.load(modes);
+        List<SupportedModeData> lowPowerSupportedModes = SupportedModeData.load(lowPowerModes);
+
+        BlockingZoneConfig lowerZoneConfig = refreshRateConfigs == null ? null
+                : refreshRateConfigs.getLowerBlockingZoneConfigs();
+        NonNegativeFloatToFloatMap lowerZoneModes =
+                lowerZoneConfig == null ? null : lowerZoneConfig.getSupportedModes();
+        List<SupportedModeData> lowLightSupportedModes = SupportedModeData.load(lowerZoneModes);
 
         return new RefreshRateData(defaultRefreshRate, defaultPeakRefreshRate,
                 defaultRefreshRateInHbmHdr, defaultRefreshRateInHbmSunlight,
-                lowPowerSupportedModes);
+                lowPowerSupportedModes, lowLightSupportedModes);
     }
 
     private static int loadDefaultRefreshRate(
diff --git a/services/core/java/com/android/server/display/mode/DisplayModeDirector.java b/services/core/java/com/android/server/display/mode/DisplayModeDirector.java
index d519748..d610f08 100644
--- a/services/core/java/com/android/server/display/mode/DisplayModeDirector.java
+++ b/services/core/java/com/android/server/display/mode/DisplayModeDirector.java
@@ -2157,8 +2157,19 @@
             }
         }
 
+        private boolean hasLowLightVrrConfig() {
+            DisplayDeviceConfig config;
+            synchronized (mLock) {
+                config = mDefaultDisplayDeviceConfig;
+            }
+            return mVsyncLowLightBlockingVoteEnabled
+                    && config != null
+                    && config.isVrrSupportEnabled()
+                    && !config.getRefreshRateData().lowLightBlockingZoneSupportedModes.isEmpty();
+        }
+
         private void restartObserver() {
-            if (mRefreshRateInLowZone > 0) {
+            if (mRefreshRateInLowZone > 0 || hasLowLightVrrConfig()) {
                 mShouldObserveDisplayLowChange = hasValidThreshold(
                         mLowDisplayBrightnessThresholds);
                 mShouldObserveAmbientLowChange = hasValidThreshold(
@@ -2300,6 +2311,7 @@
             return false;
         }
 
+        @GuardedBy("mLock")
         private void onBrightnessChangedLocked() {
             if (!mRefreshRateChangeable || mLowPowerModeEnabled) {
                 return;
@@ -2315,8 +2327,14 @@
 
             boolean insideLowZone = hasValidLowZone() && isInsideLowZone(mBrightness, mAmbientLux);
             if (insideLowZone) {
-                refreshRateVote =
-                        Vote.forPhysicalRefreshRates(mRefreshRateInLowZone, mRefreshRateInLowZone);
+                if (hasLowLightVrrConfig()) {
+                    refreshRateVote = Vote.forSupportedRefreshRates(mDefaultDisplayDeviceConfig
+                            .getRefreshRateData().lowLightBlockingZoneSupportedModes);
+                } else {
+                    refreshRateVote = Vote.forPhysicalRefreshRates(
+                            mRefreshRateInLowZone, mRefreshRateInLowZone);
+                    refreshRateSwitchingVote = Vote.forDisableRefreshRateSwitching();
+                }
                 if (mLowZoneRefreshRateForThermals != null) {
                     RefreshRateRange range = SkinThermalStatusObserver
                             .findBestMatchingRefreshRateRange(mThermalStatus,
@@ -2326,18 +2344,6 @@
                                 Vote.forPhysicalRefreshRates(range.min, range.max);
                     }
                 }
-
-                if (mVsyncLowLightBlockingVoteEnabled
-                        && isVrrSupportedLocked(Display.DEFAULT_DISPLAY)) {
-                    refreshRateSwitchingVote = Vote.forSupportedRefreshRatesAndDisableSwitching(
-                            List.of(
-                                    new SupportedRefreshRatesVote.RefreshRates(
-                                            /* peakRefreshRate= */ 60f, /* vsyncRate= */ 60f),
-                                    new SupportedRefreshRatesVote.RefreshRates(
-                                            /* peakRefreshRate= */120f, /* vsyncRate= */ 120f)));
-                } else {
-                    refreshRateSwitchingVote = Vote.forDisableRefreshRateSwitching();
-                }
             }
 
             boolean insideHighZone = hasValidHighZone()
@@ -2368,7 +2374,7 @@
         }
 
         private boolean hasValidLowZone() {
-            return mRefreshRateInLowZone > 0
+            return (mRefreshRateInLowZone > 0 || hasLowLightVrrConfig())
                     && (mShouldObserveDisplayLowChange || mShouldObserveAmbientLowChange);
         }
 
diff --git a/services/core/java/com/android/server/display/mode/Vote.java b/services/core/java/com/android/server/display/mode/Vote.java
index 1ec469c..7cbdd13 100644
--- a/services/core/java/com/android/server/display/mode/Vote.java
+++ b/services/core/java/com/android/server/display/mode/Vote.java
@@ -16,10 +16,13 @@
 
 package com.android.server.display.mode;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 
 import com.android.server.display.config.SupportedModeData;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -132,15 +135,40 @@
     // to function, so this needs to be the highest priority of all votes.
     int PRIORITY_UDFPS = 20;
 
+    @IntDef(prefix = { "PRIORITY_" }, value = {
+            PRIORITY_DEFAULT_RENDER_FRAME_RATE,
+            PRIORITY_FLICKER_REFRESH_RATE,
+            PRIORITY_HIGH_BRIGHTNESS_MODE,
+            PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE,
+            PRIORITY_USER_SETTING_DISPLAY_PREFERRED_SIZE,
+            PRIORITY_APP_REQUEST_RENDER_FRAME_RATE_RANGE,
+            PRIORITY_APP_REQUEST_BASE_MODE_REFRESH_RATE,
+            PRIORITY_APP_REQUEST_SIZE,
+            PRIORITY_USER_SETTING_PEAK_REFRESH_RATE,
+            PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE,
+            PRIORITY_SYNCHRONIZED_REFRESH_RATE,
+            PRIORITY_LIMIT_MODE,
+            PRIORITY_AUTH_OPTIMIZER_RENDER_FRAME_RATE,
+            PRIORITY_LAYOUT_LIMITED_FRAME_RATE,
+            PRIORITY_SYSTEM_REQUESTED_MODES,
+            PRIORITY_LOW_POWER_MODE_MODES,
+            PRIORITY_LOW_POWER_MODE_RENDER_RATE,
+            PRIORITY_FLICKER_REFRESH_RATE_SWITCH,
+            PRIORITY_SKIN_TEMPERATURE,
+            PRIORITY_PROXIMITY,
+            PRIORITY_UDFPS
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface Priority {}
+
     // Whenever a new priority is added, remember to update MIN_PRIORITY, MAX_PRIORITY, and
     // APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF, as well as priorityToString.
-
-    int MIN_PRIORITY = PRIORITY_DEFAULT_RENDER_FRAME_RATE;
-    int MAX_PRIORITY = PRIORITY_UDFPS;
+    @Priority int MIN_PRIORITY = PRIORITY_DEFAULT_RENDER_FRAME_RATE;
+    @Priority int MAX_PRIORITY = PRIORITY_UDFPS;
 
     // The cutoff for the app request refresh rate range. Votes with priorities lower than this
     // value will not be considered when constructing the app request refresh rate range.
-    int APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF =
+    @Priority int APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF =
             PRIORITY_APP_REQUEST_RENDER_FRAME_RATE_RANGE;
 
     /**
@@ -205,13 +233,6 @@
         return new SupportedModesVote(modeIds);
     }
 
-    static Vote forSupportedRefreshRatesAndDisableSwitching(
-            List<SupportedRefreshRatesVote.RefreshRates> supportedRefreshRates) {
-        return new CombinedVote(
-                List.of(forDisableRefreshRateSwitching(),
-                        new SupportedRefreshRatesVote(supportedRefreshRates)));
-    }
-
     static String priorityToString(int priority) {
         switch (priority) {
             case PRIORITY_APP_REQUEST_BASE_MODE_REFRESH_RATE:
diff --git a/services/core/java/com/android/server/display/mode/VotesStorage.java b/services/core/java/com/android/server/display/mode/VotesStorage.java
index 6becf1c..d41ef65 100644
--- a/services/core/java/com/android/server/display/mode/VotesStorage.java
+++ b/services/core/java/com/android/server/display/mode/VotesStorage.java
@@ -79,12 +79,12 @@
     }
 
     /** updates vote storage for all displays */
-    void updateGlobalVote(int priority, @Nullable Vote vote) {
+    void updateGlobalVote(@Vote.Priority int priority, @Nullable Vote vote) {
         updateVote(GLOBAL_ID, priority, vote);
     }
 
     /** updates vote storage */
-    void updateVote(int displayId, int priority, @Nullable Vote vote) {
+    void updateVote(int displayId, @Vote.Priority int priority, @Nullable Vote vote) {
         if (mLoggingEnabled) {
             Slog.i(TAG, "updateVoteLocked(displayId=" + displayId
                     + ", priority=" + Vote.priorityToString(priority)
@@ -126,7 +126,7 @@
     }
 
     /** removes all votes with certain priority from vote storage */
-    void removeAllVotesForPriority(int priority) {
+    void removeAllVotesForPriority(@Vote.Priority int priority) {
         if (mLoggingEnabled) {
             Slog.i(TAG, "removeAllVotesForPriority(priority="
                     + Vote.priorityToString(priority) + ")");
diff --git a/services/core/java/com/android/server/dreams/OWNERS b/services/core/java/com/android/server/dreams/OWNERS
index 7302f6e..b9286f8 100644
--- a/services/core/java/com/android/server/dreams/OWNERS
+++ b/services/core/java/com/android/server/dreams/OWNERS
@@ -1,4 +1,3 @@
-brycelee@google.com
-dsandler@android.com
-michaelwr@google.com
-roosa@google.com
+# Bug component: 66910
+include /core/java/android/service/dreams/OWNERS
+
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 48cccd5..0bd40d1 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -3348,6 +3348,10 @@
         mPointerIconCache.setUseLargePointerIcons(useLargeIcons);
     }
 
+    void setPointerFillStyle(@PointerIcon.PointerIconVectorStyleFill int fillStyle) {
+        mPointerIconCache.setPointerFillStyle(fillStyle);
+    }
+
     interface KeyboardBacklightControllerInterface {
         default void incrementKeyboardBacklight(int deviceId) {}
         default void decrementKeyboardBacklight(int deviceId) {}
diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java
index a1341b7..9585b49 100644
--- a/services/core/java/com/android/server/input/InputSettingsObserver.java
+++ b/services/core/java/com/android/server/input/InputSettingsObserver.java
@@ -16,6 +16,9 @@
 
 package com.android.server.input;
 
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_BLACK;
+import static android.view.flags.Flags.enableVectorCursorA11ySettings;
+
 import static com.android.input.flags.Flags.rateLimitUserActivityPokeInDispatcher;
 
 import android.content.BroadcastReceiver;
@@ -96,7 +99,9 @@
                 Map.entry(Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_STICKY_KEYS),
                         (reason) -> updateAccessibilityStickyKeys()),
                 Map.entry(Settings.Secure.getUriFor(Settings.Secure.STYLUS_POINTER_ICON_ENABLED),
-                        (reason) -> updateStylusPointerIconEnabled()));
+                        (reason) -> updateStylusPointerIconEnabled()),
+                Map.entry(Settings.System.getUriFor(Settings.System.POINTER_FILL_STYLE),
+                        (reason) -> updatePointerFillStyleFromSettings()));
     }
 
     /**
@@ -261,4 +266,15 @@
         mNative.setStylusPointerIconEnabled(
                 InputSettings.isStylusPointerIconEnabled(mContext, true /* forceReloadSetting */));
     }
+
+    private void updatePointerFillStyleFromSettings() {
+        if (!enableVectorCursorA11ySettings()) {
+            return;
+        }
+        final int pointerFillStyle = Settings.System.getIntForUser(
+                mContext.getContentResolver(), Settings.System.POINTER_FILL_STYLE,
+                POINTER_ICON_VECTOR_STYLE_FILL_BLACK,
+                UserHandle.USER_CURRENT);
+        mService.setPointerFillStyle(pointerFillStyle);
+    }
 }
diff --git a/services/core/java/com/android/server/input/PointerIconCache.java b/services/core/java/com/android/server/input/PointerIconCache.java
index 233b865..936e17f 100644
--- a/services/core/java/com/android/server/input/PointerIconCache.java
+++ b/services/core/java/com/android/server/input/PointerIconCache.java
@@ -16,13 +16,17 @@
 
 package com.android.server.input;
 
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_BLACK;
+
 import android.annotation.NonNull;
 import android.content.Context;
+import android.content.res.Resources;
 import android.hardware.display.DisplayManager;
 import android.os.Handler;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
+import android.view.ContextThemeWrapper;
 import android.view.Display;
 import android.view.DisplayInfo;
 import android.view.PointerIcon;
@@ -56,6 +60,9 @@
     private final SparseArray<Context> mDisplayContexts = new SparseArray<>();
     @GuardedBy("mLoadedPointerIconsByDisplayAndType")
     private final SparseIntArray mDisplayDensities = new SparseIntArray();
+    @GuardedBy("mLoadedPointerIconsByDisplayAndType")
+    private @PointerIcon.PointerIconVectorStyleFill int mPointerIconFillStyle =
+            POINTER_ICON_VECTOR_STYLE_FILL_BLACK;
 
     private final DisplayManager.DisplayListener mDisplayListener =
             new DisplayManager.DisplayListener() {
@@ -105,6 +112,11 @@
         mUiThreadHandler.post(() -> handleSetUseLargePointerIcons(useLargeIcons));
     }
 
+    /** Set the fill style for vector pointer icons. */
+    public void setPointerFillStyle(@PointerIcon.PointerIconVectorStyleFill int fillStyle) {
+        mUiThreadHandler.post(() -> handleSetPointerFillStyle(fillStyle));
+    }
+
     /**
      * Get a loaded system pointer icon. This will fetch the icon from the cache, or load it if
      * it isn't already cached.
@@ -119,8 +131,13 @@
             }
             PointerIcon icon = iconsByType.get(type);
             if (icon == null) {
-                icon = PointerIcon.getLoadedSystemIcon(getContextForDisplayLocked(displayId), type,
-                        mUseLargePointerIcons);
+                Context context = getContextForDisplayLocked(displayId);
+                Resources.Theme theme = context.getResources().newTheme();
+                theme.setTo(context.getTheme());
+                theme.applyStyle(PointerIcon.vectorFillStyleToResource(mPointerIconFillStyle),
+                        /* force= */ true);
+                icon = PointerIcon.getLoadedSystemIcon(new ContextThemeWrapper(context, theme),
+                        type, mUseLargePointerIcons);
                 iconsByType.put(type, icon);
             }
             return Objects.requireNonNull(icon);
@@ -185,6 +202,19 @@
         mNative.reloadPointerIcons();
     }
 
+    @android.annotation.UiThread
+    private void handleSetPointerFillStyle(@PointerIcon.PointerIconVectorStyleFill int fillStyle) {
+        synchronized (mLoadedPointerIconsByDisplayAndType) {
+            if (mPointerIconFillStyle == fillStyle) {
+                return;
+            }
+            mPointerIconFillStyle = fillStyle;
+            // Clear all cached icons on all displays.
+            mLoadedPointerIconsByDisplayAndType.clear();
+        }
+        mNative.reloadPointerIcons();
+    }
+
     // Updates the cached display density for the given displayId, and returns true if
     // the cached density changed.
     @GuardedBy("mLoadedPointerIconsByDisplayAndType")
diff --git a/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java b/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
index 73f1aad..2e44b6d 100644
--- a/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
+++ b/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
@@ -37,6 +37,7 @@
 import android.util.EventLog;
 import android.util.Slog;
 import android.view.MotionEvent;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputMethod;
 import android.view.inputmethod.InputMethodManager;
@@ -147,39 +148,57 @@
             @SoftInputShowHideReason int reason) {
         switch (state) {
             case STATE_SHOW_IME:
-                ImeTracker.forLogging().onProgress(statsToken,
-                        ImeTracker.PHASE_SERVER_APPLY_IME_VISIBILITY);
-                // Send to window manager to show IME after IME layout finishes.
-                mWindowManagerInternal.showImePostLayout(windowToken, statsToken);
-                break;
-            case STATE_HIDE_IME:
-                if (mService.hasAttachedClient()) {
+                if (!Flags.refactorInsetsController()) {
                     ImeTracker.forLogging().onProgress(statsToken,
                             ImeTracker.PHASE_SERVER_APPLY_IME_VISIBILITY);
-                    // IMMS only knows of focused window, not the actual IME target.
-                    // e.g. it isn't aware of any window that has both
-                    // NOT_FOCUSABLE, ALT_FOCUSABLE_IM flags set and can the IME target.
-                    // Send it to window manager to hide IME from the actual IME control target
-                    // of the target display.
-                    mWindowManagerInternal.hideIme(windowToken,
-                            mService.getDisplayIdToShowImeLocked(), statsToken);
-                } else {
-                    ImeTracker.forLogging().onFailed(statsToken,
-                            ImeTracker.PHASE_SERVER_APPLY_IME_VISIBILITY);
+                    // Send to window manager to show IME after IME layout finishes.
+                    mWindowManagerInternal.showImePostLayout(windowToken, statsToken);
+                }
+                break;
+            case STATE_HIDE_IME:
+                if (!Flags.refactorInsetsController()) {
+                    if (mService.hasAttachedClient()) {
+                        ImeTracker.forLogging().onProgress(statsToken,
+                                ImeTracker.PHASE_SERVER_APPLY_IME_VISIBILITY);
+                        // IMMS only knows of focused window, not the actual IME target.
+                        // e.g. it isn't aware of any window that has both
+                        // NOT_FOCUSABLE, ALT_FOCUSABLE_IM flags set and can the IME target.
+                        // Send it to window manager to hide IME from the actual IME control target
+                        // of the target display.
+                        mWindowManagerInternal.hideIme(windowToken,
+                                mService.getDisplayIdToShowImeLocked(), statsToken);
+                    } else {
+                        ImeTracker.forLogging().onFailed(statsToken,
+                                ImeTracker.PHASE_SERVER_APPLY_IME_VISIBILITY);
+                    }
                 }
                 break;
             case STATE_HIDE_IME_EXPLICIT:
-                mService.hideCurrentInputLocked(windowToken, statsToken,
+                if (Flags.refactorInsetsController()) {
+                    setImeVisibilityOnFocusedWindowClient(false);
+                } else {
+                    mService.hideCurrentInputLocked(windowToken, statsToken,
                         0 /* flags */, null /* resultReceiver */, reason);
+                }
                 break;
             case STATE_HIDE_IME_NOT_ALWAYS:
-                mService.hideCurrentInputLocked(windowToken, statsToken,
-                        InputMethodManager.HIDE_NOT_ALWAYS, null /* resultReceiver */, reason);
+                if (Flags.refactorInsetsController()) {
+                    setImeVisibilityOnFocusedWindowClient(false);
+                } else {
+                    mService.hideCurrentInputLocked(windowToken, statsToken,
+                            InputMethodManager.HIDE_NOT_ALWAYS, null /* resultReceiver */, reason);
+                }
                 break;
             case STATE_SHOW_IME_IMPLICIT:
-                mService.showCurrentInputLocked(windowToken, statsToken,
-                        InputMethodManager.SHOW_IMPLICIT, MotionEvent.TOOL_TYPE_UNKNOWN,
+                if (Flags.refactorInsetsController()) {
+                    // This can be triggered by IMMS#startInputOrWindowGainedFocus. We need to
+                    // set the requestedVisibleTypes in InsetsController first, before applying it.
+                    setImeVisibilityOnFocusedWindowClient(true);
+                } else {
+                    mService.showCurrentInputLocked(windowToken, statsToken,
+                            InputMethodManager.SHOW_IMPLICIT, MotionEvent.TOOL_TYPE_UNKNOWN,
                         null /* resultReceiver */, reason);
+                }
                 break;
             case STATE_SHOW_IME_SNAPSHOT:
                 showImeScreenshot(windowToken, mService.getDisplayIdToShowImeLocked());
@@ -214,4 +233,14 @@
         }
         return false;
     }
+
+    private void setImeVisibilityOnFocusedWindowClient(boolean visibility) {
+        if (mService.mImeBindingState != null
+                && mService.mImeBindingState.mFocusedWindowClient != null
+                && mService.mImeBindingState.mFocusedWindowClient.mClient != null) {
+            mService.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visibility);
+        } else {
+            // TODO(b/329229469): ImeTracker?
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java b/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
index 7251ac4..eada288 100644
--- a/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
+++ b/services/core/java/com/android/server/inputmethod/IInputMethodClientInvoker.java
@@ -250,6 +250,24 @@
     }
 
     @AnyThread
+    void setImeVisibility(boolean visible) {
+        if (mIsProxy) {
+            setImeVisibilityInternal(visible);
+        } else {
+            mHandler.post(() -> setImeVisibilityInternal(visible));
+        }
+    }
+
+    @AnyThread
+    private void setImeVisibilityInternal(boolean visible) {
+        try {
+            mTarget.setImeVisibility(visible);
+        } catch (RemoteException e) {
+            logRemoteException(e);
+        }
+    }
+
+    @AnyThread
     void scheduleStartInputIfNecessary(boolean fullscreen) {
         if (mIsProxy) {
             scheduleStartInputIfNecessaryInternal(fullscreen);
diff --git a/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java b/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java
index cdfde87..9d80844 100644
--- a/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java
+++ b/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java
@@ -47,6 +47,7 @@
 import android.util.proto.ProtoOutputStream;
 import android.view.MotionEvent;
 import android.view.WindowManager;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputMethod;
 import android.view.inputmethod.InputMethodManager;
@@ -424,7 +425,8 @@
 
         switch (softInputVisibility) {
             case WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED:
-                if (state.hasImeFocusChanged() && (!state.hasEditorFocused() || !doAutoShow)) {
+                if (state.hasImeFocusChanged() && (!state.hasEditorFocused() || (!doAutoShow
+                        && !Flags.refactorInsetsController()))) {
                     if (WindowManager.LayoutParams.mayUseInputMethod(state.getWindowFlags())) {
                         // There is no focus view, and this window will
                         // be behind any soft input window, so hide the
@@ -455,14 +457,22 @@
                 }
                 break;
             case WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN:
-                if (isForwardNavigation) {
+                if (Flags.refactorInsetsController()) {
+                    // In this case, we don't have to manipulate the requested visible types of
+                    // the WindowState, as they're already in the correct state
+                    break;
+                } else if (isForwardNavigation) {
                     if (DEBUG) Slog.v(TAG, "Window asks to hide input going forward");
                     return new ImeVisibilityResult(STATE_HIDE_IME_EXPLICIT,
                             SoftInputShowHideReason.HIDE_STATE_HIDDEN_FORWARD_NAV);
                 }
                 break;
             case WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN:
-                if (state.hasImeFocusChanged()) {
+                if (Flags.refactorInsetsController()) {
+                    // In this case, we don't have to manipulate the requested visible types of
+                    // the WindowState, as they're already in the correct state
+                    break;
+                } else if (state.hasImeFocusChanged()) {
                     if (DEBUG) Slog.v(TAG, "Window asks to hide input");
                     return new ImeVisibilityResult(STATE_HIDE_IME_EXPLICIT,
                             SoftInputShowHideReason.HIDE_ALWAYS_HIDDEN_STATE);
@@ -519,6 +529,9 @@
             // 2) SOFT_INPUT_STATE_VISIBLE state without an editor
             // 3) SOFT_INPUT_STATE_ALWAYS_VISIBLE state without an editor
             if (DEBUG) Slog.v(TAG, "Window without editor will hide input");
+            if (Flags.refactorInsetsController()) {
+                state.setRequestedImeVisible(false);
+            }
             return new ImeVisibilityResult(STATE_HIDE_IME_EXPLICIT,
                     SoftInputShowHideReason.HIDE_WINDOW_GAINED_FOCUS_WITHOUT_EDITOR);
         }
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index d22438f..8665a39 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -1120,6 +1120,9 @@
             publishBinderService(Context.INPUT_METHOD_SERVICE,
                     IInputMethodManagerImpl.create(service), false /*allowIsolated*/,
                     DUMP_FLAG_PRIORITY_CRITICAL | DUMP_FLAG_PRIORITY_NORMAL | DUMP_FLAG_PROTO);
+            if (Flags.refactorInsetsController()) {
+                mService.registerImeRequestedChangedListener();
+            }
         }
 
         @Override
@@ -1161,7 +1164,7 @@
             synchronized (ImfLock.class) {
                 mService.mUserDataRepository.getOrCreate(userId);
                 if (mService.mExperimentalConcurrentMultiUserModeEnabled) {
-                    if (mService.mCurrentUserId != userId) {
+                    if (mService.mCurrentUserId != userId && mService.mSystemReady) {
                         mService.experimentalInitializeVisibleBackgroundUserLocked(userId);
                     }
                 }
@@ -1547,10 +1550,31 @@
                 final var unused = SystemServerInitThreadPool.submit(
                         AdditionalSubtypeMapRepository::startWriterThread,
                         "Start AdditionalSubtypeMapRepository's writer thread");
+
+                if (mExperimentalConcurrentMultiUserModeEnabled) {
+                    for (int userId : mUserManagerInternal.getUserIds()) {
+                        if (userId != mCurrentUserId) {
+                            experimentalInitializeVisibleBackgroundUserLocked(userId);
+                        }
+                    }
+                }
             }
         }
     }
 
+    void registerImeRequestedChangedListener() {
+        mWindowManagerInternal.setOnImeRequestedChangedListener(
+                (windowToken, imeVisible) -> {
+                    if (Flags.refactorInsetsController()) {
+                        if (imeVisible) {
+                            showSoftInputInternal(windowToken);
+                        } else {
+                            hideSoftInputInternal(windowToken);
+                        }
+                    }
+                });
+    }
+
     /**
      * Returns true iff the caller is identified to be the current input method with the token.
      *
@@ -1907,6 +1931,7 @@
     }
 
     /**
+     * TODO(b/338404383) Remove
      * Called when {@link #resetCurrentMethodAndClientLocked(int)} invoked for clean-up states
      * before unbinding the current method.
      */
@@ -2002,16 +2027,23 @@
         setEnabledSessionLocked(session);
         session.mMethod.startInput(startInputToken, mCurInputConnection, mCurEditorInfo, restarting,
                 navButtonFlags, mCurImeDispatcher);
-        if (isShowRequestedForCurrentWindow()) {
-            if (DEBUG) Slog.v(TAG, "Attach new input asks to show input");
-            // Re-use current statsToken, if it exists.
-            final var statsToken = mCurStatsToken != null ? mCurStatsToken
+        if (Flags.refactorInsetsController()) {
+            if (isShowRequestedForCurrentWindow() && mImeBindingState != null
+                    && mImeBindingState.mFocusedWindow != null) {
+                showSoftInputInternal(mImeBindingState.mFocusedWindow);
+            }
+        } else {
+            if (isShowRequestedForCurrentWindow()) {
+                if (DEBUG) Slog.v(TAG, "Attach new input asks to show input");
+                // Re-use current statsToken, if it exists.
+                final var statsToken = mCurStatsToken != null ? mCurStatsToken
                     : createStatsTokenForFocusedClient(true /* show */,
                             SoftInputShowHideReason.ATTACH_NEW_INPUT);
-            mCurStatsToken = null;
-            showCurrentInputLocked(mImeBindingState.mFocusedWindow, statsToken,
-                    mVisibilityStateComputer.getShowFlags(), MotionEvent.TOOL_TYPE_UNKNOWN,
-                    null /* resultReceiver */, SoftInputShowHideReason.ATTACH_NEW_INPUT);
+                mCurStatsToken = null;
+                showCurrentInputLocked(mImeBindingState.mFocusedWindow, statsToken,
+                        mVisibilityStateComputer.getShowFlags(), MotionEvent.TOOL_TYPE_UNKNOWN,
+                        null /* resultReceiver */, SoftInputShowHideReason.ATTACH_NEW_INPUT);
+            }
         }
 
         final var curId = bindingController.getCurId();
@@ -2295,10 +2327,12 @@
             @NonNull InputMethodBindingController bindingController, @NonNull ClientState cs) {
         if (bindingController.hasMainConnection()) {
             if (getCurMethodLocked() != null) {
-                // Return to client, and we will get back with it when
-                // we have had a session made for it.
-                requestClientSessionLocked(cs);
-                requestClientSessionForAccessibilityLocked(cs);
+                if (!Flags.useZeroJankProxy()) {
+                    // Return to client, and we will get back with it when
+                    // we have had a session made for it.
+                    requestClientSessionLocked(cs);
+                    requestClientSessionForAccessibilityLocked(cs);
+                }
                 return new InputBindResult(
                         InputBindResult.ResultCode.SUCCESS_WAITING_IME_SESSION,
                         null, null, null,
@@ -2661,25 +2695,27 @@
         final boolean canImeDrawsImeNavBar =
                 mImeDrawsImeNavBarRes != null && mImeDrawsImeNavBarRes.get() && hasNavigationBar;
         final boolean shouldShowImeSwitcherWhenImeIsShown = shouldShowImeSwitcherLocked(
-                InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE);
+                InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE,
+                mCurrentUserId);
         return (canImeDrawsImeNavBar ? InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR : 0)
                 | (shouldShowImeSwitcherWhenImeIsShown
                 ? InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN : 0);
     }
 
     @GuardedBy("ImfLock.class")
-    private boolean shouldShowImeSwitcherLocked(int visibility) {
+    private boolean shouldShowImeSwitcherLocked(int visibility, @UserIdInt int userId) {
         if (!mShowOngoingImeSwitcherForPhones) return false;
         // When the IME switcher dialog is shown, the IME switcher button should be hidden.
+        // TODO(b/305849394): Make mMenuController multi-user aware.
         if (mMenuController.getSwitchingDialogLocked() != null) return false;
         // When we are switching IMEs, the IME switcher button should be hidden.
-        final var bindingController = getInputMethodBindingController(mCurrentUserId);
+        final var bindingController = getInputMethodBindingController(userId);
         if (!Objects.equals(bindingController.getCurId(),
                 bindingController.getSelectedMethodId())) {
             return false;
         }
         if (mWindowManagerInternal.isKeyguardShowingAndNotOccluded()
-                && mWindowManagerInternal.isKeyguardSecure(mCurrentUserId)) {
+                && mWindowManagerInternal.isKeyguardSecure(userId)) {
             return false;
         }
         if ((visibility & InputMethodService.IME_ACTIVE) == 0
@@ -2696,7 +2732,7 @@
             return false;
         }
 
-        final InputMethodSettings settings = InputMethodSettingsRepository.get(mCurrentUserId);
+        final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
         List<InputMethodInfo> imes = settings.getEnabledInputMethodListWithFilter(
                 InputMethodInfo::shouldShowInInputMethodPicker);
         final int numImes = imes.size();
@@ -2811,14 +2847,22 @@
     // Caution! This method is called in this class. Handle multi-user carefully
     @GuardedBy("ImfLock.class")
     private void updateSystemUiLocked(int vis, int backDisposition) {
-        if (getCurTokenLocked() == null) {
+        updateSystemUiLocked(vis, backDisposition, mCurrentUserId);
+    }
+
+    @GuardedBy("ImfLock.class")
+    private void updateSystemUiLocked(int vis, int backDisposition, @UserIdInt int userId) {
+        final var bindingController = getInputMethodBindingController(userId);
+        final var curToken = bindingController.getCurToken();
+        if (curToken == null) {
             return;
         }
+        final int curTokenDisplayId = bindingController.getCurTokenDisplayId();
         if (DEBUG) {
             Slog.d(TAG, "IME window vis: " + vis
                     + " active: " + (vis & InputMethodService.IME_ACTIVE)
                     + " inv: " + (vis & InputMethodService.IME_INVISIBLE)
-                    + " displayId: " + getCurTokenDisplayIdLocked());
+                    + " displayId: " + curTokenDisplayId);
         }
         final IBinder focusedWindowToken = mImeBindingState != null
                 ? mImeBindingState.mFocusedWindow : null;
@@ -2837,17 +2881,18 @@
             } else {
                 vis &= ~InputMethodService.IME_VISIBLE_IMPERCEPTIBLE;
             }
-            final var curId = getInputMethodBindingController(mCurrentUserId).getCurId();
+            final var curId = bindingController.getCurId();
+            // TODO(b/305849394): Make mMenuController multi-user aware.
             if (mMenuController.getSwitchingDialogLocked() != null
-                    || !Objects.equals(curId, getSelectedMethodIdLocked())) {
+                    || !Objects.equals(curId, bindingController.getSelectedMethodId())) {
                 // When the IME switcher dialog is shown, or we are switching IMEs,
                 // the back button should be in the default state (as if the IME is not shown).
                 backDisposition = InputMethodService.BACK_DISPOSITION_ADJUST_NOTHING;
             }
-            final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis);
+            final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis, userId);
             if (mStatusBarManagerInternal != null) {
-                mStatusBarManagerInternal.setImeWindowStatus(getCurTokenDisplayIdLocked(),
-                        getCurTokenLocked(), vis, backDisposition, needsToShowImeSwitcher);
+                mStatusBarManagerInternal.setImeWindowStatus(curTokenDisplayId,
+                        curToken, vis, backDisposition, needsToShowImeSwitcher);
             }
         } finally {
             Binder.restoreCallingIdentity(ident);
@@ -2884,10 +2929,22 @@
      */
     @GuardedBy("ImfLock.class")
     void experimentalInitializeVisibleBackgroundUserLocked(@UserIdInt int userId) {
-        if (!mUserManagerInternal.isUserVisible(userId)) {
-            return;
-        }
         final var settings = InputMethodSettingsRepository.get(userId);
+
+        // Until we figure out what makes most sense, we enable all the pre-installed IMEs in
+        // concurrent multi-user IME mode.
+        String enabledImeIdsStr = settings.getEnabledInputMethodsStr();
+        for (var imi : settings.getMethodList()) {
+            if (!imi.isSystem()) {
+                return;
+            }
+            enabledImeIdsStr = InputMethodUtils.concatEnabledImeIds(enabledImeIdsStr, imi.getId());
+        }
+        if (!TextUtils.equals(settings.getEnabledInputMethodsStr(), enabledImeIdsStr)) {
+            settings.putEnabledInputMethodsStr(enabledImeIdsStr);
+        }
+
+        // Also update the currently-selected IME.
         String id = settings.getSelectedInputMethod();
         if (TextUtils.isEmpty(id)) {
             final InputMethodInfo imi = InputMethodInfoUtils.getMostApplicableDefaultIME(
@@ -2898,8 +2955,6 @@
             id = imi.getId();
             settings.putSelectedInputMethod(id);
         }
-        final var bindingController = getInputMethodBindingController(userId);
-        bindingController.setSelectedMethodId(id);
     }
 
     @GuardedBy("ImfLock.class")
@@ -3107,8 +3162,58 @@
             final long ident = Binder.clearCallingIdentity();
             try {
                 if (DEBUG) Slog.v(TAG, "Client requesting input be shown");
-                return showCurrentInputLocked(windowToken, statsToken, flags, lastClickToolType,
-                        resultReceiver, reason);
+                if (Flags.refactorInsetsController()) {
+                    boolean wasVisible = isInputShownLocked();
+                    if (mImeBindingState != null && mImeBindingState.mFocusedWindowClient != null
+                            && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                        mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(true);
+                        if (resultReceiver != null) {
+                            resultReceiver.send(
+                                    wasVisible ? InputMethodManager.RESULT_UNCHANGED_SHOWN
+                                            : InputMethodManager.RESULT_SHOWN, null);
+                        }
+                        return true;
+                    }
+                    return false;
+                } else {
+                    return showCurrentInputLocked(windowToken, statsToken, flags, lastClickToolType,
+                            resultReceiver, reason);
+                }
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+                Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+            }
+        }
+    }
+
+    boolean showSoftInputInternal(IBinder windowToken) {
+        Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.showSoftInputInternal");
+        ImeTracing.getInstance().triggerManagerServiceDump(
+                "InputMethodManagerService#showSoftInput", mDumper);
+        synchronized (ImfLock.class) {
+            final long ident = Binder.clearCallingIdentity();
+            try {
+                if (DEBUG) Slog.v(TAG, "Client requesting input be shown");
+                return showCurrentInputLocked(windowToken, null /* statsToken */, 0 /* flags */,
+                        0 /* lastClickTooType */, null /* resultReceiver */,
+                        SoftInputShowHideReason.SHOW_SOFT_INPUT);
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+                Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+            }
+        }
+    }
+
+    boolean hideSoftInputInternal(IBinder windowToken) {
+        Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideSoftInputInternal");
+        ImeTracing.getInstance().triggerManagerServiceDump(
+                "InputMethodManagerService#hideSoftInput", mDumper);
+        synchronized (ImfLock.class) {
+            final long ident = Binder.clearCallingIdentity();
+            try {
+                if (DEBUG) Slog.v(TAG, "Client requesting input be hidden");
+                return hideCurrentInputLocked(windowToken, null /* statsToken */, 0 /* flags */,
+                        null /* resultReceiver */, SoftInputShowHideReason.HIDE_SOFT_INPUT);
             } finally {
                 Binder.restoreCallingIdentity(ident);
                 Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
@@ -3474,8 +3579,23 @@
             try {
                 Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideSoftInput");
                 if (DEBUG) Slog.v(TAG, "Client requesting input be hidden");
-                return InputMethodManagerService.this.hideCurrentInputLocked(windowToken,
-                        statsToken, flags, resultReceiver, reason);
+                if (Flags.refactorInsetsController()) {
+                    if (mImeBindingState != null && mImeBindingState.mFocusedWindowClient != null
+                            && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                        boolean wasVisible = isInputShownLocked();
+                        // TODO add windowToken to interface
+                        mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(false);
+                        if (resultReceiver != null) {
+                            resultReceiver.send(wasVisible ? InputMethodManager.RESULT_HIDDEN
+                                    : InputMethodManager.RESULT_UNCHANGED_HIDDEN, null);
+                        }
+                        return true;
+                    }
+                    return false;
+                } else {
+                    return InputMethodManagerService.this.hideCurrentInputLocked(windowToken,
+                            statsToken, flags, resultReceiver, reason);
+                }
             } finally {
                 Binder.restoreCallingIdentity(ident);
                 Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
@@ -4622,8 +4742,18 @@
                         ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
                 final long ident = Binder.clearCallingIdentity();
                 try {
-                    hideCurrentInputLocked(mLastImeTargetWindow, statsToken, flags,
-                            null /* resultReceiver */, reason);
+                    if (Flags.refactorInsetsController()) {
+                        mCurClient.mClient.setImeVisibility(false);
+                        // TODO we will loose the flags here
+                        if (mImeBindingState != null
+                                && mImeBindingState.mFocusedWindowClient != null
+                                && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                            mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(false);
+                        }
+                    } else {
+                        hideCurrentInputLocked(mLastImeTargetWindow, statsToken, flags,
+                                null /* resultReceiver */, reason);
+                    }
                 } finally {
                     Binder.restoreCallingIdentity(ident);
                 }
@@ -4648,8 +4778,18 @@
                         ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
                 final long ident = Binder.clearCallingIdentity();
                 try {
-                    showCurrentInputLocked(mLastImeTargetWindow, statsToken, flags,
-                            MotionEvent.TOOL_TYPE_UNKNOWN, null /* resultReceiver */, reason);
+                    if (Flags.refactorInsetsController()) {
+                        mCurClient.mClient.setImeVisibility(false);
+                        // TODO we will loose the flags here
+                        if (mImeBindingState != null
+                                && mImeBindingState.mFocusedWindowClient != null
+                                && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                            mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(true);
+                        }
+                    } else {
+                        showCurrentInputLocked(mLastImeTargetWindow, statsToken, flags,
+                                MotionEvent.TOOL_TYPE_UNKNOWN, null /* resultReceiver */, reason);
+                    }
                 } finally {
                     Binder.restoreCallingIdentity(ident);
                 }
@@ -4780,8 +4920,17 @@
 
             case MSG_HIDE_ALL_INPUT_METHODS:
                 synchronized (ImfLock.class) {
-                    @SoftInputShowHideReason final int reason = (int) msg.obj;
-                    hideCurrentInputLocked(mImeBindingState.mFocusedWindow, 0 /* flags */, reason);
+                    if (Flags.refactorInsetsController()) {
+                        if (mImeBindingState != null
+                                && mImeBindingState.mFocusedWindowClient != null
+                                && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                            mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(false);
+                        }
+                    } else {
+                        @SoftInputShowHideReason final int reason = (int) msg.obj;
+                        hideCurrentInputLocked(mImeBindingState.mFocusedWindow, 0 /* flags */,
+                                reason);
+                    }
                 }
                 return true;
             case MSG_REMOVE_IME_SURFACE: {
@@ -6446,8 +6595,19 @@
                     final List<InputMethodInfo> nextEnabledImes;
                     final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
                     if (userId == mCurrentUserId) {
-                        hideCurrentInputLocked(mImeBindingState.mFocusedWindow, 0 /* flags */,
-                                SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND);
+                        if (Flags.refactorInsetsController()) {
+                            if (mImeBindingState != null
+                                    && mImeBindingState.mFocusedWindowClient != null
+                                    && mImeBindingState.mFocusedWindowClient.mClient != null) {
+                                mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(
+                                        false);
+                            } else {
+                                // TODO(b329229469): ImeTracker?
+                            }
+                        } else {
+                            hideCurrentInputLocked(mImeBindingState.mFocusedWindow, 0 /* flags */,
+                                    SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND);
+                        }
                         final var bindingController = getInputMethodBindingController(userId);
                         bindingController.unbindCurrentMethod();
 
diff --git a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
index 189c1a7..757c07c 100644
--- a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
+++ b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
@@ -248,6 +248,17 @@
                     unverifiedTargetSdkVersion,
                     userId, imeDispatcher);
             sendOnStartInputResult(client, result, startInputSeq);
+            // For first-time client bind, MSG_BIND should arrive after MSG_START_INPUT_RESULT.
+            if (result.result == InputBindResult.ResultCode.SUCCESS_WAITING_IME_SESSION) {
+                InputMethodManagerService imms = ((InputMethodManagerService) mInner);
+                synchronized (ImfLock.class) {
+                    ClientState cs = imms.getClientStateLocked(client);
+                    if (cs != null) {
+                        imms.requestClientSessionLocked(cs);
+                        imms.requestClientSessionForAccessibilityLocked(cs);
+                    }
+                }
+            }
         });
     }
 
diff --git a/services/core/java/com/android/server/locales/OWNERS b/services/core/java/com/android/server/locales/OWNERS
index e1e946b..7e35dac 100644
--- a/services/core/java/com/android/server/locales/OWNERS
+++ b/services/core/java/com/android/server/locales/OWNERS
@@ -1,5 +1,4 @@
 roosa@google.com
-pratyushmore@google.com
 goldmanj@google.com
 ankitavyas@google.com
 allenwtsu@google.com
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java
index 0ca4808..363a4a7 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java
@@ -1161,7 +1161,7 @@
 
     @Override
     public String toString() {
-        StringBuilder out = new StringBuilder("[ContextHubClient ");
+        StringBuilder out = new StringBuilder();
         out.append("endpointID: ").append(getHostEndPointId()).append(", ");
         out.append("contextHub: ").append(getAttachedContextHubId()).append(", ");
         if (mAttributionTag != null) {
@@ -1170,25 +1170,26 @@
         if (mPendingIntentRequest.isValid()) {
             out.append("intentCreatorPackage: ").append(mPackage).append(", ");
             out.append("nanoAppId: 0x")
-                    .append(Long.toHexString(mPendingIntentRequest.getNanoAppId()));
+                    .append(Long.toHexString(mPendingIntentRequest.getNanoAppId()))
+                    .append(", ");
         } else {
-            out.append("package: ").append(mPackage);
+            out.append("package: ").append(mPackage).append(", ");
         }
         if (mMessageChannelNanoappIdMap.size() > 0) {
-            out.append(" messageChannelNanoappSet: (");
+            out.append("messageChannelNanoappSet: (");
             Iterator<Map.Entry<Long, Integer>> it =
                     mMessageChannelNanoappIdMap.entrySet().iterator();
             while (it.hasNext()) {
                 Map.Entry<Long, Integer> entry = it.next();
-                out.append("0x")
+                out.append("Nanoapp 0x")
                         .append(Long.toHexString(entry.getKey()))
-                        .append(" auth state: ")
+                        .append(": Auth state: ")
                         .append(authStateToString(entry.getValue()));
                 if (it.hasNext()) {
-                    out.append(",");
+                    out.append(", ");
                 }
             }
-            out.append(")");
+            out.append(")").append(", ");
         }
         synchronized (mWakeLock) {
             out.append("wakelock: ").append(mWakeLock);
diff --git a/services/core/java/com/android/server/locksettings/BiometricDeferredQueue.java b/services/core/java/com/android/server/locksettings/BiometricDeferredQueue.java
index f572845..966be53 100644
--- a/services/core/java/com/android/server/locksettings/BiometricDeferredQueue.java
+++ b/services/core/java/com/android/server/locksettings/BiometricDeferredQueue.java
@@ -32,6 +32,7 @@
 import android.util.Slog;
 
 import com.android.internal.widget.VerifyCredentialResponse;
+import com.android.server.biometrics.BiometricHandlerProvider;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -132,9 +133,11 @@
         mFaceResetLockoutTask = null;
     };
 
-    BiometricDeferredQueue(@NonNull SyntheticPasswordManager spManager, @NonNull Handler handler) {
+    BiometricDeferredQueue(@NonNull SyntheticPasswordManager spManager) {
         mSpManager = spManager;
-        mHandler = handler;
+
+        //Using a higher priority thread to avoid any delays and interruption of clients
+        mHandler = BiometricHandlerProvider.getInstance().getBiometricCallbackHandler();
         mPendingResetLockoutsForFingerprint = new ArrayList<>();
         mPendingResetLockoutsForFace = new ArrayList<>();
         mPendingResetLockouts = new ArrayList<>();
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index ae3d36a..22b33dd 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -687,7 +687,7 @@
 
         mSpManager = injector.getSyntheticPasswordManager(mStorage);
         mUnifiedProfilePasswordCache = injector.getUnifiedProfilePasswordCache(mKeyStore);
-        mBiometricDeferredQueue = new BiometricDeferredQueue(mSpManager, mHandler);
+        mBiometricDeferredQueue = new BiometricDeferredQueue(mSpManager);
 
         mRebootEscrowManager = injector.getRebootEscrowManager(new RebootEscrowCallbacks(),
                 mStorage);
diff --git a/services/core/java/com/android/server/media/MediaRoute2Provider.java b/services/core/java/com/android/server/media/MediaRoute2Provider.java
index 09605fe..b0fa523 100644
--- a/services/core/java/com/android/server/media/MediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/MediaRoute2Provider.java
@@ -22,6 +22,7 @@
 import android.media.MediaRoute2Info;
 import android.media.MediaRoute2ProviderInfo;
 import android.media.MediaRouter2;
+import android.media.MediaRouter2Utils;
 import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.os.Bundle;
@@ -226,8 +227,23 @@
             return route2Info != null && mTargetOriginalRouteId.equals(route2Info.getOriginalId());
         }
 
-        public boolean isTargetRouteIdInList(@NonNull List<String> routeOriginalIdList) {
-            return routeOriginalIdList.stream().anyMatch(mTargetOriginalRouteId::equals);
+        /**
+         * Returns whether the given list of {@link MediaRoute2Info#getOriginalId() original ids}
+         * contains the {@link #mTargetOriginalRouteId target route id}.
+         */
+        public boolean isTargetRouteIdInRouteOriginalIdList(
+                @NonNull List<String> originalRouteIdList) {
+            return originalRouteIdList.stream().anyMatch(mTargetOriginalRouteId::equals);
+        }
+
+        /**
+         * Returns whether the given list of {@link MediaRoute2Info#getId() unique ids} contains the
+         * {@link #mTargetOriginalRouteId target route id}.
+         */
+        public boolean isTargetRouteIdInRouteUniqueIdList(@NonNull List<String> uniqueRouteIdList) {
+            return uniqueRouteIdList.stream()
+                    .map(MediaRouter2Utils::getOriginalId)
+                    .anyMatch(mTargetOriginalRouteId::equals);
         }
     }
 }
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
index 71cbcb9..d5e85da 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
@@ -21,6 +21,7 @@
 import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -41,6 +42,7 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
+import android.util.LongSparseArray;
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
@@ -49,7 +51,9 @@
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 
@@ -77,7 +81,16 @@
     private boolean mLastDiscoveryPreferenceIncludesThisPackage = false;
 
     @GuardedBy("mLock")
-    final List<RoutingSessionInfo> mReleasingSessions = new ArrayList<>();
+    private final List<RoutingSessionInfo> mReleasingSessions = new ArrayList<>();
+
+    // We keep pending requests for transfers and sessions creation separately because transfers
+    // don't have an associated request id and session creations don't have a session id.
+    @GuardedBy("mLock")
+    private final LongSparseArray<SessionCreationOrTransferRequest>
+            mRequestIdToSessionCreationRequest;
+
+    @GuardedBy("mLock")
+    private final Map<String, SessionCreationOrTransferRequest> mSessionOriginalIdToTransferRequest;
 
     MediaRoute2ProviderServiceProxy(
             @NonNull Context context,
@@ -87,6 +100,8 @@
             int userId) {
         super(componentName);
         mContext = Objects.requireNonNull(context, "Context must not be null.");
+        mRequestIdToSessionCreationRequest = new LongSparseArray<>();
+        mSessionOriginalIdToTransferRequest = new HashMap<>();
         mIsSelfScanOnlyProvider = isSelfScanOnlyProvider;
         mUserId = userId;
         mHandler = new Handler(looper);
@@ -109,6 +124,18 @@
             @NonNull UserHandle transferInitiatorUserHandle,
             @NonNull String transferInitiatorPackageName) {
         if (mConnectionReady) {
+            if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+                synchronized (mLock) {
+                    mRequestIdToSessionCreationRequest.put(
+                            requestId,
+                            new SessionCreationOrTransferRequest(
+                                    requestId,
+                                    routeOriginalId,
+                                    transferReason,
+                                    transferInitiatorUserHandle,
+                                    transferInitiatorPackageName));
+                }
+            }
             mActiveConnection.requestCreateSession(
                     requestId, packageName, routeOriginalId, sessionHints);
             updateBinding();
@@ -118,6 +145,11 @@
     @Override
     public void releaseSession(long requestId, String sessionId) {
         if (mConnectionReady) {
+            if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+                synchronized (mLock) {
+                    mSessionOriginalIdToTransferRequest.remove(sessionId);
+                }
+            }
             mActiveConnection.releaseSession(requestId, sessionId);
             updateBinding();
         }
@@ -158,6 +190,18 @@
             String routeOriginalId,
             @RoutingSessionInfo.TransferReason int transferReason) {
         if (mConnectionReady) {
+            if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+                synchronized (mLock) {
+                    mSessionOriginalIdToTransferRequest.put(
+                            sessionOriginalId,
+                            new SessionCreationOrTransferRequest(
+                                    requestId,
+                                    routeOriginalId,
+                                    transferReason,
+                                    transferInitiatorUserHandle,
+                                    transferInitiatorPackageName));
+                }
+            }
             mActiveConnection.transferToRoute(requestId, sessionOriginalId, routeOriginalId);
         }
     }
@@ -384,6 +428,11 @@
         String newSessionId = newSession.getId();
 
         synchronized (mLock) {
+            if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+                newSession =
+                        createSessionWithPopulatedTransferInitiationDataLocked(
+                                requestId, /* oldSessionInfo= */ null, newSession);
+            }
             if (mSessionInfos.stream()
                     .anyMatch(session -> TextUtils.equals(session.getId(), newSessionId))
                     || mReleasingSessions.stream()
@@ -397,6 +446,7 @@
         mCallback.onSessionCreated(this, requestId, newSession);
     }
 
+    @GuardedBy("mLock")
     private int findSessionByIdLocked(RoutingSessionInfo session) {
         for (int i = 0; i < mSessionInfos.size(); i++) {
             if (TextUtils.equals(mSessionInfos.get(i).getId(), session.getId())) {
@@ -417,7 +467,6 @@
             for (RoutingSessionInfo session : sessions) {
                 if (session == null) continue;
                 session = assignProviderIdForSession(session);
-
                 int sourceIndex = findSessionByIdLocked(session);
                 if (sourceIndex < 0) {
                     mSessionInfos.add(targetIndex++, session);
@@ -425,6 +474,12 @@
                 } else if (sourceIndex < targetIndex) {
                     Slog.w(TAG, "Ignoring duplicate session ID: " + session.getId());
                 } else {
+                    if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+                        RoutingSessionInfo oldSessionInfo = mSessionInfos.get(sourceIndex);
+                        session =
+                                createSessionWithPopulatedTransferInitiationDataLocked(
+                                        REQUEST_ID_NONE, oldSessionInfo, session);
+                    }
                     mSessionInfos.set(sourceIndex, session);
                     Collections.swap(mSessionInfos, sourceIndex, targetIndex++);
                     dispatchSessionUpdated(session);
@@ -432,11 +487,65 @@
             }
             for (int i = mSessionInfos.size() - 1; i >= targetIndex; i--) {
                 RoutingSessionInfo releasedSession = mSessionInfos.remove(i);
+                mSessionOriginalIdToTransferRequest.remove(releasedSession.getId());
                 dispatchSessionReleased(releasedSession);
             }
         }
     }
 
+    /**
+     * Returns a {@link RoutingSessionInfo} with transfer initiation data from the given {@code
+     * oldSessionInfo}, and any pending transfer or session creation requests.
+     */
+    @GuardedBy("mLock")
+    private RoutingSessionInfo createSessionWithPopulatedTransferInitiationDataLocked(
+            long requestId,
+            @Nullable RoutingSessionInfo oldSessionInfo,
+            @NonNull RoutingSessionInfo newSessionInfo) {
+        SessionCreationOrTransferRequest pendingRequest =
+                oldSessionInfo != null
+                        ? mSessionOriginalIdToTransferRequest.get(newSessionInfo.getOriginalId())
+                        : mRequestIdToSessionCreationRequest.get(requestId);
+        boolean pendingTargetRouteInSelectedRoutes =
+                pendingRequest != null
+                        && pendingRequest.isTargetRouteIdInRouteUniqueIdList(
+                                newSessionInfo.getSelectedRoutes());
+        boolean pendingTargetRouteInTransferableRoutes =
+                pendingRequest != null
+                        && pendingRequest.isTargetRouteIdInRouteUniqueIdList(
+                                newSessionInfo.getTransferableRoutes());
+
+        int transferReason;
+        UserHandle transferInitiatorUserHandle;
+        String transferInitiatorPackageName;
+        if (pendingTargetRouteInSelectedRoutes) { // The pending request has been satisfied.
+            transferReason = pendingRequest.mTransferReason;
+            transferInitiatorUserHandle = pendingRequest.mTransferInitiatorUserHandle;
+            transferInitiatorPackageName = pendingRequest.mTransferInitiatorPackageName;
+        } else if (oldSessionInfo != null) {
+            // No pending request, we copy the values from the old session object.
+            transferReason = oldSessionInfo.getTransferReason();
+            transferInitiatorUserHandle = oldSessionInfo.getTransferInitiatorUserHandle();
+            transferInitiatorPackageName = oldSessionInfo.getTransferInitiatorPackageName();
+        } else { // There's a new session with no associated creation request, we use defaults.
+            transferReason = RoutingSessionInfo.TRANSFER_REASON_FALLBACK;
+            transferInitiatorUserHandle = UserHandle.of(mUserId);
+            transferInitiatorPackageName = newSessionInfo.getClientPackageName();
+        }
+        if (pendingTargetRouteInSelectedRoutes || !pendingTargetRouteInTransferableRoutes) {
+            // The pending request has been satisfied, or the target route is no longer available.
+            if (oldSessionInfo != null) {
+                mSessionOriginalIdToTransferRequest.remove(newSessionInfo.getId());
+            } else if (pendingRequest != null) {
+                mRequestIdToSessionCreationRequest.remove(pendingRequest.mRequestId);
+            }
+        }
+        return new RoutingSessionInfo.Builder(newSessionInfo)
+                .setTransferInitiator(transferInitiatorUserHandle, transferInitiatorPackageName)
+                .setTransferReason(transferReason)
+                .build();
+    }
+
     private void onSessionReleased(Connection connection, RoutingSessionInfo releasedSession) {
         if (mActiveConnection != connection) {
             return;
@@ -450,6 +559,7 @@
 
         boolean found = false;
         synchronized (mLock) {
+            mSessionOriginalIdToTransferRequest.remove(releasedSession.getId());
             for (RoutingSessionInfo session : mSessionInfos) {
                 if (TextUtils.equals(session.getId(), releasedSession.getId())) {
                     mSessionInfos.remove(session);
@@ -498,6 +608,11 @@
     }
 
     private void onRequestFailed(Connection connection, long requestId, int reason) {
+        if (Flags.enableBuiltInSpeakerRouteSuitabilityStatuses()) {
+            synchronized (mLock) {
+                mRequestIdToSessionCreationRequest.remove(requestId);
+            }
+        }
         if (mActiveConnection != connection) {
             return;
         }
@@ -522,18 +637,29 @@
                 }
                 mSessionInfos.clear();
                 mReleasingSessions.clear();
+                mRequestIdToSessionCreationRequest.clear();
+                mSessionOriginalIdToTransferRequest.clear();
             }
         }
     }
 
     @Override
     protected String getDebugString() {
+        int pendingSessionCreationCount;
+        int pendingTransferCount;
+        synchronized (mLock) {
+            pendingSessionCreationCount = mRequestIdToSessionCreationRequest.size();
+            pendingTransferCount = mSessionOriginalIdToTransferRequest.size();
+        }
         return TextUtils.formatSimple(
-                "ProviderServiceProxy - package: %s, bound: %b, connection (active:%b, ready:%b)",
+                "ProviderServiceProxy - package: %s, bound: %b, connection (active:%b, ready:%b), "
+                        + "pending (session creations: %d, transfers: %d)",
                 mComponentName.getPackageName(),
                 mBound,
                 mActiveConnection != null,
-                mConnectionReady);
+                mConnectionReady,
+                pendingSessionCreationCount,
+                pendingTransferCount);
     }
 
     private final class Connection implements DeathRecipient {
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index c03497e..ba7d3b8 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -70,6 +70,7 @@
 import com.android.media.flags.Flags;
 import com.android.server.LocalServices;
 import com.android.server.pm.UserManagerInternal;
+import com.android.server.statusbar.StatusBarManagerInternal;
 
 import java.io.PrintWriter;
 import java.lang.ref.WeakReference;
@@ -118,6 +119,7 @@
     private final UserManagerInternal mUserManagerInternal;
     private final Object mLock = new Object();
     private final AppOpsManager mAppOpsManager;
+    private final StatusBarManagerInternal mStatusBarManagerInternal;
     final AtomicInteger mNextRouterOrManagerId = new AtomicInteger(1);
     final ActivityManager mActivityManager;
     final PowerManager mPowerManager;
@@ -188,6 +190,7 @@
         mPowerManager = mContext.getSystemService(PowerManager.class);
         mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
         mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
+        mStatusBarManagerInternal = LocalServices.getService(StatusBarManagerInternal.class);
 
         IntentFilter screenOnOffIntentFilter = new IntentFilter();
         screenOnOffIntentFilter.addAction(ACTION_SCREEN_ON);
@@ -260,6 +263,17 @@
         }
     }
 
+    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
+    public boolean showMediaOutputSwitcherWithRouter2(@NonNull String packageName) {
+        UserHandle userHandle = Binder.getCallingUserHandle();
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return showOutputSwitcher(packageName, userHandle);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
     public void registerRouter2(@NonNull IMediaRouter2 router, @NonNull String packageName) {
         Objects.requireNonNull(router, "router must not be null");
         if (TextUtils.isEmpty(packageName)) {
@@ -778,6 +792,31 @@
         }
     }
 
+    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
+    public boolean showMediaOutputSwitcherWithProxyRouter(
+            @NonNull IMediaRouter2Manager proxyRouter) {
+        Objects.requireNonNull(proxyRouter, "Proxy router must not be null");
+
+        final long token = Binder.clearCallingIdentity();
+        try {
+            synchronized (mLock) {
+                final IBinder binder = proxyRouter.asBinder();
+                ManagerRecord proxyRouterRecord = mAllManagerRecords.get(binder);
+
+                if (proxyRouterRecord.mTargetPackageName == null) {
+                    throw new UnsupportedOperationException(
+                            "Only proxy routers can show the Output Switcher.");
+                }
+
+                return showOutputSwitcher(
+                        proxyRouterRecord.mTargetPackageName,
+                        UserHandle.of(proxyRouterRecord.mUserRecord.mUserId));
+            }
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
     // End of methods that implement MediaRouter2Manager operations.
 
     // Start of methods that implements operations for both MediaRouter2 and MediaRouter2Manager.
@@ -934,6 +973,19 @@
         }
     }
 
+    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
+    private boolean showOutputSwitcher(
+            @NonNull String packageName, @NonNull UserHandle userHandle) {
+        if (mActivityManager.getPackageImportance(packageName) > IMPORTANCE_FOREGROUND) {
+            Slog.w(TAG, "showMediaOutputSwitcher only works when called from foreground");
+            return false;
+        }
+        synchronized (mLock) {
+            mStatusBarManagerInternal.showMediaOutputSwitcher(packageName, userHandle);
+        }
+        return true;
+    }
+
     // End of methods that implements operations for both MediaRouter2 and MediaRouter2Manager.
 
     public void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index 192ac62..1188a07 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -16,7 +16,6 @@
 
 package com.android.server.media;
 
-import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
 
 import android.Manifest;
 import android.annotation.NonNull;
@@ -75,7 +74,6 @@
 import com.android.server.LocalServices;
 import com.android.server.Watchdog;
 import com.android.server.pm.UserManagerInternal;
-import com.android.server.statusbar.StatusBarManagerInternal;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -266,32 +264,6 @@
 
     // Binder call
     @Override
-    public boolean showMediaOutputSwitcher(String packageName) {
-        int uid = Binder.getCallingUid();
-        if (!validatePackageName(uid, packageName)) {
-            throw new SecurityException("packageName must match the calling identity");
-        }
-        UserHandle userHandle = UserHandle.getUserHandleForUid(uid);
-        final long token = Binder.clearCallingIdentity();
-        try {
-            if (mContext.getSystemService(ActivityManager.class).getPackageImportance(packageName)
-                    > IMPORTANCE_FOREGROUND) {
-                Slog.w(TAG, "showMediaOutputSwitcher only works when called from foreground");
-                return false;
-            }
-            synchronized (mLock) {
-                StatusBarManagerInternal statusBar =
-                        LocalServices.getService(StatusBarManagerInternal.class);
-                statusBar.showMediaOutputSwitcher(packageName, userHandle);
-            }
-        } finally {
-            Binder.restoreCallingIdentity(token);
-        }
-        return true;
-    }
-
-    // Binder call
-    @Override
     public MediaRouterClientState getState(IMediaRouterClient client) {
         final long token = Binder.clearCallingIdentity();
         try {
@@ -443,6 +415,17 @@
     }
 
     // Binder call
+    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
+    @Override
+    public boolean showMediaOutputSwitcherWithRouter2(@NonNull String packageName) {
+        int uid = Binder.getCallingUid();
+        if (!validatePackageName(uid, packageName)) {
+            throw new SecurityException("packageName must match the calling identity");
+        }
+        return mService2.showMediaOutputSwitcherWithRouter2(packageName);
+    }
+
+    // Binder call
     @Override
     public void registerRouter2(IMediaRouter2 router, String packageName) {
         final int uid = Binder.getCallingUid();
@@ -676,6 +659,13 @@
         mService2.releaseSessionWithManager(manager, requestId, sessionId);
     }
 
+    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
+    @Override
+    public boolean showMediaOutputSwitcherWithProxyRouter(
+            @NonNull IMediaRouter2Manager proxyRouter) {
+        return mService2.showMediaOutputSwitcherWithProxyRouter(proxyRouter);
+    }
+
     void restoreBluetoothA2dp() {
         try {
             boolean a2dpOn;
diff --git a/services/core/java/com/android/server/media/MediaSession2Record.java b/services/core/java/com/android/server/media/MediaSession2Record.java
index dfb2b0a..89555a9 100644
--- a/services/core/java/com/android/server/media/MediaSession2Record.java
+++ b/services/core/java/com/android/server/media/MediaSession2Record.java
@@ -67,7 +67,6 @@
         // The lock is required to prevent `Controller2Callback` from using partially initialized
         // `MediaSession2Record.this`.
         synchronized (mLock) {
-            mUniqueId = sNextMediaSessionRecordId.getAndIncrement();
             mSessionToken = sessionToken;
             mService = service;
             mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper));
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 69f07d5..0a9109b 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -81,6 +81,8 @@
 import android.util.Slog;
 import android.view.KeyEvent;
 
+import com.android.internal.annotations.GuardedBy;
+import com.android.media.flags.Flags;
 import com.android.server.LocalServices;
 import com.android.server.uri.UriGrantsManagerInternal;
 
@@ -229,6 +231,14 @@
 
     private int mPolicies;
 
+    private final Runnable mUserEngagementTimeoutExpirationRunnable =
+            () -> {
+                synchronized (mLock) {
+                    updateUserEngagedStateIfNeededLocked(/* isTimeoutExpired= */ true);
+                }
+            };
+
+    @GuardedBy("mLock")
     private @UserEngagementState int mUserEngagementState = USER_DISENGAGED;
 
     @IntDef({USER_PERMANENTLY_ENGAGED, USER_TEMPORARY_ENGAGED, USER_DISENGAGED})
@@ -238,26 +248,26 @@
     /**
      * Indicates that the session is active and in one of the user engaged states.
      *
-     * @see #updateUserEngagedStateIfNeededLocked(boolean) ()
+     * @see #updateUserEngagedStateIfNeededLocked(boolean)
      */
     private static final int USER_PERMANENTLY_ENGAGED = 0;
 
     /**
      * Indicates that the session is active and in {@link PlaybackState#STATE_PAUSED} state.
      *
-     * @see #updateUserEngagedStateIfNeededLocked(boolean) ()
+     * @see #updateUserEngagedStateIfNeededLocked(boolean)
      */
     private static final int USER_TEMPORARY_ENGAGED = 1;
 
     /**
      * Indicates that the session is either not active or in one of the user disengaged states
      *
-     * @see #updateUserEngagedStateIfNeededLocked(boolean) ()
+     * @see #updateUserEngagedStateIfNeededLocked(boolean)
      */
     private static final int USER_DISENGAGED = 2;
 
     /**
-     * Indicates the duration of the temporary engaged states.
+     * Indicates the duration of the temporary engaged states, in milliseconds.
      *
      * <p>Some {@link MediaSession} states like {@link PlaybackState#STATE_PAUSED} are temporarily
      * engaged, meaning the corresponding session is only considered in an engaged state for the
@@ -270,7 +280,7 @@
      * user-engaged state is not considered user-engaged when transitioning from a non-user engaged
      * state {@link PlaybackState#STATE_STOPPED}.
      */
-    private static final int TEMP_USER_ENGAGED_TIMEOUT = 600000;
+    private static final int TEMP_USER_ENGAGED_TIMEOUT_MS = 600000;
 
     public MediaSessionRecord(
             int ownerPid,
@@ -284,7 +294,6 @@
             Looper handlerLooper,
             int policies)
             throws RemoteException {
-        mUniqueId = sNextMediaSessionRecordId.getAndIncrement();
         mOwnerPid = ownerPid;
         mOwnerUid = ownerUid;
         mUserId = userId;
@@ -609,8 +618,7 @@
 
     @Override
     public void expireTempEngaged() {
-        mHandler.removeCallbacks(mHandleTempEngagedSessionTimeout);
-        updateUserEngagedStateIfNeededLocked(/* isTimeoutExpired= */ true);
+        mHandler.post(mUserEngagementTimeoutExpirationRunnable);
     }
 
     /**
@@ -1086,11 +1094,6 @@
                 }
             };
 
-    private final Runnable mHandleTempEngagedSessionTimeout =
-            () -> {
-                updateUserEngagedStateIfNeededLocked(/* isTimeoutExpired= */ true);
-            };
-
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     private static boolean componentNameExists(
             @NonNull ComponentName componentName, @NonNull Context context, int userId) {
@@ -1107,10 +1110,14 @@
         return !resolveInfos.isEmpty();
     }
 
+    @GuardedBy("mLock")
     private void updateUserEngagedStateIfNeededLocked(boolean isTimeoutExpired) {
+        if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) {
+            return;
+        }
         int oldUserEngagedState = mUserEngagementState;
         int newUserEngagedState;
-        if (!isActive() || mPlaybackState == null) {
+        if (!isActive() || mPlaybackState == null || mDestroyed) {
             newUserEngagedState = USER_DISENGAGED;
         } else if (isActive() && mPlaybackState.isActive()) {
             newUserEngagedState = USER_PERMANENTLY_ENGAGED;
@@ -1126,18 +1133,22 @@
             return;
         }
 
+        mUserEngagementState = newUserEngagedState;
         if (newUserEngagedState == USER_TEMPORARY_ENGAGED) {
-            mHandler.postDelayed(mHandleTempEngagedSessionTimeout, TEMP_USER_ENGAGED_TIMEOUT);
-        } else if (oldUserEngagedState == USER_TEMPORARY_ENGAGED) {
-            mHandler.removeCallbacks(mHandleTempEngagedSessionTimeout);
+            mHandler.postDelayed(
+                    mUserEngagementTimeoutExpirationRunnable, TEMP_USER_ENGAGED_TIMEOUT_MS);
+        } else {
+            mHandler.removeCallbacks(mUserEngagementTimeoutExpirationRunnable);
         }
 
         boolean wasUserEngaged = oldUserEngagedState != USER_DISENGAGED;
         boolean isNowUserEngaged = newUserEngagedState != USER_DISENGAGED;
-        mUserEngagementState = newUserEngagedState;
         if (wasUserEngaged != isNowUserEngaged) {
-            mService.onSessionUserEngagementStateChange(
-                    /* mediaSessionRecord= */ this, /* isUserEngaged= */ isNowUserEngaged);
+            mHandler.post(
+                    () ->
+                            mService.onSessionUserEngagementStateChange(
+                                    /* mediaSessionRecord= */ this,
+                                    /* isUserEngaged= */ isNowUserEngaged));
         }
     }
 
diff --git a/services/core/java/com/android/server/media/MediaSessionRecordImpl.java b/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
index b57b148..15f90d4 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
@@ -34,8 +34,12 @@
  */
 public abstract class MediaSessionRecordImpl {
 
-    static final AtomicInteger sNextMediaSessionRecordId = new AtomicInteger(1);
-    int mUniqueId;
+    private static final AtomicInteger sNextMediaSessionRecordId = new AtomicInteger(1);
+    private final int mUniqueId;
+
+    protected MediaSessionRecordImpl() {
+        mUniqueId = sNextMediaSessionRecordId.getAndIncrement();
+    }
 
     /**
      * Get the info for this session.
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 3998667..1ebc856 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -197,6 +197,16 @@
     @GuardedBy("mLock")
     private final Map<Integer, Set<Notification>> mMediaNotifications = new HashMap<>();
 
+    /**
+     * Holds all {@link MediaSessionRecordImpl} which we've reported as being {@link
+     * ActivityManagerInternal#startForegroundServiceDelegate user engaged}.
+     *
+     * <p>This map simply prevents invoking {@link
+     * ActivityManagerInternal#startForegroundServiceDelegate} more than once per session.
+     */
+    @GuardedBy("mLock")
+    private final Set<MediaSessionRecordImpl> mFgsAllowedMediaSessionRecords = new HashSet<>();
+
     // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile)
     // It's always not null after the MediaSessionService is started.
     private FullUserRecord mCurrentFullUserRecord;
@@ -704,17 +714,31 @@
             int uid = mediaSessionRecord.getUid();
             for (Notification mediaNotification : mMediaNotifications.getOrDefault(uid, Set.of())) {
                 if (mediaSessionRecord.isLinkedToNotification(mediaNotification)) {
-                    startFgsDelegate(mediaSessionRecord.getForegroundServiceDelegationOptions());
+                    startFgsDelegateLocked(mediaSessionRecord);
                     return;
                 }
             }
         }
     }
 
-    private void startFgsDelegate(
-            ForegroundServiceDelegationOptions foregroundServiceDelegationOptions) {
+    @GuardedBy("mLock")
+    private void startFgsDelegateLocked(MediaSessionRecordImpl mediaSessionRecord) {
+        ForegroundServiceDelegationOptions foregroundServiceDelegationOptions =
+                mediaSessionRecord.getForegroundServiceDelegationOptions();
+        if (foregroundServiceDelegationOptions == null) {
+            return; // This record doesn't support FGS. Typically a MediaSession2 record.
+        }
+        if (!mFgsAllowedMediaSessionRecords.add(mediaSessionRecord)) {
+            return; // This record is already FGS-started.
+        }
         final long token = Binder.clearCallingIdentity();
         try {
+            Log.i(
+                    TAG,
+                    TextUtils.formatSimple(
+                            "startFgsDelegate: pkg=%s uid=%d",
+                            foregroundServiceDelegationOptions.mClientPackageName,
+                            foregroundServiceDelegationOptions.mClientUid));
             mActivityManagerInternal.startForegroundServiceDelegate(
                     foregroundServiceDelegationOptions, /* connection= */ null);
         } finally {
@@ -748,14 +772,29 @@
                 }
             }
 
-            stopFgsDelegate(foregroundServiceDelegationOptions);
+            stopFgsDelegateLocked(mediaSessionRecord);
         }
     }
 
-    private void stopFgsDelegate(
-            ForegroundServiceDelegationOptions foregroundServiceDelegationOptions) {
+    @GuardedBy("mLock")
+    private void stopFgsDelegateLocked(MediaSessionRecordImpl mediaSessionRecord) {
+        ForegroundServiceDelegationOptions foregroundServiceDelegationOptions =
+                mediaSessionRecord.getForegroundServiceDelegationOptions();
+        if (foregroundServiceDelegationOptions == null) {
+            return; // This record doesn't support FGS. Typically a MediaSession2 record.
+        }
+        if (!mFgsAllowedMediaSessionRecords.remove(mediaSessionRecord)) {
+            return; // This record is not FGS-started. No need to stop it.
+        }
+
         final long token = Binder.clearCallingIdentity();
         try {
+            Log.i(
+                    TAG,
+                    TextUtils.formatSimple(
+                            "stopFgsDelegate: pkg=%s uid=%d",
+                            foregroundServiceDelegationOptions.mClientPackageName,
+                            foregroundServiceDelegationOptions.mClientUid));
             mActivityManagerInternal.stopForegroundServiceDelegate(
                     foregroundServiceDelegationOptions);
         } finally {
@@ -2679,6 +2718,9 @@
 
         @Override
         public void expireTempEngagedSessions() {
+            if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) {
+                return;
+            }
             synchronized (mLock) {
                 for (Set<MediaSessionRecordImpl> uidSessions :
                         mUserEngagedSessionsForFgs.values()) {
@@ -3194,11 +3236,8 @@
                 mMediaNotifications.get(uid).add(postedNotification);
                 for (MediaSessionRecordImpl mediaSessionRecord :
                         mUserEngagedSessionsForFgs.getOrDefault(uid, Set.of())) {
-                    ForegroundServiceDelegationOptions foregroundServiceDelegationOptions =
-                            mediaSessionRecord.getForegroundServiceDelegationOptions();
-                    if (foregroundServiceDelegationOptions != null
-                            && mediaSessionRecord.isLinkedToNotification(postedNotification)) {
-                        startFgsDelegate(foregroundServiceDelegationOptions);
+                    if (mediaSessionRecord.isLinkedToNotification(postedNotification)) {
+                        startFgsDelegateLocked(mediaSessionRecord);
                         return;
                     }
                 }
diff --git a/services/core/java/com/android/server/media/MediaShellCommand.java b/services/core/java/com/android/server/media/MediaShellCommand.java
index bea71dc..19f16cc 100644
--- a/services/core/java/com/android/server/media/MediaShellCommand.java
+++ b/services/core/java/com/android/server/media/MediaShellCommand.java
@@ -113,6 +113,7 @@
         mWriter.println("       media_session list-sessions");
         mWriter.println("       media_session monitor <tag>");
         mWriter.println("       media_session volume [options]");
+        mWriter.println("       media_session expire-temp-engaged-sessions");
         mWriter.println();
         mWriter.println("media_session dispatch: dispatch a media key to the system.");
         mWriter.println("                KEY may be: play, pause, play-pause, mute, headsethook,");
@@ -121,6 +122,9 @@
         mWriter.println("media_session monitor: monitor updates to the specified session.");
         mWriter.println("                       Use the tag from list-sessions.");
         mWriter.println("media_session volume:  " + VolumeCtrl.USAGE);
+        mWriter.println("media_session expire-temp-engaged-sessions: Expires any ongoing");
+        mWriter.println("                timers for media sessions in a temporary user-engaged");
+        mWriter.println("                state.");
         mWriter.println();
     }
 
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
index 6b409ee..8c6273c 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
@@ -443,7 +443,8 @@
                         boolean isTransferringToTheSelectedRoute =
                                 mPendingTransferRequest.isTargetRoute(selectedRoute);
                         boolean canBePotentiallyTransferred =
-                                mPendingTransferRequest.isTargetRouteIdInList(transferableRoutes);
+                                mPendingTransferRequest.isTargetRouteIdInRouteOriginalIdList(
+                                        transferableRoutes);
 
                         if (isTransferringToTheSelectedRoute) {
                             transferReason = mPendingTransferRequest.mTransferReason;
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index c60ac3a..f03c639 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -3965,8 +3965,8 @@
         // allow override without having plans defined.
         synchronized (mNetworkPoliciesSecondLock) {
             final SubscriptionPlan plan = getPrimarySubscriptionPlanLocked(subId);
-            if (overrideMask != SUBSCRIPTION_OVERRIDE_UNMETERED && plan == null
-                    || plan.getDataLimitBehavior() == SubscriptionPlan.LIMIT_BEHAVIOR_UNKNOWN) {
+            if (overrideMask != SUBSCRIPTION_OVERRIDE_UNMETERED && (plan == null
+                    || plan.getDataLimitBehavior() == SubscriptionPlan.LIMIT_BEHAVIOR_UNKNOWN)) {
                 throw new IllegalStateException(
                         "Must provide valid SubscriptionPlan to enable overriding");
             }
diff --git a/services/core/java/com/android/server/net/OWNERS b/services/core/java/com/android/server/net/OWNERS
index 669cdaa..bbc7c01 100644
--- a/services/core/java/com/android/server/net/OWNERS
+++ b/services/core/java/com/android/server/net/OWNERS
@@ -1,5 +1,6 @@
 set noparent
 file:platform/packages/modules/Connectivity:main:/OWNERS_core_networking
+per-file NetworkPolicyManagerService.java=jackyu@google.com, sarahchin@google.com
 
 jsharkey@android.com
 sudheersai@google.com
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index c7b0f7d..60147ef 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2311,7 +2311,7 @@
 
     @VisibleForTesting
     void clearNotifications() {
-        synchronized (mNotificationList) {
+        synchronized (mNotificationLock) {
             mEnqueuedNotifications.clear();
             mNotificationList.clear();
             mNotificationsByKey.clear();
@@ -2321,21 +2321,27 @@
 
     @VisibleForTesting
     void addNotification(NotificationRecord r) {
-        mNotificationList.add(r);
-        mNotificationsByKey.put(r.getSbn().getKey(), r);
-        if (r.getSbn().isGroup()) {
-            mSummaryByGroupKey.put(r.getGroupKey(), r);
+        synchronized (mNotificationLock) {
+            mNotificationList.add(r);
+            mNotificationsByKey.put(r.getSbn().getKey(), r);
+            if (r.getSbn().isGroup()) {
+                mSummaryByGroupKey.put(r.getGroupKey(), r);
+            }
         }
     }
 
     @VisibleForTesting
     void addEnqueuedNotification(NotificationRecord r) {
-        mEnqueuedNotifications.add(r);
+        synchronized (mNotificationLock) {
+            mEnqueuedNotifications.add(r);
+        }
     }
 
     @VisibleForTesting
     NotificationRecord getNotificationRecord(String key) {
-        return mNotificationsByKey.get(key);
+        synchronized (mNotificationLock) {
+            return mNotificationsByKey.get(key);
+        }
     }
 
     @VisibleForTesting
diff --git a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerInternal.java b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerInternal.java
index 81f11b5..07af8d0 100644
--- a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerInternal.java
+++ b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerInternal.java
@@ -17,5 +17,5 @@
 package com.android.server.ondeviceintelligence;
 
 public interface OnDeviceIntelligenceManagerInternal {
-    String getRemoteServicePackageName();
+    int getInferenceServiceUid();
 }
\ No newline at end of file
diff --git a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java
index f540f1d..59964e0 100644
--- a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java
+++ b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java
@@ -56,6 +56,7 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.ICancellationSignal;
+import android.os.IRemoteCallback;
 import android.os.Looper;
 import android.os.Message;
 import android.os.ParcelFileDescriptor;
@@ -143,6 +144,9 @@
     volatile boolean mIsServiceEnabled;
 
     @GuardedBy("mLock")
+    private int remoteInferenceServiceUid = -1;
+
+    @GuardedBy("mLock")
     private String[] mTemporaryServiceNames;
     @GuardedBy("mLock")
     private String[] mTemporaryBroadcastKeys;
@@ -174,7 +178,7 @@
                 Context.ON_DEVICE_INTELLIGENCE_SERVICE, getOnDeviceIntelligenceManagerService(),
                 /* allowIsolated = */true);
         LocalServices.addService(OnDeviceIntelligenceManagerInternal.class,
-                OnDeviceIntelligenceManagerService.this::getRemoteConfiguredPackageName);
+                this::getRemoteInferenceServiceUid);
     }
 
     @Override
@@ -603,7 +607,13 @@
                                 try {
                                     ensureRemoteIntelligenceServiceInitialized();
                                     service.registerRemoteStorageService(
-                                            getIRemoteStorageService());
+                                            getIRemoteStorageService(), new IRemoteCallback.Stub() {
+                                                @Override
+                                                public void sendResult(Bundle bundle) {
+                                                    final int uid = Binder.getCallingUid();
+                                                    setRemoteInferenceServiceUid(uid);
+                                                }
+                                            });
                                     mRemoteOnDeviceIntelligenceService.run(
                                             IOnDeviceIntelligenceService::notifyInferenceServiceConnected);
                                     broadcastExecutor.execute(
@@ -1038,4 +1048,16 @@
                 Settings.Secure.ON_DEVICE_INTELLIGENCE_IDLE_TIMEOUT_MS, TimeUnit.HOURS.toMillis(1),
                 mContext.getUserId());
     }
+
+    private int getRemoteInferenceServiceUid() {
+        synchronized (mLock) {
+            return remoteInferenceServiceUid;
+        }
+    }
+
+    private void setRemoteInferenceServiceUid(int remoteInferenceServiceUid) {
+        synchronized (mLock){
+            this.remoteInferenceServiceUid = remoteInferenceServiceUid;
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/os/NativeTombstoneManager.java b/services/core/java/com/android/server/os/NativeTombstoneManager.java
index f6e7ef3..3bcaf58 100644
--- a/services/core/java/com/android/server/os/NativeTombstoneManager.java
+++ b/services/core/java/com/android/server/os/NativeTombstoneManager.java
@@ -56,6 +56,7 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.lang.ref.Reference;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Optional;
@@ -73,6 +74,9 @@
 
     private final Context mContext;
     private final Handler mHandler;
+    // TODO(b/339371242): The garbage collector is misbehaving, and we must have
+    // a reference to this member outside the constructor. More details in the
+    // corresponding comment elsewhere in this class.
     private final TombstoneWatcher mWatcher;
 
     private final ReentrantLock mTmpFileLock = new ReentrantLock();
@@ -139,6 +143,14 @@
             processName = parsedTombstone.get().getProcessName();
         }
         BootReceiver.addTombstoneToDropBox(mContext, path, isProtoFile, processName, mTmpFileLock);
+
+        // TODO(b/339371242): An optimizer on WearOS is misbehaving and this member is being garbage
+        // collected as it's never referenced inside this class outside of the constructor. But,
+        // it's a file watcher, and needs to stay alive to do its job. So, add a cheap check here to
+        // force the GC to behave itself. From a technical perspective, it's possible that we need
+        // to add this trick to every single member function, but this seems to work correctly in
+        // practice and avoids polluting a lot more of this class.
+        Reference.reachabilityFence(mWatcher);
     }
 
     private Optional<TombstoneFile> handleProtoTombstone(File path, boolean addToList) {
diff --git a/services/core/java/com/android/server/os/OWNERS b/services/core/java/com/android/server/os/OWNERS
index 70be161..e130d9c0 100644
--- a/services/core/java/com/android/server/os/OWNERS
+++ b/services/core/java/com/android/server/os/OWNERS
@@ -2,4 +2,4 @@
 per-file Bugreport* = file:/platform/frameworks/native:/cmds/dumpstate/OWNERS
 
 # NativeTombstone
-per-file NativeTombstone* = gaillard@google.com
+per-file NativeTombstone* = benmiles@google.com
diff --git a/services/core/java/com/android/server/pm/AppDataHelper.java b/services/core/java/com/android/server/pm/AppDataHelper.java
index fe774aa..8b72138 100644
--- a/services/core/java/com/android/server/pm/AppDataHelper.java
+++ b/services/core/java/com/android/server/pm/AppDataHelper.java
@@ -345,7 +345,7 @@
         final StorageManager storage = mInjector.getSystemService(StorageManager.class);
         for (VolumeInfo vol : storage.getWritablePrivateVolumes()) {
             final String volumeUuid = vol.getFsUuid();
-            synchronized (mPm.mInstallLock) {
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
                 reconcileAppsDataLI(volumeUuid, userId, flags, migrateAppsData);
             }
         }
@@ -505,8 +505,8 @@
             storageFlags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
         }
         final List<String> deferPackages;
-        synchronized (mPm.mInstallLock) {
-           deferPackages = reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL,
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+            deferPackages = reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL,
                     UserHandle.USER_SYSTEM, storageFlags, true /* migrateAppData */,
                     true /* onlyCoreApps */);
         }
@@ -541,7 +541,7 @@
                     count++;
                 }
             }
-            synchronized (mPm.mInstallLock) {
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
                 executeBatchLI(batch);
             }
             traceLog.traceEnd();
diff --git a/services/core/java/com/android/server/pm/Computer.java b/services/core/java/com/android/server/pm/Computer.java
index 482807c..3528d3d 100644
--- a/services/core/java/com/android/server/pm/Computer.java
+++ b/services/core/java/com/android/server/pm/Computer.java
@@ -108,16 +108,20 @@
     default int getUsed() {
         return 0;
     }
-    @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent, String resolvedType,
+    @NonNull List<ResolveInfo> queryIntentActivitiesInternal(
+            Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags,
             @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags,
-            int filterCallingUid, int userId, boolean resolveForStart, boolean allowDynamicSplits);
+            int filterCallingUid, int callingPid, int userId,
+            boolean resolveForStart, boolean allowDynamicSplits);
     @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent, String resolvedType,
             long flags, int filterCallingUid, int userId);
     @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent, String resolvedType,
             long flags, int userId);
-    @NonNull List<ResolveInfo> queryIntentServicesInternal(Intent intent, String resolvedType,
-            long flags, int userId, int callingUid, boolean includeInstantApps);
+    @NonNull List<ResolveInfo> queryIntentServicesInternal(
+            Intent intent, String resolvedType, long flags,
+            int userId, int callingUid, int callingPid,
+            boolean includeInstantApps, boolean resolveForStart);
     @NonNull QueryIntentActivitiesResult queryIntentActivitiesInternalBody(Intent intent,
             String resolvedType, long flags, int filterCallingUid, int userId,
             boolean resolveForStart, boolean allowDynamicSplits, String pkgName,
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 6a25f64..f59ae16 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -500,10 +500,10 @@
         return mUsed;
     }
 
-    public final @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent,
-            String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
+    public final @NonNull List<ResolveInfo> queryIntentActivitiesInternal(
+            Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
             @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags,
-            int filterCallingUid, int userId, boolean resolveForStart,
+            int filterCallingUid, int callingPid, int userId, boolean resolveForStart,
             boolean allowDynamicSplits) {
         if (!mUserManager.exists(userId)) return Collections.emptyList();
 
@@ -530,6 +530,11 @@
                 isImplicitImageCaptureIntentAndNotSetByDpc(intent, userId, resolvedType,
                         flags));
 
+        var args = new SaferIntentUtils.IntentArgs(intent, resolvedType,
+                false /* isReceiver */, resolveForStart, filterCallingUid, callingPid);
+        args.platformCompat = mInjector.getCompatibility();
+        args.snapshot = this;
+
         List<ResolveInfo> list = Collections.emptyList();
         boolean skipPostResolution = false;
         if (comp != null) {
@@ -583,9 +588,7 @@
                     ri.userHandle = UserHandle.of(userId);
                     list = new ArrayList<>(1);
                     list.add(ri);
-                    PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                            mInjector.getCompatibility(), this, list, false, intent,
-                            resolvedType, filterCallingUid);
+                    SaferIntentUtils.enforceIntentFilterMatching(args, list);
                 }
             }
         } else {
@@ -609,15 +612,13 @@
                 }
                 list = lockedResult.result;
             }
-            PackageManagerServiceUtils.applyNullActionBlocking(
-                    mInjector.getCompatibility(), this, list, false, intent, filterCallingUid);
+            SaferIntentUtils.blockNullAction(args, list);
         }
 
         if (originalIntent != null) {
             // We also have to ensure all components match the original intent
-            PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                    mInjector.getCompatibility(), this, list, false, originalIntent,
-                    resolvedType, filterCallingUid);
+            args.intent = originalIntent;
+            SaferIntentUtils.enforceIntentFilterMatching(args, list);
         }
 
         return skipPostResolution ? list : applyPostResolutionFilter(
@@ -631,19 +632,22 @@
             @PackageManager.ResolveInfoFlagsBits long flags, int filterCallingUid, int userId) {
         return queryIntentActivitiesInternal(
                 intent, resolvedType, flags, 0 /*privateResolveFlags*/, filterCallingUid,
-                userId, false /*resolveForStart*/, true /*allowDynamicSplits*/);
+                Process.INVALID_PID, userId,
+                /*resolveForStart*/ false, /*allowDynamicSplits*/ true);
     }
 
     public final @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent,
             String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId) {
         return queryIntentActivitiesInternal(
-                intent, resolvedType, flags, 0 /*privateResolveFlags*/, Binder.getCallingUid(),
-                userId, false /*resolveForStart*/, true /*allowDynamicSplits*/);
+                intent, resolvedType, flags, 0 /*privateResolveFlags*/,
+                Binder.getCallingUid(), Process.INVALID_PID, userId,
+                /*resolveForStart*/ false, /*allowDynamicSplits*/ true);
     }
 
-    public final @NonNull List<ResolveInfo> queryIntentServicesInternal(Intent intent,
-            String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId,
-            int callingUid, boolean includeInstantApps) {
+    public final @NonNull List<ResolveInfo> queryIntentServicesInternal(
+            Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
+            int userId, int callingUid, int callingPid,
+            boolean includeInstantApps, boolean resolveForStart) {
         if (!mUserManager.exists(userId)) return Collections.emptyList();
         enforceCrossUserOrProfilePermission(callingUid,
                 userId,
@@ -654,6 +658,11 @@
         flags = updateFlagsForResolve(flags, userId, callingUid, includeInstantApps,
                 false /* isImplicitImageCaptureIntentAndNotSetByDpc */);
 
+        var args = new SaferIntentUtils.IntentArgs(intent, resolvedType,
+                false /* isReceiver */, resolveForStart, callingUid, callingPid);
+        args.platformCompat = mInjector.getCompatibility();
+        args.snapshot = this;
+
         Intent originalIntent = null;
         ComponentName comp = intent.getComponent();
         if (comp == null) {
@@ -699,23 +708,19 @@
                     ri.serviceInfo = si;
                     list = new ArrayList<>(1);
                     list.add(ri);
-                    PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                            mInjector.getCompatibility(), this, list, false, intent,
-                            resolvedType, callingUid);
+                    SaferIntentUtils.enforceIntentFilterMatching(args, list);
                 }
             }
         } else {
             list = queryIntentServicesInternalBody(intent, resolvedType, flags,
                     userId, callingUid, instantAppPkgName);
-            PackageManagerServiceUtils.applyNullActionBlocking(
-                    mInjector.getCompatibility(), this, list, false, intent, callingUid);
+            SaferIntentUtils.blockNullAction(args, list);
         }
 
         if (originalIntent != null) {
             // We also have to ensure all components match the original intent
-            PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                    mInjector.getCompatibility(), this, list, false, originalIntent,
-                    resolvedType, callingUid);
+            args.intent = originalIntent;
+            SaferIntentUtils.enforceIntentFilterMatching(args, list);
         }
 
         return list;
@@ -847,8 +852,8 @@
         // IMPORTANT: disallow dynamic splits to avoid an infinite loop
         final List<ResolveInfo> result = queryIntentActivitiesInternal(
                 failureActivityIntent, null /*resolvedType*/, 0 /*flags*/,
-                0 /*privateResolveFlags*/, filterCallingUid, userId, false /*resolveForStart*/,
-                false /*allowDynamicSplits*/);
+                0 /*privateResolveFlags*/, filterCallingUid, Process.INVALID_PID, userId,
+                /*resolveForStart*/ false, /*allowDynamicSplits*/ false);
         final int numResults = result.size();
         if (numResults > 0) {
             for (int i = 0; i < numResults; i++) {
@@ -4359,7 +4364,7 @@
             uid = getBaseSdkSandboxUid();
         }
         final int callingUserId = UserHandle.getUserId(callingUid);
-        if (isKnownIsolatedComputeApp(uid, callingUserId)) {
+        if (isKnownIsolatedComputeApp(uid)) {
             try {
                 uid = getIsolatedOwner(uid);
             } catch (IllegalStateException e) {
@@ -4402,7 +4407,7 @@
             if (Process.isSdkSandboxUid(uid)) {
                 uid = getBaseSdkSandboxUid();
             }
-            if (isKnownIsolatedComputeApp(uid, callingUserId)) {
+            if (isKnownIsolatedComputeApp(uid)) {
                 try {
                     uid = getIsolatedOwner(uid);
                 } catch (IllegalStateException e) {
@@ -5804,7 +5809,7 @@
     }
 
 
-    private boolean isKnownIsolatedComputeApp(int uid, int callingUserId) {
+    private boolean isKnownIsolatedComputeApp(int uid) {
         if (!Process.isIsolatedUid(uid)) {
             return false;
         }
@@ -5817,27 +5822,8 @@
         }
         OnDeviceIntelligenceManagerInternal onDeviceIntelligenceManagerInternal =
                 mInjector.getLocalService(OnDeviceIntelligenceManagerInternal.class);
-        if (onDeviceIntelligenceManagerInternal == null) {
-            return false;
-        }
-
-        String onDeviceIntelligencePackage =
-                onDeviceIntelligenceManagerInternal.getRemoteServicePackageName();
-        if (onDeviceIntelligencePackage == null) {
-            return false;
-        }
-
-        try {
-            if (getIsolatedOwner(uid) == getPackageUid(onDeviceIntelligencePackage, 0,
-                    callingUserId)) {
-                return true;
-            }
-        } catch (IllegalStateException e) {
-            // If the owner uid doesn't exist, just use the current uid
-            Slog.wtf(TAG, "Expected isolated uid " + uid + " to have an owner", e);
-        }
-
-        return false;
+        return onDeviceIntelligenceManagerInternal != null
+                && uid == onDeviceIntelligenceManagerInternal.getInferenceServiceUid();
     }
 
     @Nullable
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java
index 47ee1d0..b56e119 100644
--- a/services/core/java/com/android/server/pm/DeletePackageHelper.java
+++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java
@@ -241,7 +241,7 @@
             isInstallerPackage = mPm.mSettings.isInstallerPackage(packageName);
         }
 
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageX: pkg=" + packageName + " user=" + userId);
             try (PackageFreezer freezer = mPm.freezePackageForDelete(packageName, freezeUser,
                     deleteFlags, "deletePackageX", ApplicationExitInfo.REASON_OTHER)) {
@@ -280,7 +280,7 @@
 
         // Delete the resources here after sending the broadcast to let
         // other processes clean up before deleting resources.
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             if (info.mArgs != null) {
                 mRemovePackageHelper.cleanUpResources(info.mArgs.getPackageName(),
                         info.mArgs.getCodeFile(), info.mArgs.getInstructionSets());
@@ -435,7 +435,7 @@
     public void executeDeletePackage(DeletePackageAction action, String packageName,
             boolean deleteCodeAndResources, @NonNull int[] allUserHandles, boolean writeSettings)
             throws SystemDeleteException {
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             executeDeletePackageLIF(action, packageName, deleteCodeAndResources, allUserHandles,
                     writeSettings);
         }
@@ -681,7 +681,7 @@
             // Preserve data by setting flag
             flags |= PackageManager.DELETE_KEEP_DATA;
         }
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             deleteInstalledPackageLIF(deletedPs, UserHandle.USER_ALL, true, flags, allUserHandles,
                     outInfo, writeSettings);
         }
diff --git a/services/core/java/com/android/server/pm/FreeStorageHelper.java b/services/core/java/com/android/server/pm/FreeStorageHelper.java
index 66ec80f..6e84a5b 100644
--- a/services/core/java/com/android/server/pm/FreeStorageHelper.java
+++ b/services/core/java/com/android/server/pm/FreeStorageHelper.java
@@ -107,11 +107,9 @@
             }
 
             // 4. Consider cached app data (above quotas)
-            synchronized (mPm.mInstallLock) {
-                try {
-                    mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2);
-                } catch (Installer.InstallerException ignored) {
-                }
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2);
+            } catch (Installer.InstallerException ignored) {
             }
             if (file.getUsableSpace() >= bytes) return;
 
@@ -141,12 +139,10 @@
             }
 
             // 8. Consider cached app data (below quotas)
-            synchronized (mPm.mInstallLock) {
-                try {
-                    mPm.mInstaller.freeCache(volumeUuid, bytes,
-                            Installer.FLAG_FREE_CACHE_V2 | Installer.FLAG_FREE_CACHE_V2_DEFY_QUOTA);
-                } catch (Installer.InstallerException ignored) {
-                }
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                mPm.mInstaller.freeCache(volumeUuid, bytes,
+                        Installer.FLAG_FREE_CACHE_V2 | Installer.FLAG_FREE_CACHE_V2_DEFY_QUOTA);
+            } catch (Installer.InstallerException ignored) {
             }
             if (file.getUsableSpace() >= bytes) return;
 
@@ -176,11 +172,9 @@
             // 12. Clear temp install session files
             mPm.mInstallerService.freeStageDirs(volumeUuid);
         } else {
-            synchronized (mPm.mInstallLock) {
-                try {
-                    mPm.mInstaller.freeCache(volumeUuid, bytes, 0);
-                } catch (Installer.InstallerException ignored) {
-                }
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                mPm.mInstaller.freeCache(volumeUuid, bytes, 0);
+            } catch (Installer.InstallerException ignored) {
             }
         }
         if (file.getUsableSpace() >= bytes) return;
@@ -197,22 +191,20 @@
         final long sizeBytes = PackageManagerServiceUtils.calculateInstalledSize(resolvedPath,
                 mPackageAbiOverride);
         if (sizeBytes >= 0) {
-            synchronized (mPm.mInstallLock) {
-                try {
-                    mPm.mInstaller.freeCache(null, sizeBytes + lowThreshold, 0);
-                    PackageInfoLite pkgInfoLite = PackageManagerServiceUtils.getMinimalPackageInfo(
-                            mContext, pkgLite, resolvedPath, installFlags,
-                            mPackageAbiOverride);
-                    // The cache free must have deleted the file we downloaded to install.
-                    if (pkgInfoLite.recommendedInstallLocation
-                            == InstallLocationUtils.RECOMMEND_FAILED_INVALID_URI) {
-                        pkgInfoLite.recommendedInstallLocation =
-                                InstallLocationUtils.RECOMMEND_FAILED_INSUFFICIENT_STORAGE;
-                    }
-                    return pkgInfoLite.recommendedInstallLocation;
-                } catch (Installer.InstallerException e) {
-                    Slog.w(TAG, "Failed to free cache", e);
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                mPm.mInstaller.freeCache(null, sizeBytes + lowThreshold, 0);
+                PackageInfoLite pkgInfoLite = PackageManagerServiceUtils.getMinimalPackageInfo(
+                        mContext, pkgLite, resolvedPath, installFlags,
+                        mPackageAbiOverride);
+                // The cache free must have deleted the file we downloaded to install.
+                if (pkgInfoLite.recommendedInstallLocation
+                        == InstallLocationUtils.RECOMMEND_FAILED_INVALID_URI) {
+                    pkgInfoLite.recommendedInstallLocation =
+                            InstallLocationUtils.RECOMMEND_FAILED_INSUFFICIENT_STORAGE;
                 }
+                return pkgInfoLite.recommendedInstallLocation;
+            } catch (Installer.InstallerException e) {
+                Slog.w(TAG, "Failed to free cache", e);
             }
         }
         return recommendedInstallLocation;
diff --git a/services/core/java/com/android/server/pm/IPackageManagerBase.java b/services/core/java/com/android/server/pm/IPackageManagerBase.java
index f987d4a..f05c54d 100644
--- a/services/core/java/com/android/server/pm/IPackageManagerBase.java
+++ b/services/core/java/com/android/server/pm/IPackageManagerBase.java
@@ -1095,7 +1095,8 @@
             String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId) {
         final int callingUid = Binder.getCallingUid();
         return new ParceledListSlice<>(snapshot().queryIntentServicesInternal(
-                intent, resolvedType, flags, userId, callingUid, false /*includeInstantApps*/));
+                intent, resolvedType, flags, userId, callingUid, Process.INVALID_PID,
+                /*includeInstantApps*/ false, /*resolveForStart*/ false));
     }
 
     @Override
@@ -1139,7 +1140,7 @@
             @PackageManager.ResolveInfoFlagsBits long flags, int userId) {
         return mResolveIntentHelper.resolveIntentInternal(snapshot(), intent,
                 resolvedType, flags, 0 /*privateResolveFlags*/, userId, false,
-                Binder.getCallingUid());
+                Binder.getCallingUid(), Binder.getCallingPid());
     }
 
     @Override
@@ -1148,7 +1149,8 @@
             @PackageManager.ResolveInfoFlagsBits long flags, int userId) {
         final int callingUid = Binder.getCallingUid();
         return mResolveIntentHelper.resolveServiceInternal(snapshot(), intent,
-                resolvedType, flags, userId, callingUid);
+                resolvedType, flags, userId, callingUid, Process.INVALID_PID,
+                /*resolveForStart*/ false);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 6cfa09f..6eac72d 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -756,7 +756,7 @@
                             Process.INVALID_UID /* previousAppId */,
                             permissionParamsBuilder.build(), userId);
 
-                    synchronized (mPm.mInstallLock) {
+                    try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
                         // We don't need to freeze for a brand new install
                         mAppDataHelper.prepareAppDataPostCommitLIF(
                                 pkgSetting, /* previousAppId= */0, new int[] { userId });
@@ -985,13 +985,11 @@
     }
 
     void installPackagesTraced(List<InstallRequest> requests) {
-        mPm.mInstallLock.lock();
-        try {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "installPackages");
             installPackagesLI(requests);
         } finally {
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
-            mPm.mInstallLock.unlock();
         }
     }
 
@@ -2592,7 +2590,8 @@
             if (performDexopt) {
                 // dexopt can take long, and ArtService doesn't require installd, so we release
                 // the lock here and re-acquire the lock after dexopt is finished.
-                mPm.mInstallLock.unlock();
+                PackageManagerTracedLock.RawLock installLock = mPm.mInstallLock.getRawLock();
+                installLock.unlock();
                 try {
                     Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
 
@@ -2612,7 +2611,7 @@
                     installRequest.onDexoptFinished(dexOptResult);
                     Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                 } finally {
-                    mPm.mInstallLock.lock();
+                    installLock.lock();
                 }
             }
         }
@@ -2921,7 +2920,7 @@
                     // propagated to all application threads.
                     mPm.scheduleDeferredNoKillPostDelete(args);
                     if (Flags.improveInstallDontKill()) {
-                        synchronized (mPm.mInstallLock) {
+                        try (var installLock = mPm.mInstallLock.acquireLock()) {
                             PackageManagerServiceUtils.linkFilesToOldDirs(mPm.mInstaller,
                                     packageName, pkgSetting.getPath(), pkgSetting.getOldPaths());
                         }
@@ -3068,7 +3067,7 @@
             @NonNull PackageSetting stubPkgSetting) {
         final int parseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_CHATTY
                 | ParsingPackageUtils.PARSE_ENFORCE_CODE;
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             final AndroidPackage pkg;
             try (PackageFreezer freezer =
                          mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL,
@@ -3231,12 +3230,10 @@
         }
         // Install the system package
         if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs);
-        try {
-            synchronized (mPm.mInstallLock) {
-                final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers;
-                installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles,
-                        origUsers, writeSettings);
-            }
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+            final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers;
+            installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles,
+                    origUsers, writeSettings);
         } catch (PackageManagerException e) {
             Slog.w(TAG, "Failed to restore system package:" + deletedPs.getPackageName() + ": "
                     + e.getMessage());
@@ -3466,12 +3463,9 @@
                 if (ps != null) {
                     ps.getPkgState().setUpdatedSystemApp(false);
                 }
-
-                try {
-                    final File codePath = new File(pkg.getPath());
-                    synchronized (mPm.mInstallLock) {
-                        initPackageTracedLI(codePath, 0, scanFlags);
-                    }
+                final File codePath = new File(pkg.getPath());
+                try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                    initPackageTracedLI(codePath, 0, scanFlags);
                 } catch (PackageManagerException e) {
                     Slog.e(TAG, "Failed to parse updated, ex-system package: "
                             + e.getMessage());
@@ -3679,14 +3673,12 @@
             }
             mPm.mSettings.enableSystemPackageLPw(packageName);
 
-            try {
-                synchronized (mPm.mInstallLock) {
-                    final AndroidPackage newPkg = initPackageTracedLI(
-                            scanFile, reparseFlags, rescanFlags);
-                    // We rescanned a stub, add it to the list of stubbed system packages
-                    if (newPkg.isStub()) {
-                        stubSystemApps.add(packageName);
-                    }
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+                final AndroidPackage newPkg = initPackageTracedLI(
+                         scanFile, reparseFlags, rescanFlags);
+                 // We rescanned a stub, add it to the list of stubbed system packages
+                if (newPkg.isStub()) {
+                    stubSystemApps.add(packageName);
                 }
             } catch (PackageManagerException e) {
                 Slog.e(TAG, "Failed to parse original system package: "
diff --git a/services/core/java/com/android/server/pm/InstallingSession.java b/services/core/java/com/android/server/pm/InstallingSession.java
index b06c7cb..d3a18f9 100644
--- a/services/core/java/com/android/server/pm/InstallingSession.java
+++ b/services/core/java/com/android/server/pm/InstallingSession.java
@@ -370,18 +370,16 @@
             Slog.d(TAG, "Moving " + mMoveInfo.mPackageName + " from "
                     + mMoveInfo.mFromUuid + " to " + mMoveInfo.mToUuid);
         }
-        synchronized (mPm.mInstallLock) {
-            try {
-                mPm.mInstaller.moveCompleteApp(mMoveInfo.mFromUuid, mMoveInfo.mToUuid,
-                        mMoveInfo.mPackageName, mMoveInfo.mAppId, mMoveInfo.mSeInfo,
-                        mMoveInfo.mTargetSdkVersion, mMoveInfo.mFromCodePath);
-            } catch (Installer.InstallerException e) {
-                final String errorMessage = "Failed to move app";
-                request.setError(PackageManagerException.ofInternalError(errorMessage,
-                        PackageManagerException.INTERNAL_ERROR_MOVE));
-                Slog.w(TAG, errorMessage, e);
-                return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
-            }
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
+            mPm.mInstaller.moveCompleteApp(mMoveInfo.mFromUuid, mMoveInfo.mToUuid,
+                    mMoveInfo.mPackageName, mMoveInfo.mAppId, mMoveInfo.mSeInfo,
+                    mMoveInfo.mTargetSdkVersion, mMoveInfo.mFromCodePath);
+        } catch (Installer.InstallerException e) {
+            final String errorMessage = "Failed to move app";
+            request.setError(PackageManagerException.ofInternalError(errorMessage,
+                    PackageManagerException.INTERNAL_ERROR_MOVE));
+            Slog.w(TAG, errorMessage, e);
+            return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
         }
 
         final String toPathName = new File(mMoveInfo.mFromCodePath).getName();
diff --git a/services/core/java/com/android/server/pm/MovePackageHelper.java b/services/core/java/com/android/server/pm/MovePackageHelper.java
index f5f5577..f01b508 100644
--- a/services/core/java/com/android/server/pm/MovePackageHelper.java
+++ b/services/core/java/com/android/server/pm/MovePackageHelper.java
@@ -206,7 +206,7 @@
         }
 
         final PackageStats stats = new PackageStats(null, -1);
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             for (int userId : installedUserIds) {
                 if (!getPackageSizeInfoLI(packageName, userId, stats)) {
                     freezer.close();
diff --git a/services/core/java/com/android/server/pm/OWNERS b/services/core/java/com/android/server/pm/OWNERS
index 85aee86..c10dfcb 100644
--- a/services/core/java/com/android/server/pm/OWNERS
+++ b/services/core/java/com/android/server/pm/OWNERS
@@ -34,6 +34,7 @@
 per-file PackageKeySetData.java = cbrubaker@google.com, nnk@google.com
 per-file PackageSignatures.java = cbrubaker@google.com, nnk@google.com
 per-file SELinuxMMAC* = alanstokes@google.com, cbrubaker@google.com, jeffv@google.com
+per-file SaferIntentUtils.java = topjohnwu@google.com
 
 # shortcuts
 per-file LauncherAppsService.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index 5b326fd..087b17a 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -506,8 +506,8 @@
 
     private static class OTADexoptPackageDexOptimizer extends
             PackageDexOptimizer.ForcedUpdatePackageDexOptimizer {
-        public OTADexoptPackageDexOptimizer(Installer installer, Object installLock,
-                Context context) {
+        OTADexoptPackageDexOptimizer(Installer installer,
+                PackageManagerTracedLock installLock, Context context) {
             super(installer, installLock, context, "*otadexopt*");
         }
     }
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 396fa22..72bacfd 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -123,7 +123,7 @@
     // One minute over PM WATCHDOG_TIMEOUT
     private static final long WAKELOCK_TIMEOUT_MS = WATCHDOG_TIMEOUT + 1000 * 60;
 
-    private final Object mInstallLock;
+    private final PackageManagerTracedLock mInstallLock;
 
     /**
      * This should be accessed only through {@link #getInstallerLI()} with
@@ -142,7 +142,7 @@
     private final Context mContext;
     private static final Random sRandom = new Random();
 
-    PackageDexOptimizer(Installer installer, Object installLock, Context context,
+    PackageDexOptimizer(Installer installer, PackageManagerTracedLock installLock, Context context,
             String wakeLockTag) {
         this(new Injector() {
             @Override
@@ -167,8 +167,8 @@
     }
 
     @VisibleForTesting
-    PackageDexOptimizer(@NonNull Injector injector, Installer installer, Object installLock,
-            Context context, String wakeLockTag) {
+    PackageDexOptimizer(@NonNull Injector injector, Installer installer,
+            PackageManagerTracedLock installLock, Context context, String wakeLockTag) {
         this.mContext = context;
         this.mInstaller = installer;
         this.mInstallLock = installLock;
@@ -231,7 +231,7 @@
         if (!canOptimizePackage(pkg)) {
             return DEX_OPT_SKIPPED;
         }
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
             final long acquireTime = acquireWakeLockLI(pkg.getUid());
             try {
                 return performDexOptLI(pkg, pkgSetting, instructionSets,
@@ -868,8 +868,8 @@
      */
     public static class ForcedUpdatePackageDexOptimizer extends PackageDexOptimizer {
 
-        public ForcedUpdatePackageDexOptimizer(Installer installer, Object installLock,
-                Context context, String wakeLockTag) {
+        public ForcedUpdatePackageDexOptimizer(Installer installer,
+                PackageManagerTracedLock installLock, Context context, String wakeLockTag) {
             super(installer, installLock, context, wakeLockTag);
         }
 
diff --git a/services/core/java/com/android/server/pm/PackageHandler.java b/services/core/java/com/android/server/pm/PackageHandler.java
index 68f6ca1..0a0882d 100644
--- a/services/core/java/com/android/server/pm/PackageHandler.java
+++ b/services/core/java/com/android/server/pm/PackageHandler.java
@@ -123,19 +123,10 @@
                 }
             } break;
             case WRITE_SETTINGS: {
-                if (!mPm.tryWriteSettings(/*sync=*/false)) {
-                    // Failed to write.
-                    this.removeMessages(WRITE_SETTINGS);
-                    mPm.scheduleWriteSettings();
-                }
+                mPm.writeSettings(/*sync=*/false);
             } break;
             case WRITE_PACKAGE_LIST: {
-                int userId = msg.arg1;
-                if (!mPm.tryWritePackageList(userId)) {
-                    // Failed to write.
-                    this.removeMessages(WRITE_PACKAGE_LIST);
-                    mPm.scheduleWritePackageList(userId);
-                }
+                mPm.writePackageList(msg.arg1);
             } break;
             case CHECK_PENDING_VERIFICATION: {
                 final int verificationId = msg.arg1;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 050d44e..b93dcdc 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -1423,7 +1423,9 @@
         DevicePolicyManagerInternal dpmi =
                 LocalServices.getService(DevicePolicyManagerInternal.class);
         final boolean canSilentlyInstallPackage =
-                dpmi != null && dpmi.canSilentlyInstallPackage(callerPackageName, callingUid);
+                (dpmi != null && dpmi.canSilentlyInstallPackage(callerPackageName, callingUid))
+                        || PackageInstallerSession.isEmergencyInstallerEnabled(
+                        versionedPackage.getPackageName(), snapshot, userId, callingUid);
 
         final PackageDeleteObserverAdapter adapter = new PackageDeleteObserverAdapter(mContext,
                 statusReceiver, versionedPackage.getPackageName(),
@@ -1445,15 +1447,6 @@
                     .createEvent(DevicePolicyEnums.UNINSTALL_PACKAGE)
                     .setAdmin(callerPackageName)
                     .write();
-        } else if (PackageInstallerSession.isEmergencyInstallerEnabled(callerPackageName, snapshot,
-                userId, callingUid)) {
-            // Need to clear the calling identity to get DELETE_PACKAGES permission
-            final long ident = Binder.clearCallingIdentity();
-            try {
-                mPm.deletePackageVersioned(versionedPackage, adapter.getBinder(), userId, flags);
-            } finally {
-                Binder.restoreCallingIdentity(ident);
-            }
         } else {
             ApplicationInfo appInfo = snapshot.getApplicationInfo(callerPackageName, 0, userId);
             if (appInfo.targetSdkVersion >= Build.VERSION_CODES.P) {
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index e99e264..0606563 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -316,14 +316,14 @@
     private static final int INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS = 60000;
 
     /**
-     * If an app being installed targets {@link Build.VERSION_CODES#S API 31} and above, the app
-     * can be installed without user action.
+     * If an app being installed targets {@link Build.VERSION_CODES#TIRAMISU API 33} and above,
+     * the app can be installed without user action.
      * See {@link PackageInstaller.SessionParams#setRequireUserAction} for other conditions required
      * to be satisfied for a silent install.
      */
     @ChangeId
-    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
-    private static final long SILENT_INSTALL_ALLOWED = 265131695L;
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.TIRAMISU)
+    private static final long SILENT_INSTALL_ALLOWED = 325888262L;
 
     /**
      * The system supports pre-approval and update ownership features from
diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
index d2b60a4..ed568b8 100644
--- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
+++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
@@ -327,11 +327,11 @@
 
     @Override
     @Deprecated
-    public final List<ResolveInfo> queryIntentReceivers(Intent intent,
-            String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
-            int filterCallingUid, int userId, boolean forSend) {
+    public final List<ResolveInfo> queryIntentReceivers(
+            Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags,
+            int filterCallingUid, int callingPid, int userId, boolean forSend) {
         return getResolveIntentHelper().queryIntentReceiversInternal(snapshot(), intent,
-                resolvedType, flags, userId, filterCallingUid, forSend);
+                resolvedType, flags, userId, filterCallingUid, callingPid, forSend);
     }
 
     @Override
@@ -341,7 +341,7 @@
             int userId) {
         final String resolvedType = intent.resolveTypeIfNeeded(getContext().getContentResolver());
         return snapshot().queryIntentServicesInternal(intent, resolvedType, flags, userId,
-                callingUid, false);
+                callingUid, Process.INVALID_PID, false, /*resolveForStart*/ false);
     }
 
     @Override
@@ -472,24 +472,10 @@
     public final ResolveInfo resolveIntent(Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags,
             @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId,
-            boolean resolveForStart, int filterCallingUid) {
-        return getResolveIntentHelper().resolveIntentInternal(snapshot(),
-                intent, resolvedType, flags, privateResolveFlags, userId, resolveForStart,
-                filterCallingUid);
-    }
-
-    /**
-     * @deprecated similar to {@link resolveIntent} but limits the matches to exported components.
-     */
-    @Override
-    @Deprecated
-    public final ResolveInfo resolveIntentExported(Intent intent, String resolvedType,
-            @PackageManager.ResolveInfoFlagsBits long flags,
-            @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId,
             boolean resolveForStart, int filterCallingUid, int callingPid) {
         return getResolveIntentHelper().resolveIntentInternal(snapshot(),
                 intent, resolvedType, flags, privateResolveFlags, userId, resolveForStart,
-                filterCallingUid, true, callingPid);
+                filterCallingUid, callingPid);
     }
 
     @Override
@@ -497,7 +483,18 @@
     public final ResolveInfo resolveService(Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid) {
         return getResolveIntentHelper().resolveServiceInternal(snapshot(), intent,
-                resolvedType, flags, userId, callingUid);
+                resolvedType, flags, userId, callingUid, Process.INVALID_PID,
+                /*resolveForStart*/ false);
+    }
+
+    @Override
+    @Deprecated
+    public final ResolveInfo resolveService(
+            Intent intent, String resolvedType,
+            @PackageManager.ResolveInfoFlagsBits long flags, int userId,
+            int callingUid, int callingPid) {
+        return getResolveIntentHelper().resolveServiceInternal(snapshot(), intent,
+                resolvedType, flags, userId, callingUid, callingPid, /*resolveForStart*/ true);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 679ab65..ca84d68 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -485,9 +485,6 @@
      */
     static final long WATCHDOG_TIMEOUT = 1000*60*10;     // ten minutes
 
-    // How long to wait for Lock in async writeSettings and writePackageList.
-    private static final long WRITE_LOCK_TIMEOUT_MS = 1000 * 10;   // 10 seconds
-
     /**
      * Default IncFs timeouts. Maximum values in IncFs is 1hr.
      *
@@ -1576,7 +1573,7 @@
         }
     }
 
-    void scheduleWritePackageList(int userId) {
+    void scheduleWritePackageListLocked(int userId) {
         invalidatePackageInfoCache();
         if (!mHandler.hasMessages(WRITE_PACKAGE_LIST)) {
             Message msg = mHandler.obtainMessage(WRITE_PACKAGE_LIST);
@@ -1628,41 +1625,22 @@
         mSettings.writePackageRestrictions(dirtyUsers);
     }
 
-    private boolean tryUnderLock(boolean sync, long timeoutMs, Runnable runnable) {
-        try {
-            if (sync) {
-                mLock.lock();
-            } else if (!mLock.tryLock(timeoutMs, TimeUnit.MILLISECONDS)) {
-                return false;
-            }
-            try {
-                runnable.run();
-                return true;
-            } finally {
-                mLock.unlock();
-            }
-        } catch (InterruptedException e) {
-            Slog.e(TAG, "Failed to obtain mLock", e);
-        }
-        return false;
-    }
-
-    boolean tryWriteSettings(boolean sync) {
-        return tryUnderLock(sync, WRITE_LOCK_TIMEOUT_MS, () -> {
+    void writeSettings(boolean sync) {
+        synchronized (mLock) {
             mHandler.removeMessages(WRITE_SETTINGS);
             mBackgroundHandler.removeMessages(WRITE_DIRTY_PACKAGE_RESTRICTIONS);
             writeSettingsLPrTEMP(sync);
             synchronized (mDirtyUsers) {
                 mDirtyUsers.clear();
             }
-        });
+        }
     }
 
-    boolean tryWritePackageList(int userId) {
-        return tryUnderLock(/*sync=*/false, WRITE_LOCK_TIMEOUT_MS, () -> {
+    void writePackageList(int userId) {
+        synchronized (mLock) {
             mHandler.removeMessages(WRITE_PACKAGE_LIST);
             mSettings.writePackageListLPr(userId);
-        });
+        }
     }
 
     private static final Handler.Callback BACKGROUND_HANDLER_CALLBACK = new Handler.Callback() {
@@ -1723,7 +1701,7 @@
                 (i, pm) -> new PackageDexOptimizer(i.getInstaller(), i.getInstallLock(),
                         i.getContext(), "*dexopt*"),
                 (i, pm) -> new DexManager(i.getContext(), i.getPackageDexOptimizer(),
-                        i.getInstaller(), i.getInstallLock(), i.getDynamicCodeLogger()),
+                        i.getDynamicCodeLogger()),
                 (i, pm) -> new DynamicCodeLogger(i.getInstaller()),
                 (i, pm) -> new ArtManagerService(i.getContext(), i.getInstaller(),
                         i.getInstallLock()),
@@ -2139,8 +2117,7 @@
         mPreferredActivityHelper = new PreferredActivityHelper(this, mBroadcastHelper);
         mResolveIntentHelper = new ResolveIntentHelper(mContext, mPreferredActivityHelper,
                 injector.getCompatibility(), mUserManager, mDomainVerificationManager,
-                mUserNeedsBadging, () -> mResolveInfo, () -> mInstantAppInstallerActivity,
-                injector.getBackgroundHandler());
+                mUserNeedsBadging, () -> mResolveInfo, () -> mInstantAppInstallerActivity);
         mDexOptHelper = new DexOptHelper(this);
         mSuspendPackageHelper = new SuspendPackageHelper(this, mInjector, mBroadcastHelper,
                 mProtectedPackages);
@@ -2161,7 +2138,7 @@
 
         Computer computer = mLiveComputer;
         // CHECKSTYLE:OFF IndentationCheck
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
         // writer
         synchronized (mLock) {
             mHandler = injector.getHandler();
@@ -2695,7 +2672,8 @@
 
         final ResolveInfo resolveInfo = mResolveIntentHelper.resolveIntentInternal(computer, intent,
                 null, MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE,
-                0 /*privateResolveFlags*/, UserHandle.USER_SYSTEM, false, Binder.getCallingUid());
+                0 /*privateResolveFlags*/, UserHandle.USER_SYSTEM, false,
+                Binder.getCallingUid(), Binder.getCallingPid());
         if (resolveInfo == null ||
                 mResolveActivity.name.equals(resolveInfo.getComponentInfo().name)) {
             throw new RuntimeException("There must be exactly one uninstaller; found "
@@ -2810,7 +2788,8 @@
                 | (!Build.IS_DEBUGGABLE ? MATCH_SYSTEM_ONLY : 0);
         final Intent resolverIntent = new Intent(Intent.ACTION_RESOLVE_INSTANT_APP_PACKAGE);
         List<ResolveInfo> resolvers = snapshot.queryIntentServicesInternal(resolverIntent, null,
-                resolveFlags, UserHandle.USER_SYSTEM, callingUid, false /*includeInstantApps*/);
+                resolveFlags, UserHandle.USER_SYSTEM, callingUid, Process.INVALID_PID,
+                /*includeInstantApps*/ false, /*resolveForStart*/ false);
         final int N = resolvers.size();
         if (N == 0) {
             if (DEBUG_INSTANT) {
@@ -2924,17 +2903,14 @@
      * Blocking call to clear all cached app data above quota.
      */
     public void freeAllAppCacheAboveQuota(String volumeUuid) throws IOException {
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
             // To avoid refactoring Installer.freeCache() and InstalldNativeService.freeCache(),
             // Long.MAX_VALUE is passed as an argument which is used in neither of two methods
             // when FLAG_FREE_CACHE_DEFY_TARGET_FREE_BYTES is set
-            try {
-                mInstaller.freeCache(volumeUuid, Long.MAX_VALUE, Installer.FLAG_FREE_CACHE_V2
-                        | Installer.FLAG_FREE_CACHE_DEFY_TARGET_FREE_BYTES);
-            } catch (InstallerException ignored) {
-            }
+            mInstaller.freeCache(volumeUuid, Long.MAX_VALUE, Installer.FLAG_FREE_CACHE_V2
+                    | Installer.FLAG_FREE_CACHE_DEFY_TARGET_FREE_BYTES);
+        } catch (InstallerException ignored) {
         }
-        return;
     }
 
     /**
@@ -3069,9 +3045,7 @@
             if (mHandler.hasMessages(WRITE_SETTINGS)
                     || mBackgroundHandler.hasMessages(WRITE_DIRTY_PACKAGE_RESTRICTIONS)
                     || mHandler.hasMessages(WRITE_PACKAGE_LIST)) {
-                while (!tryWriteSettings(/*sync=*/true)) {
-                    Slog.wtf(TAG, "Failed to write settings on shutdown");
-                }
+                writeSettings(/*sync=*/true);
             }
         }
     }
@@ -3671,7 +3645,9 @@
                 MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE,
                 UserHandle.USER_SYSTEM,
                 /* callingUid= */ Process.myUid(),
-                /* includeInstantApps= */ false);
+                Process.INVALID_PID,
+                /* includeInstantApps= */ false,
+                /* resolveForStart */ false);
         if (matches.size() == 1) {
             return matches.get(0).getComponentInfo().packageName;
         } else {
@@ -4425,13 +4401,13 @@
      */
     void createNewUser(int userId, @Nullable Set<String> userTypeInstallablePackages,
             String[] disallowedPackages) {
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
             mSettings.createNewUserLI(this, mInstaller, userId,
                     userTypeInstallablePackages, disallowedPackages);
         }
         synchronized (mLock) {
             scheduleWritePackageRestrictions(userId);
-            scheduleWritePackageList(userId);
+            scheduleWritePackageListLocked(userId);
             mAppsFilter.onUserCreated(snapshotComputer(), userId);
         }
     }
@@ -4751,7 +4727,7 @@
                             freezePackage(packageName, UserHandle.USER_ALL,
                                     "clearApplicationProfileData",
                                     ApplicationExitInfo.REASON_OTHER, null /* request */)) {
-                synchronized (mInstallLock) {
+                try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                     mAppDataHelper.clearAppProfilesLIF(pkg);
                 }
             }
@@ -4797,7 +4773,7 @@
                     try (PackageFreezer freezer = freezePackage(packageName, UserHandle.USER_ALL,
                             "clearApplicationUserData",
                             ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */)) {
-                        synchronized (mInstallLock) {
+                        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                             succeeded = clearApplicationUserDataLIF(snapshotComputer(), packageName,
                                     userId);
                         }
@@ -4940,7 +4916,7 @@
                             || hasAccessInstantApps == PackageManager.PERMISSION_GRANTED;
                 }
                 if (doClearData) {
-                    synchronized (mInstallLock) {
+                    try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                         final int flags = FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL;
                         // Snapshot again after mInstallLock?
                         final AndroidPackage pkg = snapshotComputer().getPackage(packageName);
@@ -8055,16 +8031,14 @@
     public void reconcileSdkData(@Nullable String volumeUuid, @NonNull String packageName,
             @NonNull List<String> subDirNames, int userId, int appId, int previousAppId,
             @NonNull String seInfo, int flags) throws IOException {
-        synchronized (mInstallLock) {
-            ReconcileSdkDataArgs args = mInstaller.buildReconcileSdkDataArgs(volumeUuid,
-                    packageName, subDirNames, userId, appId, seInfo,
-                    flags);
-            args.previousAppId = previousAppId;
-            try {
-                mInstaller.reconcileSdkData(args);
-            } catch (InstallerException e) {
-                throw new IOException(e.getMessage());
-            }
+        ReconcileSdkDataArgs args = mInstaller.buildReconcileSdkDataArgs(volumeUuid,
+                packageName, subDirNames, userId, appId, seInfo,
+                flags);
+        args.previousAppId = previousAppId;
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
+            mInstaller.reconcileSdkData(args);
+        } catch (InstallerException e) {
+            throw new IOException(e.getMessage());
         }
     }
 
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index 6700f00..ff8abf8 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -26,14 +26,11 @@
 
 import static com.android.internal.content.NativeLibraryHelper.LIB64_DIR_NAME;
 import static com.android.internal.content.NativeLibraryHelper.LIB_DIR_NAME;
-import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH;
-import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH;
 import static com.android.server.LocalManagerRegistry.ManagerNotFoundException;
 import static com.android.server.pm.PackageInstallerSession.APP_METADATA_FILE_ACCESS_MODE;
 import static com.android.server.pm.PackageInstallerSession.getAppMetadataSizeLimit;
 import static com.android.server.pm.PackageManagerService.COMPRESSED_EXTENSION;
 import static com.android.server.pm.PackageManagerService.DEBUG_COMPRESSION;
-import static com.android.server.pm.PackageManagerService.DEBUG_INTENT_MATCHING;
 import static com.android.server.pm.PackageManagerService.DEBUG_PREFERRED;
 import static com.android.server.pm.PackageManagerService.DEFAULT_FILE_ACCESS_MODE;
 import static com.android.server.pm.PackageManagerService.DEFAULT_NATIVE_LIBRARY_FILE_ACCESS_MODE;
@@ -48,23 +45,15 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
-import android.app.ActivityManager;
-import android.compat.annotation.ChangeId;
-import android.compat.annotation.Disabled;
-import android.compat.annotation.Overridable;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
-import android.content.pm.ComponentInfo;
 import android.content.pm.PackageInfoLite;
 import android.content.pm.PackageInstaller;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.Property;
 import android.content.pm.PackagePartitions;
 import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
 import android.content.pm.Signature;
 import android.content.pm.SigningDetails;
 import android.content.pm.parsing.ApkLiteParseUtils;
@@ -83,7 +72,6 @@
 import android.os.Process;
 import android.os.SELinux;
 import android.os.SystemProperties;
-import android.os.UserHandle;
 import android.os.incremental.IncrementalManager;
 import android.os.incremental.IncrementalStorage;
 import android.os.incremental.V4Signature;
@@ -99,29 +87,21 @@
 import android.util.Base64;
 import android.util.DisplayMetrics;
 import android.util.Log;
-import android.util.LogPrinter;
-import android.util.Printer;
 import android.util.Slog;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.content.InstallLocationUtils;
 import com.android.internal.content.NativeLibraryHelper;
-import com.android.internal.pm.pkg.component.ParsedMainComponent;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.FastPrintWriter;
 import com.android.internal.util.HexDump;
 import com.android.server.EventLogTags;
-import com.android.server.IntentResolver;
 import com.android.server.LocalManagerRegistry;
 import com.android.server.Watchdog;
-import com.android.server.am.ActivityManagerUtils;
-import com.android.server.compat.PlatformCompat;
 import com.android.server.pm.dex.PackageDexUsage;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.AndroidPackageSplit;
 import com.android.server.pm.pkg.PackageStateInternal;
-import com.android.server.pm.resolution.ComponentResolverApi;
-import com.android.server.pm.snapshot.PackageDataSnapshot;
 import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
 
 import dalvik.system.VMRuntime;
@@ -173,11 +153,6 @@
     public static final Predicate<PackageStateInternal> REMOVE_IF_NULL_PKG =
             pkgSetting -> pkgSetting.getPkg() == null;
 
-    // This is a horrible hack to workaround b/240373119, specifically for fixing the T branch.
-    // A proper fix should be implemented in master instead.
-    public static final ThreadLocal<Boolean> DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS =
-            ThreadLocal.withInitial(() -> false);
-
     /**
      * Type used with {@link #canJoinSharedUserId(String, SigningDetails, SharedUserSetting, int)}
      * when the package attempting to join the sharedUserId is a new install.
@@ -202,22 +177,6 @@
     public @interface SharedUserIdJoinType {}
 
     /**
-     * Intents sent from apps targeting Android V and above will stop resolving to components with
-     * non matching intent filters, even when explicitly setting a component name, unless the
-     * target components are in the same app as the calling app.
-     *
-     * When an app registers an exported component in its manifest and adds an <intent-filter>,
-     * the component can be started by any intent - even those that do not match the intent filter.
-     * This has proven to be something that many developers find counterintuitive.
-     * Without checking the intent when the component is started, in some circumstances this can
-     * allow 3P apps to trigger internal-only functionality.
-     */
-    @Overridable
-    @ChangeId
-    @Disabled
-    private static final long ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS = 161252188;
-
-    /**
      * The initial enabled state of the cache before other checks are done.
      */
     private static final boolean DEFAULT_PACKAGE_PARSER_CACHE_ENABLED = true;
@@ -1204,166 +1163,6 @@
         return (ps.getFlags() & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
     }
 
-    private static ParsedMainComponent componentInfoToComponent(
-            ComponentInfo info, ComponentResolverApi resolver, boolean isReceiver) {
-        if (info instanceof ActivityInfo) {
-            if (isReceiver) {
-                return resolver.getReceiver(info.getComponentName());
-            } else {
-                return resolver.getActivity(info.getComponentName());
-            }
-        } else if (info instanceof ServiceInfo) {
-            return resolver.getService(info.getComponentName());
-        } else {
-            // This shall never happen
-            throw new IllegalArgumentException("Unsupported component type");
-        }
-    }
-
-    /**
-     * Under the correct conditions, remove components if the intent has null action.
-     *
-     * `compat` and `snapshot` may be null when this method is called in ActivityManagerService
-     * CTS tests. The code in this method will properly avoid control flows using these arguments.
-     */
-    public static void applyNullActionBlocking(
-            @Nullable PlatformCompat compat, @Nullable PackageDataSnapshot snapshot,
-            List componentList, boolean isReceiver, Intent intent, int filterCallingUid) {
-        if (ActivityManager.canAccessUnexportedComponents(filterCallingUid)) return;
-
-        final Computer computer = (Computer) snapshot;
-        ComponentResolverApi resolver = null;
-
-        final boolean enforce = android.security.Flags.blockNullActionIntents()
-                && (compat == null || compat.isChangeEnabledByUidInternal(
-                        IntentFilter.BLOCK_NULL_ACTION_INTENTS, filterCallingUid));
-
-        for (int i = componentList.size() - 1; i >= 0; --i) {
-            boolean match = true;
-
-            Object c = componentList.get(i);
-            if (c instanceof ResolveInfo resolveInfo) {
-                if (computer == null) {
-                    // PackageManagerService is not started
-                    return;
-                }
-                if (resolver == null) {
-                    resolver = computer.getComponentResolver();
-                }
-                final ParsedMainComponent comp = componentInfoToComponent(
-                        resolveInfo.getComponentInfo(), resolver, isReceiver);
-                if (comp != null && !comp.getIntents().isEmpty() && intent.getAction() == null) {
-                    match = false;
-                }
-            } else if (c instanceof IntentFilter) {
-                if (intent.getAction() == null) {
-                    match = false;
-                }
-            }
-
-            if (!match) {
-                ActivityManagerUtils.logUnsafeIntentEvent(
-                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH,
-                        filterCallingUid, intent, null, enforce);
-                if (enforce) {
-                    Slog.w(TAG, "Blocking intent with null action: " + intent);
-                    componentList.remove(i);
-                }
-            }
-        }
-    }
-
-    public static void applyEnforceIntentFilterMatching(
-            PlatformCompat compat, PackageDataSnapshot snapshot,
-            List<ResolveInfo> resolveInfos, boolean isReceiver,
-            Intent intent, String resolvedType, int filterCallingUid) {
-        if (DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.get()) return;
-
-        // Do not enforce filter matching when the caller is system or root
-        if (ActivityManager.canAccessUnexportedComponents(filterCallingUid)) return;
-
-        final Computer computer = (Computer) snapshot;
-        final ComponentResolverApi resolver = computer.getComponentResolver();
-
-        final Printer logPrinter = DEBUG_INTENT_MATCHING
-                ? new LogPrinter(Log.VERBOSE, TAG, Log.LOG_ID_SYSTEM)
-                : null;
-
-        final boolean enforceMatch = android.security.Flags.enforceIntentFilterMatch()
-                && compat.isChangeEnabledByUidInternal(
-                        ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS, filterCallingUid);
-        final boolean blockNullAction = android.security.Flags.blockNullActionIntents()
-                && compat.isChangeEnabledByUidInternal(
-                        IntentFilter.BLOCK_NULL_ACTION_INTENTS, filterCallingUid);
-
-        for (int i = resolveInfos.size() - 1; i >= 0; --i) {
-            final ComponentInfo info = resolveInfos.get(i).getComponentInfo();
-
-            // Skip filter matching when the caller is targeting the same app
-            if (UserHandle.isSameApp(filterCallingUid, info.applicationInfo.uid)) {
-                continue;
-            }
-
-            final ParsedMainComponent comp = componentInfoToComponent(info, resolver, isReceiver);
-
-            if (comp == null || comp.getIntents().isEmpty()) {
-                continue;
-            }
-
-            Boolean match = null;
-
-            if (intent.getAction() == null) {
-                ActivityManagerUtils.logUnsafeIntentEvent(
-                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH,
-                        filterCallingUid, intent, resolvedType, enforceMatch && blockNullAction);
-                if (blockNullAction) {
-                    // Skip intent filter matching if blocking null action
-                    match = false;
-                }
-            }
-
-            if (match == null) {
-                // Check if any intent filter matches
-                for (int j = 0, size = comp.getIntents().size(); j < size; ++j) {
-                    IntentFilter intentFilter = comp.getIntents().get(j).getIntentFilter();
-                    if (IntentResolver.intentMatchesFilter(intentFilter, intent, resolvedType)) {
-                        match = true;
-                        break;
-                    }
-                }
-            }
-
-            // At this point, the value `match` has the following states:
-            // null : Intent does not match any intent filter
-            // false: Null action intent detected AND blockNullAction == true
-            // true : The intent matches at least one intent filter
-
-            if (match == null) {
-                ActivityManagerUtils.logUnsafeIntentEvent(
-                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH,
-                        filterCallingUid, intent, resolvedType, enforceMatch);
-                match = false;
-            }
-
-            if (!match) {
-                // All non-matching intents has to be marked accordingly
-                if (android.security.Flags.enforceIntentFilterMatch()) {
-                    intent.addExtendedFlags(Intent.EXTENDED_FLAG_FILTER_MISMATCH);
-                }
-                if (enforceMatch) {
-                    Slog.w(TAG, "Intent does not match component's intent filter: " + intent);
-                    Slog.w(TAG, "Access blocked: " + comp.getComponentName());
-                    if (DEBUG_INTENT_MATCHING) {
-                        Slog.v(TAG, "Component intent filters:");
-                        comp.getIntents().forEach(f -> f.getIntentFilter().dump(logPrinter, "  "));
-                        Slog.v(TAG, "-----------------------------");
-                    }
-                    resolveInfos.remove(i);
-                }
-            }
-        }
-    }
-
     /**
      * Do NOT use for intent resolution filtering. That should be done with
      * {@link DomainVerificationManagerInternal#filterToApprovedApp(Intent, List, int, Function)}.
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index c40563f..a876616 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -330,6 +330,8 @@
                     return runGetOemPermissions();
                 case "get-signature-permission-allowlist":
                     return runGetSignaturePermissionAllowlist();
+                case "get-shared-uid-allowlist":
+                    return runGetSharedUidAllowlist();
                 case "trim-caches":
                     return runTrimCaches();
                 case "create-user":
@@ -2944,6 +2946,9 @@
             case "system-ext":
                 allowlist = permissionAllowlist.getSystemExtSignatureAppAllowlist();
                 break;
+            case "apex":
+                allowlist = permissionAllowlist.getApexSignatureAppAllowlist();
+                break;
             default:
                 getErrPrintWriter().println("Error: unknown partition: " + partition);
                 return 1;
@@ -2970,6 +2975,20 @@
         return 0;
     }
 
+    private int runGetSharedUidAllowlist() {
+        final var allowlist = SystemConfig.getInstance().getPackageToSharedUidAllowList();
+        final var pw = getOutPrintWriter();
+        final var allowlistSize = allowlist.size();
+        for (var allowlistIndex = 0; allowlistIndex < allowlistSize; allowlistIndex++) {
+            final var packageName = allowlist.keyAt(allowlistIndex);
+            final var sharedUserName = allowlist.valueAt(allowlistIndex);
+            pw.print(packageName);
+            pw.print(" ");
+            pw.println(sharedUserName);
+        }
+        return 0;
+    }
+
     private int runTrimCaches() throws RemoteException {
         String size = getNextArg();
         if (size == null) {
@@ -4907,7 +4926,10 @@
         pw.println("");
         pw.println("  get-signature-permission-allowlist PARTITION");
         pw.println("    Prints the signature permission allowlist for a partition.");
-        pw.println("    PARTITION is one of system, vendor, product and system-ext");
+        pw.println("    PARTITION is one of system, vendor, product, system-ext and apex");
+        pw.println("");
+        pw.println("  get-shared-uid-allowlist");
+        pw.println("    Prints the shared UID allowlist.");
         pw.println("");
         pw.println("  trim-caches DESIRED_FREE_SPACE [internal|UUID]");
         pw.println("    Trim cache files to reach the given free space.");
diff --git a/services/core/java/com/android/server/pm/PackageManagerTracedLock.java b/services/core/java/com/android/server/pm/PackageManagerTracedLock.java
index 303b8b9..d9604b3c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerTracedLock.java
+++ b/services/core/java/com/android/server/pm/PackageManagerTracedLock.java
@@ -16,6 +16,7 @@
 
 package com.android.server.pm;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.util.Slog;
 
@@ -25,32 +26,77 @@
  * This is a unique class that is used as the PackageManager lock.  It can be targeted for lock
  * injection, similar to {@link ActivityManagerGlobalLock}.
  */
-public class PackageManagerTracedLock extends ReentrantLock {
+public class PackageManagerTracedLock implements AutoCloseable {
     private static final String TAG = "PackageManagerTracedLock";
     private static final boolean DEBUG = false;
-    @Nullable private final String mLockName;
+    private @NonNull final RawLock mLock;
 
     public PackageManagerTracedLock(@Nullable String lockName) {
-        mLockName = lockName;
+        mLock = new RawLock(lockName);
     }
 
     public PackageManagerTracedLock() {
         this(null);
     }
 
-    @Override
-    public void lock() {
-        super.lock();
-        if (DEBUG && mLockName != null) {
-            Slog.i(TAG, "locked " + mLockName);
-        }
+    /**
+     * Use this method to acquire the lock. Use it with try-with-resources to make sure the lock is
+     * released afterwards. Example usage:
+     * <pre>
+     * PackageManagerTracedLock myInstallLock = new PackageManagerTracedLock();
+     * try (PackageManagerTracedLock installLock = myInstallLock.acquireLock()) {
+     *     // do stuff under lock
+     * }
+     * </pre>
+     */
+    public PackageManagerTracedLock acquireLock() {
+        mLock.lock();
+        return this;
     }
 
+    /**
+     * Obtain the raw lock for fine control of lock state. Example usage:
+     * <pre>
+     * PackageManagerTracedLock myInstallLock = new PackageManagerTracedLock();
+     * PackageManagerTracedLock.RawLock rawLock = myInstallLock.getRawLock();
+     * rawLock.lock();
+     * // do stuff under lock
+     * rawLock.unlock();
+     * </pre>
+     */
+    public RawLock getRawLock() {
+        return mLock;
+    }
+
+    /**
+     * Release the lock if it's held by the current thread.
+     * If you use {@link #acquireLock()} using try-with-resources, there's no need to call this
+     * method explicitly.
+     */
     @Override
-    public void unlock() {
-        super.unlock();
-        if (DEBUG && mLockName != null) {
-            Slog.i(TAG, "unlocked " + mLockName);
+    public void close() {
+        mLock.unlock();
+    }
+
+    public static class RawLock extends ReentrantLock {
+        @Nullable private final String mLockName;
+        RawLock(@Nullable String lockName) {
+            mLockName = lockName;
+        }
+        @Override
+        public void lock() {
+            super.lock();
+            if (DEBUG && mLockName != null) {
+                Slog.i(TAG, "locked " + mLockName);
+            }
+        }
+
+        @Override
+        public void unlock() {
+            super.unlock();
+            if (DEBUG && mLockName != null) {
+                Slog.i(TAG, "unlocked " + mLockName);
+            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/pm/RemovePackageHelper.java b/services/core/java/com/android/server/pm/RemovePackageHelper.java
index 02bd3cc..2f2c451 100644
--- a/services/core/java/com/android/server/pm/RemovePackageHelper.java
+++ b/services/core/java/com/android/server/pm/RemovePackageHelper.java
@@ -83,7 +83,7 @@
     }
 
     public void removeCodePath(File codePath) {
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             removeCodePathLI(codePath);
         }
     }
@@ -133,7 +133,7 @@
 
     // Used for system apps only
     public void removePackage(AndroidPackage pkg, boolean chatty) {
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             removePackageLI(pkg, chatty);
         }
     }
@@ -356,7 +356,7 @@
 
     // Called to clean up disabled system packages
     public void removePackageData(final PackageSetting deletedPs, @NonNull int[] allUserHandles) {
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             removePackageDataLIF(deletedPs, UserHandle.USER_ALL, allUserHandles,
                     new PackageRemovedInfo(), /* flags= */ 0, /* writeSettings= */ false);
         }
@@ -488,7 +488,7 @@
 
     void cleanUpResources(@Nullable String packageName, @Nullable File codeFile,
                           @Nullable String[] instructionSets) {
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             cleanUpResourcesLI(codeFile, instructionSets);
         }
         if (packageName == null) {
@@ -528,7 +528,7 @@
         final File codeFile = new File(Environment.getDataAppDirectory(volumeUuid), toPathName);
         Slog.d(TAG, "Cleaning up " + packageName + " on " + volumeUuid);
         final int[] userIds = mPm.mUserManager.getUserIds();
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             // Clean up both app data and code
             // All package moves are frozen until finished
 
diff --git a/services/core/java/com/android/server/pm/ResolveIntentHelper.java b/services/core/java/com/android/server/pm/ResolveIntentHelper.java
index 309a448..69490a8 100644
--- a/services/core/java/com/android/server/pm/ResolveIntentHelper.java
+++ b/services/core/java/com/android/server/pm/ResolveIntentHelper.java
@@ -18,7 +18,6 @@
 
 import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
 
-import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH;
 import static com.android.server.pm.PackageManagerService.DEBUG_INSTANT;
 import static com.android.server.pm.PackageManagerService.DEBUG_INTENT_MATCHING;
 import static com.android.server.pm.PackageManagerService.TAG;
@@ -26,8 +25,6 @@
 import android.annotation.NonNull;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
-import android.app.ActivityManagerInternal;
-import android.app.IUnsafeIntentStrictModeCallback;
 import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -45,7 +42,6 @@
 import android.content.pm.ResolveInfo;
 import android.os.Binder;
 import android.os.Bundle;
-import android.os.Handler;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.Trace;
@@ -56,9 +52,6 @@
 
 import com.android.internal.app.ResolverActivity;
 import com.android.internal.util.ArrayUtils;
-import com.android.server.LocalServices;
-import com.android.server.am.ActivityManagerService;
-import com.android.server.am.ActivityManagerUtils;
 import com.android.server.compat.PlatformCompat;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageStateInternal;
@@ -89,8 +82,6 @@
     private final Supplier<ResolveInfo> mResolveInfoSupplier;
     @NonNull
     private final Supplier<ActivityInfo> mInstantAppInstallerActivitySupplier;
-    @NonNull
-    private final Handler mHandler;
 
     ResolveIntentHelper(@NonNull Context context,
             @NonNull PreferredActivityHelper preferredActivityHelper,
@@ -98,8 +89,7 @@
             @NonNull DomainVerificationManagerInternal domainVerificationManager,
             @NonNull UserNeedsBadgingCache userNeedsBadgingCache,
             @NonNull Supplier<ResolveInfo> resolveInfoSupplier,
-            @NonNull Supplier<ActivityInfo> instantAppInstallerActivitySupplier,
-            @NonNull Handler handler) {
+            @NonNull Supplier<ActivityInfo> instantAppInstallerActivitySupplier) {
         mContext = context;
         mPreferredActivityHelper = preferredActivityHelper;
         mPlatformCompat = platformCompat;
@@ -108,47 +98,6 @@
         mUserNeedsBadging = userNeedsBadgingCache;
         mResolveInfoSupplier = resolveInfoSupplier;
         mInstantAppInstallerActivitySupplier = instantAppInstallerActivitySupplier;
-        mHandler = handler;
-    }
-
-    private static void filterNonExportedComponents(Intent intent, int filterCallingUid,
-            int callingPid, List<ResolveInfo> query, PlatformCompat platformCompat,
-            String resolvedType, Computer computer, Handler handler) {
-        if (query == null
-                || intent.getPackage() != null
-                || intent.getComponent() != null
-                || ActivityManager.canAccessUnexportedComponents(filterCallingUid)) {
-            return;
-        }
-        AndroidPackage caller = computer.getPackage(filterCallingUid);
-        String callerPackage = caller == null ? "Not specified" : caller.getPackageName();
-        ActivityManagerInternal activityManagerInternal = LocalServices
-                .getService(ActivityManagerInternal.class);
-        final IUnsafeIntentStrictModeCallback callback = activityManagerInternal
-                .getRegisteredStrictModeCallback(callingPid);
-        for (int i = query.size() - 1; i >= 0; i--) {
-            if (!query.get(i).getComponentInfo().exported) {
-                boolean hasToBeExportedToMatch = platformCompat.isChangeEnabledByUid(
-                        ActivityManagerService.IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS,
-                        filterCallingUid);
-                ActivityManagerUtils.logUnsafeIntentEvent(
-                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH,
-                        filterCallingUid, intent, resolvedType, hasToBeExportedToMatch);
-                if (callback != null) {
-                    handler.post(() -> {
-                        try {
-                            callback.onImplicitIntentMatchedInternalComponent(intent.cloneFilter());
-                        } catch (RemoteException e) {
-                            activityManagerInternal.unregisterStrictModeCallback(callingPid);
-                        }
-                    });
-                }
-                if (!hasToBeExportedToMatch) {
-                    return;
-                }
-                query.remove(i);
-            }
-        }
     }
 
     /**
@@ -159,22 +108,7 @@
     public ResolveInfo resolveIntentInternal(Computer computer, Intent intent, String resolvedType,
             @PackageManager.ResolveInfoFlagsBits long flags,
             @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId,
-            boolean resolveForStart, int filterCallingUid) {
-        return resolveIntentInternal(computer, intent, resolvedType, flags,
-                privateResolveFlags, userId, resolveForStart, filterCallingUid, false, 0);
-    }
-
-    /**
-     * Normally instant apps can only be resolved when they're visible to the caller.
-     * However, if {@code resolveForStart} is {@code true}, all instant apps are visible
-     * since we need to allow the system to start any installed application.
-     * Allows picking exported components only.
-     */
-    public ResolveInfo resolveIntentInternal(Computer computer, Intent intent, String resolvedType,
-            @PackageManager.ResolveInfoFlagsBits long flags,
-            @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId,
-            boolean resolveForStart, int filterCallingUid, boolean exportedComponentsOnly,
-            int callingPid) {
+            boolean resolveForStart, int filterCallingUid, int callingPid) {
         try {
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "resolveIntent");
 
@@ -188,14 +122,15 @@
 
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "queryIntentActivities");
             final List<ResolveInfo> query = computer.queryIntentActivitiesInternal(intent,
-                    resolvedType, flags, privateResolveFlags, filterCallingUid, userId,
-                    resolveForStart, true /*allowDynamicSplits*/);
-            if (exportedComponentsOnly) {
-                filterNonExportedComponents(intent, filterCallingUid, callingPid, query,
-                        mPlatformCompat, resolvedType, computer, mHandler);
-            }
+                    resolvedType, flags, privateResolveFlags, filterCallingUid, callingPid,
+                    userId, resolveForStart, /*allowDynamicSplits*/ true);
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
 
+            var args = new SaferIntentUtils.IntentArgs(intent, resolvedType,
+                    false /* isReceiver */, resolveForStart, filterCallingUid, callingPid);
+            args.platformCompat = mPlatformCompat;
+            SaferIntentUtils.filterNonExportedComponents(args, query);
+
             final boolean queryMayBeFiltered =
                     UserHandle.getAppId(filterCallingUid) >= Process.FIRST_APPLICATION_UID
                             && !resolveForStart;
@@ -331,6 +266,7 @@
             throws RemoteException {
         Objects.requireNonNull(packageName);
         final int callingUid = Binder.getCallingUid();
+        final int callingPid = Binder.getCallingPid();
         computer.enforceCrossUserPermission(callingUid, userId, false /* requireFullPermission */,
                 false /* checkShell */, "get launch intent sender for package");
         final int packageUid = computer.getPackageUid(callingPackage, 0 /* flags */, userId);
@@ -346,17 +282,17 @@
         intentToResolve.setPackage(packageName);
         final ContentResolver contentResolver = mContext.getContentResolver();
         String resolvedType = intentToResolve.resolveTypeIfNeeded(contentResolver);
-        List<ResolveInfo> ris = computer.queryIntentActivitiesInternal(intentToResolve, resolvedType,
-                0 /* flags */, 0 /* privateResolveFlags */, callingUid, userId,
-                true /* resolveForStart */, false /* allowDynamicSplits */);
+        List<ResolveInfo> ris = computer.queryIntentActivitiesInternal(intentToResolve,
+                resolvedType, 0 /* flags */, 0 /* privateResolveFlags */, callingUid, callingPid,
+                userId,  /* resolveForStart */ true,  /* allowDynamicSplits */false);
         if (ris == null || ris.size() <= 0) {
             intentToResolve.removeCategory(Intent.CATEGORY_INFO);
             intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
             intentToResolve.setPackage(packageName);
             resolvedType = intentToResolve.resolveTypeIfNeeded(contentResolver);
             ris = computer.queryIntentActivitiesInternal(intentToResolve, resolvedType,
-                    0 /* flags */, 0 /* privateResolveFlags */, callingUid, userId,
-                    true /* resolveForStart */, false /* allowDynamicSplits */);
+                    0 /* flags */, 0 /* privateResolveFlags */, callingUid, callingPid,
+                    userId,  /* resolveForStart */ true,  /* allowDynamicSplits */false);
         }
 
         final Intent intent = new Intent(intentToResolve);
@@ -390,16 +326,17 @@
             String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId,
             int queryingUid) {
         return queryIntentReceiversInternal(computer, intent, resolvedType, flags, userId,
-                queryingUid, false);
+                queryingUid, Process.INVALID_PID, false);
     }
 
     /**
-     * @see PackageManagerInternal#queryIntentReceivers(Intent, String, long, int, int, boolean)
+     * @see PackageManagerInternal#queryIntentReceivers
      */
     @NonNull
-    public List<ResolveInfo> queryIntentReceiversInternal(Computer computer, Intent intent,
-            String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId,
-            int filterCallingUid, boolean forSend) {
+    public List<ResolveInfo> queryIntentReceiversInternal(
+            Computer computer, Intent intent, String resolvedType,
+            @PackageManager.ResolveInfoFlagsBits long flags, int userId,
+            int filterCallingUid, int callingPid, boolean forSend) {
         if (!mUserManager.exists(userId)) return Collections.emptyList();
         // The identity used to filter the receiver components
         final int queryingUid = forSend ? Process.SYSTEM_UID : filterCallingUid;
@@ -421,6 +358,12 @@
         }
         final ComponentResolverApi componentResolver = computer.getComponentResolver();
         List<ResolveInfo> list = Collections.emptyList();
+
+        var args = new SaferIntentUtils.IntentArgs(intent, resolvedType,
+                true /* isReceiver */, forSend, filterCallingUid, callingPid);
+        args.platformCompat = mPlatformCompat;
+        args.snapshot = computer;
+
         if (comp != null) {
             final ActivityInfo ai = computer.getReceiverInfo(comp, flags, userId);
             if (ai != null) {
@@ -457,9 +400,7 @@
                     ri.activityInfo = ai;
                     list = new ArrayList<>(1);
                     list.add(ri);
-                    PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                            mPlatformCompat, computer, list, true, intent,
-                            resolvedType, filterCallingUid);
+                    SaferIntentUtils.enforceIntentFilterMatching(args, list);
                 }
             }
         } else {
@@ -479,15 +420,13 @@
                     list = result;
                 }
             }
-            PackageManagerServiceUtils.applyNullActionBlocking(
-                    mPlatformCompat, computer, list, true, intent, filterCallingUid);
+            SaferIntentUtils.blockNullAction(args, list);
         }
 
         if (originalIntent != null) {
             // We also have to ensure all components match the original intent
-            PackageManagerServiceUtils.applyEnforceIntentFilterMatching(
-                    mPlatformCompat, computer,
-                    list, true, originalIntent, resolvedType, filterCallingUid);
+            args.intent = originalIntent;
+            SaferIntentUtils.enforceIntentFilterMatching(args, list);
         }
 
         return computer.applyPostResolutionFilter(list, instantAppPkgName, false, queryingUid,
@@ -495,14 +434,16 @@
     }
 
 
-    public ResolveInfo resolveServiceInternal(@NonNull Computer computer, Intent intent,
+    public ResolveInfo resolveServiceInternal(
+            @NonNull Computer computer, Intent intent,
             String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId,
-            int callingUid) {
+            int callingUid, int callingPid, boolean resolveForStart) {
         if (!mUserManager.exists(userId)) return null;
         flags = computer.updateFlagsForResolve(flags, userId, callingUid, false /*includeInstantApps*/,
                 false /* isImplicitImageCaptureIntentAndNotSetByDpc */);
         List<ResolveInfo> query = computer.queryIntentServicesInternal(
-                intent, resolvedType, flags, userId, callingUid, false /*includeInstantApps*/);
+                intent, resolvedType, flags, userId, callingUid, callingPid,
+                /*includeInstantApps*/ false, resolveForStart);
         if (query != null) {
             if (query.size() >= 1) {
                 // If there is more than one service with the same priority,
@@ -705,7 +646,8 @@
                 if (comp == null) {
                     ri = resolveIntentInternal(computer, sintent,
                             specificTypes != null ? specificTypes[i] : null, flags,
-                            0 /*privateResolveFlags*/, userId, false, Binder.getCallingUid());
+                            0 /*privateResolveFlags*/, userId, false,
+                            Binder.getCallingUid(), Binder.getCallingPid());
                     if (ri == null) {
                         continue;
                     }
diff --git a/services/core/java/com/android/server/pm/SaferIntentUtils.java b/services/core/java/com/android/server/pm/SaferIntentUtils.java
new file mode 100644
index 0000000..8175321
--- /dev/null
+++ b/services/core/java/com/android/server/pm/SaferIntentUtils.java
@@ -0,0 +1,397 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.pm;
+
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH;
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH;
+import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH;
+import static com.android.server.pm.PackageManagerService.DEBUG_INTENT_MATCHING;
+import static com.android.server.pm.PackageManagerService.TAG;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager;
+import android.app.ActivityManagerInternal;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.Disabled;
+import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.Overridable;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.Build;
+import android.os.Process;
+import android.os.UserHandle;
+import android.security.Flags;
+import android.util.Log;
+import android.util.LogPrinter;
+import android.util.Printer;
+import android.util.Slog;
+
+import com.android.internal.pm.pkg.component.ParsedMainComponent;
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.IntentResolver;
+import com.android.server.LocalServices;
+import com.android.server.am.BroadcastFilter;
+import com.android.server.compat.PlatformCompat;
+import com.android.server.pm.resolution.ComponentResolverApi;
+import com.android.server.pm.snapshot.PackageDataSnapshot;
+
+import java.util.List;
+
+/**
+ * The way Safer Intent is implemented is to add several "hooks" into PMS's intent
+ * resolution process, and in some cases, AMS's runtime receiver resolution. Think of
+ * these methods as resolution "passes", where they post-process the resolved component list.
+ * <p>
+ * Here are the 4 main hooking entry points for each component type:
+ * <ul>
+ *     <li>Activity: {@link ComputerEngine#queryIntentActivitiesInternal} or
+ *     {@link ResolveIntentHelper#resolveIntentInternal}</li>
+ *     <li>Service: {@link Computer#queryIntentServicesInternal}</li>
+ *     <li>Static BroadcastReceivers: {@link ResolveIntentHelper#queryIntentReceiversInternal}</li>
+ *     <li>Runtime BroadcastReceivers:
+ *     {@link com.android.server.am.ActivityManagerService#broadcastIntentLockedTraced}</li>
+ * </ul>
+ */
+public class SaferIntentUtils {
+
+    // This is a hack to workaround b/240373119; a proper fix should be implemented instead.
+    public static final ThreadLocal<Boolean> DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS =
+            ThreadLocal.withInitial(() -> false);
+
+    /**
+     * Apps targeting Android U and above will need to export components in order to invoke them
+     * through implicit intents.
+     * <p>
+     * If a component is not exported and invoked, it will be removed from the list of receivers.
+     * This applies specifically to activities and broadcasts.
+     */
+    @ChangeId
+    @Overridable
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.TIRAMISU)
+    private static final long IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS = 229362273;
+
+    /**
+     * Intents sent from apps enabling this feature will stop resolving to components with
+     * non matching intent filters, even when explicitly setting a component name, unless the
+     * target components are in the same app as the calling app.
+     * <p>
+     * When an app registers an exported component in its manifest and adds &lt;intent-filter&gt;s,
+     * the component can be started by any intent - even those that do not match the intent filter.
+     * This has proven to be something that many developers find counterintuitive.
+     * Without checking the intent when the component is started, in some circumstances this can
+     * allow 3P apps to trigger internal-only functionality.
+     */
+    @ChangeId
+    @Overridable
+    @Disabled
+    private static final long ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS = 161252188;
+
+    private static ParsedMainComponent infoToComponent(
+            ComponentInfo info, ComponentResolverApi resolver, boolean isReceiver) {
+        if (info instanceof ActivityInfo) {
+            if (isReceiver) {
+                return resolver.getReceiver(info.getComponentName());
+            } else {
+                return resolver.getActivity(info.getComponentName());
+            }
+        } else if (info instanceof ServiceInfo) {
+            return resolver.getService(info.getComponentName());
+        } else {
+            // This shall never happen
+            throw new IllegalArgumentException("Unsupported component type");
+        }
+    }
+
+    /**
+     * Helper method to report an unsafe intent event.
+     */
+    public static void reportUnsafeIntentEvent(
+            int event, int callingUid, int callingPid,
+            Intent intent, String resolvedType, boolean blocked) {
+        String[] categories = intent.getCategories() == null ? new String[0]
+                : intent.getCategories().toArray(String[]::new);
+        String component = intent.getComponent() == null ? null
+                : intent.getComponent().flattenToString();
+        FrameworkStatsLog.write(FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED,
+                event,
+                callingUid,
+                component,
+                intent.getPackage(),
+                intent.getAction(),
+                categories,
+                resolvedType,
+                intent.getScheme(),
+                blocked);
+        LocalServices.getService(ActivityManagerInternal.class)
+                .triggerUnsafeIntentStrictMode(callingPid, event, intent);
+    }
+
+    /**
+     * All the relevant information about an intent resolution transaction.
+     */
+    public static class IntentArgs {
+
+        /* Several system_server components */
+
+        @Nullable
+        public PlatformCompat platformCompat;
+        @Nullable
+        public PackageDataSnapshot snapshot;
+
+        /* Information about the intent itself */
+
+        public Intent intent;
+        public String resolvedType;
+        public boolean isReceiver;
+
+        /* Information about the caller */
+
+        // Whether this intent resolution transaction is actually for starting a component and
+        // not only for querying matching components.
+        // This information is required because we only want to log and trigger strict mode
+        // violations on unsafe intent events when the caller actually wants to start something.
+        public boolean resolveForStart;
+        public int callingUid;
+        // When resolveForStart is false, callingPid does not matter as this is only used
+        // to lookup the strict mode violation callback.
+        public int callingPid;
+
+        public IntentArgs(
+                Intent intent, String resolvedType, boolean isReceiver,
+                boolean resolveForStart, int callingUid, int callingPid) {
+            this.isReceiver = isReceiver;
+            this.intent = intent;
+            this.resolvedType = resolvedType;
+            this.resolveForStart = resolveForStart;
+            this.callingUid = callingUid;
+            this.callingPid = resolveForStart ? callingPid : Process.INVALID_PID;
+        }
+
+        boolean isChangeEnabled(long changeId) {
+            return platformCompat == null || platformCompat.isChangeEnabledByUidInternal(
+                    changeId, callingUid);
+        }
+
+        void reportEvent(int event, boolean blocked) {
+            if (resolveForStart) {
+                SaferIntentUtils.reportUnsafeIntentEvent(
+                        event, callingUid, callingPid, intent, resolvedType, blocked);
+            }
+        }
+    }
+
+    /**
+     * Remove components if the intent has null action.
+     * <p>
+     * Because blocking null action applies to all resolution cases, it has to be hooked
+     * in all 4 locations. Note, for component intent resolution in Activity, Service,
+     * and static BroadcastReceivers, null action blocking is actually handled within
+     * {@link #enforceIntentFilterMatching}; we only need to handle it in this method when
+     * the intent does not specify an explicit component name.
+     * <p>
+     * `compat` and `snapshot` may be null when this method is called in ActivityManagerService
+     * CTS tests. The code in this method shall properly avoid control flows using these arguments.
+     */
+    public static void blockNullAction(IntentArgs args, List componentList) {
+        if (ActivityManager.canAccessUnexportedComponents(args.callingUid)) return;
+
+        final Computer computer = (Computer) args.snapshot;
+        ComponentResolverApi resolver = null;
+
+        final boolean enforce = Flags.blockNullActionIntents()
+                && args.isChangeEnabled(IntentFilter.BLOCK_NULL_ACTION_INTENTS);
+
+        for (int i = componentList.size() - 1; i >= 0; --i) {
+            boolean match = true;
+
+            Object c = componentList.get(i);
+            if (c instanceof ResolveInfo resolveInfo) {
+                if (computer == null) {
+                    // PackageManagerService is not started
+                    return;
+                }
+                if (resolver == null) {
+                    resolver = computer.getComponentResolver();
+                }
+                final ParsedMainComponent comp = infoToComponent(
+                        resolveInfo.getComponentInfo(), resolver, args.isReceiver);
+                if (!comp.getIntents().isEmpty() && args.intent.getAction() == null) {
+                    match = false;
+                }
+            } else if (c instanceof IntentFilter) {
+                if (args.intent.getAction() == null) {
+                    match = false;
+                }
+            }
+
+            if (!match) {
+                args.reportEvent(
+                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH, enforce);
+                if (enforce) {
+                    Slog.w(TAG, "Blocking intent with null action: " + args.intent);
+                    componentList.remove(i);
+                }
+            }
+        }
+    }
+
+    /**
+     * Remove ResolveInfos that does not match the provided component intent.
+     * <p>
+     * Component intents cannot refer to a runtime registered BroadcastReceiver, so we only
+     * need to hook into the rest of the 3 entry points. Please note, this method also
+     * handles null action blocking for all component intents; do not go through an additional
+     * {@link #blockNullAction} pass!
+     */
+    public static void enforceIntentFilterMatching(
+            IntentArgs args, List<ResolveInfo> resolveInfos) {
+        if (DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.get()) return;
+
+        // Do not enforce filter matching when the caller is system or root
+        if (ActivityManager.canAccessUnexportedComponents(args.callingUid)) return;
+
+        final Computer computer = (Computer) args.snapshot;
+        final ComponentResolverApi resolver = computer.getComponentResolver();
+
+        final Printer logPrinter = DEBUG_INTENT_MATCHING
+                ? new LogPrinter(Log.VERBOSE, TAG, Log.LOG_ID_SYSTEM)
+                : null;
+
+        final boolean enforceMatch = Flags.enforceIntentFilterMatch()
+                && args.isChangeEnabled(ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS);
+        final boolean blockNullAction = Flags.blockNullActionIntents()
+                && args.isChangeEnabled(IntentFilter.BLOCK_NULL_ACTION_INTENTS);
+
+        for (int i = resolveInfos.size() - 1; i >= 0; --i) {
+            final ComponentInfo info = resolveInfos.get(i).getComponentInfo();
+
+            // Skip filter matching when the caller is targeting the same app
+            if (UserHandle.isSameApp(args.callingUid, info.applicationInfo.uid)) {
+                continue;
+            }
+
+            final ParsedMainComponent comp = infoToComponent(info, resolver, args.isReceiver);
+
+            if (comp == null || comp.getIntents().isEmpty()) {
+                continue;
+            }
+
+            Boolean match = null;
+
+            if (args.intent.getAction() == null) {
+                args.reportEvent(
+                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NULL_ACTION_MATCH,
+                        enforceMatch && blockNullAction);
+                if (blockNullAction) {
+                    // Skip intent filter matching if blocking null action
+                    match = false;
+                }
+            }
+
+            if (match == null) {
+                // Check if any intent filter matches
+                for (int j = 0, size = comp.getIntents().size(); j < size; ++j) {
+                    IntentFilter intentFilter = comp.getIntents().get(j).getIntentFilter();
+                    if (IntentResolver.intentMatchesFilter(
+                            intentFilter, args.intent, args.resolvedType)) {
+                        match = true;
+                        break;
+                    }
+                }
+            }
+
+            // At this point, the value `match` has the following states:
+            // null : Intent does not match any intent filter
+            // false: Null action intent detected AND blockNullAction == true
+            // true : The intent matches at least one intent filter
+
+            if (match == null) {
+                args.reportEvent(
+                        UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__EXPLICIT_INTENT_FILTER_UNMATCH,
+                        enforceMatch);
+                match = false;
+            }
+
+            if (!match) {
+                // All non-matching intents has to be marked accordingly
+                if (Flags.enforceIntentFilterMatch()) {
+                    args.intent.addExtendedFlags(Intent.EXTENDED_FLAG_FILTER_MISMATCH);
+                }
+                if (enforceMatch) {
+                    Slog.w(TAG, "Intent does not match component's intent filter: " + args.intent);
+                    Slog.w(TAG, "Access blocked: " + comp.getComponentName());
+                    if (DEBUG_INTENT_MATCHING) {
+                        Slog.v(TAG, "Component intent filters:");
+                        comp.getIntents().forEach(f -> f.getIntentFilter().dump(logPrinter, "  "));
+                        Slog.v(TAG, "-----------------------------");
+                    }
+                    resolveInfos.remove(i);
+                }
+            }
+        }
+    }
+
+    /**
+     * Filter non-exported components from the componentList if intent is implicit.
+     * <p>
+     * Implicit intents cannot be used to start Services since API 21+.
+     * Implicit broadcasts cannot be delivered to static BroadcastReceivers since API 25+.
+     * So we only need to hook into Activity and runtime BroadcastReceiver intent resolution.
+     */
+    public static void filterNonExportedComponents(IntentArgs args, List componentList) {
+        if (componentList == null
+                || args.intent.getPackage() != null
+                || args.intent.getComponent() != null
+                || ActivityManager.canAccessUnexportedComponents(args.callingUid)) {
+            return;
+        }
+
+        final boolean enforce =
+                args.isChangeEnabled(IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS);
+        boolean violated = false;
+
+        for (int i = componentList.size() - 1; i >= 0; i--) {
+            Object c = componentList.get(i);
+            if (c instanceof ResolveInfo resolveInfo) {
+                if (resolveInfo.getComponentInfo().exported) {
+                    continue;
+                }
+            } else if (c instanceof BroadcastFilter broadcastFilter) {
+                if (broadcastFilter.exported) {
+                    continue;
+                }
+            } else {
+                continue;
+            }
+            violated = true;
+            if (!enforce) {
+                break;
+            }
+            componentList.remove(i);
+        }
+
+        if (violated) {
+            args.reportEvent(
+                    UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH,
+                    enforce);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 8d6d774..3956552 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -934,6 +934,7 @@
             ret.setTargetSdkVersion(p.getTargetSdkVersion());
             ret.setRestrictUpdateHash(p.getRestrictUpdateHash());
             ret.setScannedAsStoppedSystemApp(p.isScannedAsStoppedSystemApp());
+            ret.setInstallSource(p.getInstallSource());
         }
         mDisabledSysPackages.remove(name);
         return ret;
diff --git a/services/core/java/com/android/server/pm/SharedLibrariesImpl.java b/services/core/java/com/android/server/pm/SharedLibrariesImpl.java
index ec8af2e..929fccc 100644
--- a/services/core/java/com/android/server/pm/SharedLibrariesImpl.java
+++ b/services/core/java/com/android/server/pm/SharedLibrariesImpl.java
@@ -729,7 +729,7 @@
                     if (!pkgSetting.isSystem() || pkgSetting.isUpdatedSystemApp()) {
                         final int flags = pkgSetting.isUpdatedSystemApp()
                                 ? PackageManager.DELETE_KEEP_DATA : 0;
-                        synchronized (mPm.mInstallLock) {
+                        try (var installLock = mPm.mInstallLock.acquireLock()) {
                             mDeletePackageHelper.deletePackageLIF(pkg.getPackageName(), null, true,
                                     mPm.mUserManager.getUserIds(), flags, new PackageRemovedInfo(),
                                     true);
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 1cd77ff..78d8002 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -320,10 +320,10 @@
 
     private final Handler mHandler;
 
-    @GuardedBy("mServiceLock")
+    @GuardedBy("itself")
     private final ArrayList<ShortcutChangeListener> mListeners = new ArrayList<>(1);
 
-    @GuardedBy("mServiceLock")
+    @GuardedBy("itself")
     private final ArrayList<LauncherApps.ShortcutChangeCallback> mShortcutChangeCallbacks =
             new ArrayList<>(1);
 
@@ -1847,7 +1847,9 @@
                         return;
                     }
 
-                    copy = new ArrayList<>(mListeners);
+                    synchronized (mListeners) {
+                        copy = new ArrayList<>(mListeners);
+                    }
                 }
                 // Note onShortcutChanged() needs to be called with the system service permissions.
                 for (int i = copy.size() - 1; i >= 0; i--) {
@@ -1872,8 +1874,9 @@
                     if (!isUserUnlockedL(userId)) {
                         return;
                     }
-
-                    copy = new ArrayList<>(mShortcutChangeCallbacks);
+                    synchronized (mShortcutChangeCallbacks) {
+                        copy = new ArrayList<>(mShortcutChangeCallbacks);
+                    }
                 }
                 for (int i = copy.size() - 1; i >= 0; i--) {
                     if (!CollectionUtils.isEmpty(changedList)) {
@@ -3429,7 +3432,7 @@
 
         @Override
         public void addListener(@NonNull ShortcutChangeListener listener) {
-            synchronized (mServiceLock) {
+            synchronized (mListeners) {
                 mListeners.add(Objects.requireNonNull(listener));
             }
         }
@@ -3437,7 +3440,7 @@
         @Override
         public void addShortcutChangeCallback(
                 @NonNull LauncherApps.ShortcutChangeCallback callback) {
-            synchronized (mServiceLock) {
+            synchronized (mShortcutChangeCallbacks) {
                 mShortcutChangeCallbacks.add(Objects.requireNonNull(callback));
             }
         }
diff --git a/services/core/java/com/android/server/pm/StorageEventHelper.java b/services/core/java/com/android/server/pm/StorageEventHelper.java
index cef3244..951986f 100644
--- a/services/core/java/com/android/server/pm/StorageEventHelper.java
+++ b/services/core/java/com/android/server/pm/StorageEventHelper.java
@@ -156,7 +156,7 @@
             freezers.add(mPm.freezePackage(ps.getPackageName(), UserHandle.USER_ALL,
                     "loadPrivatePackagesInner", ApplicationExitInfo.REASON_OTHER,
                     null /* request */));
-            synchronized (mPm.mInstallLock) {
+            try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
                 final AndroidPackage pkg;
                 try {
                     pkg = mPm.initPackageTracedLI(
@@ -194,7 +194,7 @@
 
             try {
                 sm.prepareUserStorage(volumeUuid, user.id, flags);
-                synchronized (mPm.mInstallLock) {
+                try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
                     appDataHelper.reconcileAppsDataLI(volumeUuid, user.id, flags,
                             true /* migrateAppData */);
                 }
@@ -247,7 +247,7 @@
 
         final int[] userIds = mPm.mUserManager.getUserIds();
         final ArrayList<AndroidPackage> unloaded = new ArrayList<>();
-        synchronized (mPm.mInstallLock) {
+        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
             synchronized (mPm.mLock) {
                 final List<? extends PackageStateInternal> packages =
                         mPm.mSettings.getVolumePackagesLPr(volumeUuid);
diff --git a/services/core/java/com/android/server/pm/UserDataPreparer.java b/services/core/java/com/android/server/pm/UserDataPreparer.java
index ef32485..041f2d3 100644
--- a/services/core/java/com/android/server/pm/UserDataPreparer.java
+++ b/services/core/java/com/android/server/pm/UserDataPreparer.java
@@ -66,7 +66,7 @@
      * Prepare storage areas for given user on all mounted devices.
      */
     void prepareUserData(UserInfo userInfo, int flags) {
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
             final StorageManager storage = mContext.getSystemService(StorageManager.class);
             /*
              * Internal storage must be prepared before adoptable storage, since the user's volume
@@ -157,7 +157,7 @@
      * Destroy storage areas for given user on all mounted devices.
      */
     void destroyUserData(int userId, int flags) {
-        synchronized (mInstallLock) {
+        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
             final StorageManager storage = mContext.getSystemService(StorageManager.class);
             /*
              * Volume destruction order isn't really important, but to avoid any weird issues we
@@ -262,7 +262,7 @@
             }
 
             if (destroyUser) {
-                synchronized (mInstallLock) {
+                try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                     destroyUserDataLI(volumeUuid, userId,
                             StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE);
                 }
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 29acbcd..db94d0e 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -281,6 +281,10 @@
     private static final String RESTRICTIONS_FILE_PREFIX = "res_";
     private static final String XML_SUFFIX = ".xml";
 
+    private static final String CUSTOM_BIOMETRIC_PROMPT_LOGO_RES_ID_KEY = "custom_logo_res_id";
+    private static final String CUSTOM_BIOMETRIC_PROMPT_LOGO_DESCRIPTION_KEY =
+            "custom_logo_description";
+
     private static final int ALLOWED_FLAGS_FOR_CREATE_USERS_PERMISSION =
             UserInfo.FLAG_MANAGED_PROFILE
             | UserInfo.FLAG_PROFILE
@@ -1970,6 +1974,14 @@
         // intentSender
         unlockIntent.putExtra(Intent.EXTRA_INTENT, pendingIntent.getIntentSender());
         unlockIntent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+
+        if (Flags.enablePrivateSpaceFeatures() && Flags.usePrivateSpaceIconInBiometricPrompt()
+                && getUserInfo(userId).isPrivateProfile()) {
+            unlockIntent.putExtra(CUSTOM_BIOMETRIC_PROMPT_LOGO_RES_ID_KEY,
+                    com.android.internal.R.drawable.stat_sys_private_profile_status);
+            unlockIntent.putExtra(CUSTOM_BIOMETRIC_PROMPT_LOGO_DESCRIPTION_KEY,
+                    mContext.getString(R.string.private_space_biometric_prompt_title));
+        }
         mContext.startActivityAsUser(
                 unlockIntent, UserHandle.of(getProfileParentIdUnchecked(userId)));
     }
diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java
index e93d320..ffb23e6 100644
--- a/services/core/java/com/android/server/pm/dex/DexManager.java
+++ b/services/core/java/com/android/server/pm/dex/DexManager.java
@@ -39,7 +39,6 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.pm.Installer;
 import com.android.server.pm.PackageDexOptimizer;
 import com.android.server.pm.PackageManagerService;
 import com.android.server.pm.PackageManagerServiceUtils;
@@ -99,9 +98,6 @@
 
     private IPackageManager mPackageManager;
     private final PackageDexOptimizer mPackageDexOptimizer;
-    private final Object mInstallLock;
-    @GuardedBy("mInstallLock")
-    private final Installer mInstaller;
 
     private BatteryManager mBatteryManager = null;
     private PowerManager mPowerManager = null;
@@ -116,21 +112,18 @@
     private static final int DEX_SEARCH_FOUND_SPLIT = 2;  // dex file is a split apk
     private static final int DEX_SEARCH_FOUND_SECONDARY = 3;  // dex file is a secondary dex
 
-    public DexManager(Context context, PackageDexOptimizer pdo, Installer installer,
-            Object installLock, DynamicCodeLogger dynamicCodeLogger) {
-        this(context, pdo, installer, installLock, dynamicCodeLogger, null);
+    public DexManager(Context context, PackageDexOptimizer pdo,
+            DynamicCodeLogger dynamicCodeLogger) {
+        this(context, pdo, dynamicCodeLogger, null);
     }
 
     @VisibleForTesting
-    public DexManager(Context context, PackageDexOptimizer pdo, Installer installer,
-            Object installLock, DynamicCodeLogger dynamicCodeLogger,
-            @Nullable IPackageManager packageManager) {
+    public DexManager(Context context, PackageDexOptimizer pdo,
+            DynamicCodeLogger dynamicCodeLogger, @Nullable IPackageManager packageManager) {
         mContext = context;
         mPackageCodeLocationsCache = new HashMap<>();
         mPackageDexUsage = new PackageDexUsage();
         mPackageDexOptimizer = pdo;
-        mInstaller = installer;
-        mInstallLock = installLock;
         mDynamicCodeLogger = dynamicCodeLogger;
         mPackageManager = packageManager;
 
diff --git a/services/core/java/com/android/server/pm/permission/PermissionAllowlist.java b/services/core/java/com/android/server/pm/permission/PermissionAllowlist.java
index d138606..6b99cbb 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionAllowlist.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionAllowlist.java
@@ -55,6 +55,9 @@
     @NonNull
     private final ArrayMap<String, ArrayMap<String, Boolean>> mSystemExtSignatureAppAllowlist =
             new ArrayMap<>();
+    @NonNull
+    private final ArrayMap<String, ArrayMap<String, Boolean>> mApexSignatureAppAllowlist =
+            new ArrayMap<>();
 
     @NonNull
     public ArrayMap<String, ArrayMap<String, Boolean>> getOemAppAllowlist() {
@@ -107,6 +110,11 @@
         return mSystemExtSignatureAppAllowlist;
     }
 
+    @NonNull
+    public ArrayMap<String, ArrayMap<String, Boolean>> getApexSignatureAppAllowlist() {
+        return mApexSignatureAppAllowlist;
+    }
+
     @Nullable
     public Boolean getOemAppAllowlistState(@NonNull String packageName,
             @NonNull String permissionName) {
@@ -211,4 +219,14 @@
         }
         return permissions.get(permissionName);
     }
+
+    @Nullable
+    public Boolean getApexSignatureAppAllowlistState(@NonNull String packageName,
+            @NonNull String permissionName) {
+        ArrayMap<String, Boolean> permissions = mApexSignatureAppAllowlist.get(packageName);
+        if (permissions == null) {
+            return null;
+        }
+        return permissions.get(permissionName);
+    }
 }
diff --git a/services/core/java/com/android/server/policy/TalkbackShortcutController.java b/services/core/java/com/android/server/policy/TalkbackShortcutController.java
index b05a421..e544ae6 100644
--- a/services/core/java/com/android/server/policy/TalkbackShortcutController.java
+++ b/services/core/java/com/android/server/policy/TalkbackShortcutController.java
@@ -117,6 +117,7 @@
     }
 
     private boolean isTalkback(ServiceInfo info) {
-        return TALKBACK_LABEL.equals(info.loadLabel(mPackageManager).toString());
+        return TALKBACK_LABEL.equals(info.loadLabel(mPackageManager).toString())
+            && (info.applicationInfo.isSystemApp() || info.applicationInfo.isUpdatedSystemApp());
     }
 }
diff --git a/services/core/java/com/android/server/power/ThermalManagerService.java b/services/core/java/com/android/server/power/ThermalManagerService.java
index 5360788..0052d4f 100644
--- a/services/core/java/com/android/server/power/ThermalManagerService.java
+++ b/services/core/java/com/android/server/power/ThermalManagerService.java
@@ -1709,7 +1709,7 @@
                     ArrayList<Sample> samples = mSamples.computeIfAbsent(temperature.getName(),
                             k -> new ArrayList<>(RING_BUFFER_SIZE));
                     if (samples.size() == RING_BUFFER_SIZE) {
-                        samples.remove(0);
+                        samples.removeFirst();
                     }
                     samples.add(new Sample(now, temperature.getValue()));
                 }
@@ -1806,7 +1806,7 @@
                         continue;
                     }
 
-                    float currentTemperature = samples.get(0).temperature;
+                    float currentTemperature = samples.getLast().temperature;
 
                     if (samples.size() < MINIMUM_SAMPLE_COUNT) {
                         // Don't try to forecast, just use the latest one we have
diff --git a/services/core/java/com/android/server/power/stats/AudioPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/AudioPowerStatsProcessor.java
new file mode 100644
index 0000000..a48f162
--- /dev/null
+++ b/services/core/java/com/android/server/power/stats/AudioPowerStatsProcessor.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.power.stats;
+
+import android.os.BatteryConsumer;
+import android.os.BatteryStats;
+
+import com.android.internal.os.PowerProfile;
+
+public class AudioPowerStatsProcessor extends BinaryStatePowerStatsProcessor {
+    public AudioPowerStatsProcessor(PowerProfile powerProfile,
+            PowerStatsUidResolver uidResolver) {
+        super(BatteryConsumer.POWER_COMPONENT_AUDIO, uidResolver,
+                powerProfile.getAveragePower(PowerProfile.POWER_AUDIO));
+    }
+
+    @Override
+    protected @BinaryState int getBinaryState(BatteryStats.HistoryItem item) {
+        return (item.states & BatteryStats.HistoryItem.STATE_AUDIO_ON_FLAG) != 0
+                ? STATE_ON
+                : STATE_OFF;
+    }
+}
diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
index efaa7a8..5bae5a4 100644
--- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
+++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
@@ -6490,12 +6490,14 @@
         uid = mapUid(uid);
         if (mAudioOnNesting == 0) {
             mHistory.recordStateStartEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE_AUDIO_ON_FLAG);
+                    HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio");
             mAudioOnTimer.startRunningLocked(elapsedRealtimeMs);
         }
         mAudioOnNesting++;
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteAudioTurnedOnLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteAudioTurnedOnLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
@@ -6506,11 +6508,13 @@
         uid = mapUid(uid);
         if (--mAudioOnNesting == 0) {
             mHistory.recordStateStopEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE_AUDIO_ON_FLAG);
+                    HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio");
             mAudioOnTimer.stopRunningLocked(elapsedRealtimeMs);
         }
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteAudioTurnedOffLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteAudioTurnedOffLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
@@ -6518,12 +6522,14 @@
         uid = mapUid(uid);
         if (mVideoOnNesting == 0) {
             mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE2_VIDEO_ON_FLAG);
+                    HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video");
             mVideoOnTimer.startRunningLocked(elapsedRealtimeMs);
         }
         mVideoOnNesting++;
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteVideoTurnedOnLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteVideoTurnedOnLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
@@ -6534,11 +6540,13 @@
         uid = mapUid(uid);
         if (--mVideoOnNesting == 0) {
             mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE2_VIDEO_ON_FLAG);
+                    HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video");
             mVideoOnTimer.stopRunningLocked(elapsedRealtimeMs);
         }
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteVideoTurnedOffLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteVideoTurnedOffLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
@@ -6613,11 +6621,13 @@
         uid = mapUid(uid);
         if (mFlashlightOnNesting++ == 0) {
             mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE2_FLASHLIGHT_FLAG);
+                    HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight");
             mFlashlightOnTimer.startRunningLocked(elapsedRealtimeMs);
         }
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteFlashlightTurnedOnLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteFlashlightTurnedOnLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
@@ -6628,11 +6638,13 @@
         uid = mapUid(uid);
         if (--mFlashlightOnNesting == 0) {
             mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs,
-                    HistoryItem.STATE2_FLASHLIGHT_FLAG);
+                    HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight");
             mFlashlightOnTimer.stopRunningLocked(elapsedRealtimeMs);
         }
-        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
-                .noteFlashlightTurnedOffLocked(elapsedRealtimeMs);
+        if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) {
+            getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
+                    .noteFlashlightTurnedOffLocked(elapsedRealtimeMs);
+        }
     }
 
     @GuardedBy("this")
diff --git a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java
index b252395..ba6e4a9 100644
--- a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java
+++ b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java
@@ -97,9 +97,15 @@
                         mContext.getSystemService(SensorManager.class)));
                 mPowerCalculators.add(new GnssPowerCalculator(mPowerProfile));
                 mPowerCalculators.add(new CameraPowerCalculator(mPowerProfile));
-                mPowerCalculators.add(new FlashlightPowerCalculator(mPowerProfile));
-                mPowerCalculators.add(new AudioPowerCalculator(mPowerProfile));
-                mPowerCalculators.add(new VideoPowerCalculator(mPowerProfile));
+                if (!mPowerStatsExporterEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) {
+                    mPowerCalculators.add(new FlashlightPowerCalculator(mPowerProfile));
+                }
+                if (!mPowerStatsExporterEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) {
+                    mPowerCalculators.add(new AudioPowerCalculator(mPowerProfile));
+                }
+                if (!mPowerStatsExporterEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) {
+                    mPowerCalculators.add(new VideoPowerCalculator(mPowerProfile));
+                }
                 mPowerCalculators.add(new ScreenPowerCalculator(mPowerProfile));
                 mPowerCalculators.add(new AmbientDisplayPowerCalculator(mPowerProfile));
                 mPowerCalculators.add(new IdlePowerCalculator(mPowerProfile));
diff --git a/services/core/java/com/android/server/power/stats/FlashlightPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/FlashlightPowerStatsProcessor.java
new file mode 100644
index 0000000..f7216c9
--- /dev/null
+++ b/services/core/java/com/android/server/power/stats/FlashlightPowerStatsProcessor.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.power.stats;
+
+import android.os.BatteryConsumer;
+import android.os.BatteryStats;
+
+import com.android.internal.os.PowerProfile;
+
+public class FlashlightPowerStatsProcessor extends BinaryStatePowerStatsProcessor {
+    public FlashlightPowerStatsProcessor(PowerProfile powerProfile,
+            PowerStatsUidResolver uidResolver) {
+        super(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, uidResolver,
+                powerProfile.getAveragePower(PowerProfile.POWER_FLASHLIGHT));
+    }
+
+    @Override
+    protected @BinaryState int getBinaryState(BatteryStats.HistoryItem item) {
+        return (item.states2 & BatteryStats.HistoryItem.STATE2_FLASHLIGHT_FLAG) != 0
+                ? STATE_ON
+                : STATE_OFF;
+    }
+}
diff --git a/services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java b/services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java
index a96e01b..33ea563 100644
--- a/services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java
+++ b/services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java
@@ -195,6 +195,9 @@
             return null;
         }
 
+        Arrays.fill(mPowerStats.stats, 0);
+        mPowerStats.uidStats.clear();
+
         collectModemActivityInfo();
 
         collectNetworkStats();
@@ -239,16 +242,16 @@
             activityInfo = null;
         }
 
+        if (activityInfo == null) {
+            return;
+        }
+
         ModemActivityInfo deltaInfo = mLastModemActivityInfo == null
-                ? (activityInfo == null ? null : activityInfo.getDelta(activityInfo))
+                ? activityInfo.getDelta(activityInfo)
                 : mLastModemActivityInfo.getDelta(activityInfo);
 
         mLastModemActivityInfo = activityInfo;
 
-        if (deltaInfo == null) {
-            return;
-        }
-
         setTimestamp(deltaInfo.getTimestampMillis());
         mLayout.setDeviceSleepTime(mDeviceStats, deltaInfo.getSleepTimeMillis());
         mLayout.setDeviceIdleTime(mDeviceStats, deltaInfo.getIdleTimeMillis());
@@ -293,8 +296,6 @@
     }
 
     private void collectNetworkStats() {
-        mPowerStats.uidStats.clear();
-
         NetworkStats networkStats = mNetworkStatsSupplier.get();
         if (networkStats == null) {
             return;
diff --git a/services/core/java/com/android/server/power/stats/VideoPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/VideoPowerStatsProcessor.java
new file mode 100644
index 0000000..48dac8a
--- /dev/null
+++ b/services/core/java/com/android/server/power/stats/VideoPowerStatsProcessor.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.power.stats;
+
+import android.os.BatteryConsumer;
+import android.os.BatteryStats;
+
+import com.android.internal.os.PowerProfile;
+
+public class VideoPowerStatsProcessor extends BinaryStatePowerStatsProcessor {
+    public VideoPowerStatsProcessor(PowerProfile powerProfile,
+            PowerStatsUidResolver uidResolver) {
+        super(BatteryConsumer.POWER_COMPONENT_VIDEO, uidResolver,
+                powerProfile.getAveragePower(PowerProfile.POWER_VIDEO));
+    }
+
+    @Override
+    protected @BinaryState int getBinaryState(BatteryStats.HistoryItem item) {
+        return (item.states2 & BatteryStats.HistoryItem.STATE2_VIDEO_ON_FLAG) != 0
+                ? STATE_ON
+                : STATE_OFF;
+    }
+}
diff --git a/services/core/java/com/android/server/power/stats/flags.aconfig b/services/core/java/com/android/server/power/stats/flags.aconfig
index 9283fe9..6a5a7ac 100644
--- a/services/core/java/com/android/server/power/stats/flags.aconfig
+++ b/services/core/java/com/android/server/power/stats/flags.aconfig
@@ -37,3 +37,13 @@
     description: "Feature flag for streamlined misc (excluding CPU, Cell, Wifi, BT) battery stats"
     bug: "333941740"
 }
+
+flag {
+    name: "oneway_battery_stats_service"
+    namespace: "backstage_power"
+    description: "Bugfix flag for locking issues and watchdog kills in BatteryStatsService"
+    bug: "330792526"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 4264e91..85c8900 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -1296,7 +1296,7 @@
 
         synchronized (mIcons) {
             StatusBarIcon icon = new StatusBarIcon(iconPackage, UserHandle.SYSTEM, iconId,
-                    iconLevel, 0, contentDescription);
+                    iconLevel, 0, contentDescription, StatusBarIcon.Type.SystemIcon);
             //Slog.d(TAG, "setIcon slot=" + slot + " index=" + index + " icon=" + icon);
             mIcons.put(slot, icon);
 
diff --git a/services/core/java/com/android/server/tracing/TracingServiceProxy.java b/services/core/java/com/android/server/tracing/TracingServiceProxy.java
index c1d92cf..68eb8eb 100644
--- a/services/core/java/com/android/server/tracing/TracingServiceProxy.java
+++ b/services/core/java/com/android/server/tracing/TracingServiceProxy.java
@@ -93,6 +93,7 @@
     private final Context mContext;
     private final PackageManager mPackageManager;
     private final LruCache<ComponentName, ServiceConnector<IMessenger>> mCachedReporterServices;
+    private boolean mServicePublished = false;
 
     private final ITracingServiceProxy.Stub mTracingServiceProxy = new ITracingServiceProxy.Stub() {
         /**
@@ -122,9 +123,12 @@
     public void onStart() {}
 
     @Override
-    public void onBootPhase(int phase) {
-        if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
+    public void onUserUnlocking(@NonNull TargetUser user) {
+        // We need the device storage to be unlocked before we can accept and forward
+        // requests.
+        if (!mServicePublished) {
             publishBinderService(TRACING_SERVICE_PROXY_BINDER_NAME, mTracingServiceProxy);
+            mServicePublished = true;
         }
     }
 
diff --git a/services/core/java/com/android/server/uri/UriPermission.java b/services/core/java/com/android/server/uri/UriPermission.java
index e406eb2..0d1f367 100644
--- a/services/core/java/com/android/server/uri/UriPermission.java
+++ b/services/core/java/com/android/server/uri/UriPermission.java
@@ -223,7 +223,9 @@
             if (mWriteOwners != null && includingOwners) {
                 ownedModeFlags &= ~Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
                 for (UriPermissionOwner r : mWriteOwners) {
-                    r.removeWritePermission(this);
+                    if (r != null) {
+                        r.removeWritePermission(this);
+                    }
                 }
                 mWriteOwners = null;
             }
@@ -348,7 +350,7 @@
         if (mWriteOwners != null) {
             pw.print(prefix);
             pw.println("writeOwners:");
-            for (UriPermissionOwner owner : mReadOwners) {
+            for (UriPermissionOwner owner : mWriteOwners) {
                 pw.print(prefix);
                 pw.println("  * " + owner);
             }
diff --git a/services/core/java/com/android/server/vibrator/VibratorController.java b/services/core/java/com/android/server/vibrator/VibratorController.java
index 6710d02..988e8fe 100644
--- a/services/core/java/com/android/server/vibrator/VibratorController.java
+++ b/services/core/java/com/android/server/vibrator/VibratorController.java
@@ -56,10 +56,17 @@
     private volatile boolean mIsUnderExternalControl;
     private volatile float mCurrentAmplitude;
 
-    /** Listener for vibration completion callbacks from native. */
+    /**
+     * Listener for vibration completion callbacks from native.
+     *
+     * <p>Only the latest active native call to {@link VibratorController#on} will ever trigger this
+     * completion callback, to avoid race conditions during a vibration playback. If a new call to
+     * {@link #on} or {@link #off} happens before a previous callback was triggered then the
+     * previous callback will be disabled, even if the new command fails.
+     */
     public interface OnVibrationCompleteListener {
 
-        /** Callback triggered when vibration is complete. */
+        /** Callback triggered when an active vibration command is complete. */
         void onComplete(int vibratorId, long vibrationId);
     }
 
@@ -235,7 +242,7 @@
     }
 
     /**
-     * Turn on the vibrator for {@code milliseconds} time, using {@code vibrationId} or completion
+     * Turn on the vibrator for {@code milliseconds} time, using {@code vibrationId} for completion
      * callback to {@link OnVibrationCompleteListener}.
      *
      * <p>This will affect the state of {@link #isVibrating()}.
@@ -255,7 +262,7 @@
     }
 
     /**
-     * Plays predefined vibration effect, using {@code vibrationId} or completion callback to
+     * Plays predefined vibration effect, using {@code vibrationId} for completion callback to
      * {@link OnVibrationCompleteListener}.
      *
      * <p>This will affect the state of {@link #isVibrating()}.
@@ -276,8 +283,8 @@
     }
 
     /**
-     * Plays a composition of vibration primitives, using {@code vibrationId} or completion callback
-     * to {@link OnVibrationCompleteListener}.
+     * Plays a composition of vibration primitives, using {@code vibrationId} for completion
+     * callback to {@link OnVibrationCompleteListener}.
      *
      * <p>This will affect the state of {@link #isVibrating()}.
      *
@@ -299,7 +306,7 @@
     }
 
     /**
-     * Plays a composition of pwle primitives, using {@code vibrationId} or completion callback
+     * Plays a composition of pwle primitives, using {@code vibrationId} for completion callback
      * to {@link OnVibrationCompleteListener}.
      *
      * <p>This will affect the state of {@link #isVibrating()}.
@@ -321,7 +328,11 @@
         }
     }
 
-    /** Turns off the vibrator. This will affect the state of {@link #isVibrating()}. */
+    /**
+     * Turns off the vibrator and disables completion callback to any pending vibration.
+     *
+     * <p>This will affect the state of {@link #isVibrating()}.
+     */
     public void off() {
         synchronized (mLock) {
             mNativeWrapper.off();
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
index 80f1125..f70a3ba 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
@@ -150,7 +150,7 @@
                 Rect landscapeCrop = getCrop(rotatedDisplaySize, bitmapSize, suggestedCrops, rtl);
                 landscapeCrop = noParallax(landscapeCrop, rotatedDisplaySize, bitmapSize, rtl);
                 // compute the crop on portrait at the center of the landscape crop
-                crop = getAdjustedCrop(landscapeCrop, bitmapSize, displaySize, false, ADD);
+                crop = getAdjustedCrop(landscapeCrop, bitmapSize, displaySize, false, rtl, ADD);
 
                 // add some parallax (until the border of the landscape crop without parallax)
                 if (rtl) {
@@ -160,7 +160,7 @@
                 }
             }
 
-            return getAdjustedCrop(crop, bitmapSize, displaySize, true, ADD);
+            return getAdjustedCrop(crop, bitmapSize, displaySize, true, rtl, ADD);
         }
 
         // If any suggested crop is invalid, fallback to case 1
@@ -176,7 +176,7 @@
         // Case 2: if the orientation exists in the suggested crops, adjust the suggested crop
         Rect suggestedCrop = suggestedCrops.get(orientation);
         if (suggestedCrop != null) {
-            return getAdjustedCrop(suggestedCrop, bitmapSize, displaySize, true, ADD);
+            return getAdjustedCrop(suggestedCrop, bitmapSize, displaySize, true, rtl, ADD);
         }
 
         // Case 3: if we have the 90° rotated orientation in the suggested crops, reuse it and
@@ -188,7 +188,7 @@
         if (suggestedCrop != null) {
             // only keep the visible part (without parallax)
             Rect adjustedCrop = noParallax(suggestedCrop, suggestedDisplaySize, bitmapSize, rtl);
-            return getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, BALANCE);
+            return getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, rtl, BALANCE);
         }
 
         // Case 4: if the device is a foldable, if we're looking for a folded orientation and have
@@ -200,13 +200,13 @@
             // compute the visible part (without parallax) of the unfolded screen
             Rect adjustedCrop = noParallax(suggestedCrop, suggestedDisplaySize, bitmapSize, rtl);
             // compute the folded crop, at the center of the crop of the unfolded screen
-            Rect res = getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, REMOVE);
+            Rect res = getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, rtl, REMOVE);
             // if we removed some width, add it back to add a parallax effect
             if (res.width() < adjustedCrop.width()) {
                 if (rtl) res.left = Math.min(res.left, adjustedCrop.left);
                 else res.right = Math.max(res.right, adjustedCrop.right);
                 // use getAdjustedCrop(parallax=true) to make sure we don't exceed MAX_PARALLAX
-                res = getAdjustedCrop(res, bitmapSize, displaySize, true, ADD);
+                res = getAdjustedCrop(res, bitmapSize, displaySize, true, rtl, ADD);
             }
             return res;
         }
@@ -220,7 +220,7 @@
         if (suggestedCrop != null) {
             // only keep the visible part (without parallax)
             Rect adjustedCrop = noParallax(suggestedCrop, suggestedDisplaySize, bitmapSize, rtl);
-            return getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, ADD);
+            return getAdjustedCrop(adjustedCrop, bitmapSize, displaySize, false, rtl, ADD);
         }
 
         // Case 6: for a foldable device, try to combine case 3 + case 4 or 5:
@@ -255,7 +255,7 @@
     @VisibleForTesting
     static Rect noParallax(Rect crop, Point displaySize, Point bitmapSize, boolean rtl) {
         if (displaySize == null) return crop;
-        Rect adjustedCrop = getAdjustedCrop(crop, bitmapSize, displaySize, true, ADD);
+        Rect adjustedCrop = getAdjustedCrop(crop, bitmapSize, displaySize, true, rtl, ADD);
         // only keep the visible part (without parallax)
         float suggestedDisplayRatio = 1f * displaySize.x / displaySize.y;
         int widthToRemove = (int) (adjustedCrop.width()
@@ -272,7 +272,7 @@
      * Adjust a given crop:
      * <ul>
      *     <li>If parallax = true, make sure we have a parallax of at most {@link #MAX_PARALLAX},
-     *     by removing content from both sides if necessary.
+     *     by removing content from the right (or left if RTL) if necessary.
      *     <li>If parallax = false, make sure we do not have additional width for parallax. If we
      *     have additional width for parallax, remove half of the additional width on both sides.
      *     <li>Make sure the crop fills the screen, i.e. that the width/height ratio of the crop
@@ -282,7 +282,7 @@
      */
     @VisibleForTesting
     static Rect getAdjustedCrop(Rect crop, Point bitmapSize, Point screenSize,
-            boolean parallax, int mode) {
+            boolean parallax, boolean rtl, int mode) {
         Rect adjustedCrop = new Rect(crop);
         float cropRatio = ((float) crop.width()) / crop.height();
         float screenRatio = ((float) screenSize.x) / screenSize.y;
@@ -297,7 +297,8 @@
                 Rect rotatedCrop = new Rect(newLeft, newTop, newRight, newBottom);
                 Point rotatedBitmap = new Point(bitmapSize.y, bitmapSize.x);
                 Point rotatedScreen = new Point(screenSize.y, screenSize.x);
-                Rect rect = getAdjustedCrop(rotatedCrop, rotatedBitmap, rotatedScreen, false, mode);
+                Rect rect = getAdjustedCrop(
+                        rotatedCrop, rotatedBitmap, rotatedScreen, false, rtl, mode);
                 int resultLeft = rect.top;
                 int resultRight = resultLeft + rect.height();
                 int resultTop = rotatedBitmap.x - rect.right;
@@ -308,8 +309,11 @@
             if (additionalWidthForParallax > MAX_PARALLAX) {
                 int widthToRemove = (int) Math.ceil(
                         (additionalWidthForParallax - MAX_PARALLAX) * screenRatio * crop.height());
-                adjustedCrop.left += widthToRemove / 2;
-                adjustedCrop.right -= widthToRemove / 2 + widthToRemove % 2;
+                if (rtl) {
+                    adjustedCrop.left += widthToRemove;
+                } else {
+                    adjustedCrop.right -= widthToRemove;
+                }
             }
         } else {
             // Note: the third case when MODE == BALANCE, -W + sqrt(W * H * R), is the width to add
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index f8eb789..abc6bf6 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -2729,8 +2729,11 @@
         try {
             List<WallpaperData> pendingColorExtraction = new ArrayList<>();
             synchronized (mLock) {
-                WallpaperData wallpaper = mWallpaperMap.get(mCurrentUserId);
-                WallpaperData lockWallpaper = mLockWallpaperMap.get(mCurrentUserId);
+                // If called in boot before mCurrentUserId is set, sets the dim for USER_SYSTEM.
+                int userId = mCurrentUserId != UserHandle.USER_NULL
+                        ? mCurrentUserId : UserHandle.USER_SYSTEM;
+                WallpaperData wallpaper = mWallpaperMap.get(userId);
+                WallpaperData lockWallpaper = mLockWallpaperMap.get(userId);
 
                 if (dimAmount == 0.0f) {
                     wallpaper.mUidToDimAmount.remove(uid);
diff --git a/services/core/java/com/android/server/wm/AccessibilityWindowsPopulator.java b/services/core/java/com/android/server/wm/AccessibilityWindowsPopulator.java
index 3393d3e..d8e7c77 100644
--- a/services/core/java/com/android/server/wm/AccessibilityWindowsPopulator.java
+++ b/services/core/java/com/android/server/wm/AccessibilityWindowsPopulator.java
@@ -566,32 +566,35 @@
     }
 
     void dump(PrintWriter pw, String prefix) {
-        pw.print(prefix); pw.println("AccessibilityWindowsPopulator");
-        String prefix2 = prefix + "  ";
+        synchronized (mLock) {
+            pw.print(prefix); pw.println("AccessibilityWindowsPopulator");
+            String prefix2 = prefix + "  ";
 
-        pw.print(prefix2); pw.print("mWindowsNotificationEnabled: ");
-        pw.println(mWindowsNotificationEnabled);
+            pw.print(prefix2); pw.print("mWindowsNotificationEnabled: ");
+            pw.println(mWindowsNotificationEnabled);
 
-        if (mVisibleWindows.isEmpty()) {
-            pw.print(prefix2); pw.println("No visible windows");
-        } else {
-            pw.print(prefix2); pw.print(mVisibleWindows.size());
-            pw.print(" visible windows: "); pw.println(mVisibleWindows);
+            if (mVisibleWindows.isEmpty()) {
+                pw.print(prefix2); pw.println("No visible windows");
+            } else {
+                pw.print(prefix2); pw.print(mVisibleWindows.size());
+                pw.print(" visible windows: "); pw.println(mVisibleWindows);
+            }
+            KeyDumper noKeyDumper = (i, k) -> {}; // display id is already shown on value;
+            KeyDumper displayDumper = (i, d) -> pw.printf("%sDisplay #%d: ", prefix, d);
+            // Ideally magnificationSpecDumper should use spec.dump(pw), but there is no such method
+            ValueDumper<MagnificationSpec> magnificationSpecDumper = spec -> pw.print(spec);
+
+            dumpSparseArray(pw, prefix2, mDisplayInfos,
+                    "display info", noKeyDumper, d -> pw.print(d));
+            dumpSparseArray(pw, prefix2, mInputWindowHandlesOnDisplays,
+                    "window handles on display", displayDumper, list -> pw.print(list));
+            dumpSparseArray(pw, prefix2, mMagnificationSpecInverseMatrix,
+                    "magnification spec matrix", noKeyDumper, matrix -> matrix.dump(pw));
+            dumpSparseArray(pw, prefix2, mCurrentMagnificationSpec,
+                    "current magnification spec", noKeyDumper, magnificationSpecDumper);
+            dumpSparseArray(pw, prefix2, mPreviousMagnificationSpec,
+                    "previous magnification spec", noKeyDumper, magnificationSpecDumper);
         }
-        KeyDumper noKeyDumper = (i, k) -> {}; // display id is already shown on value;
-        KeyDumper displayDumper = (i, d) -> pw.printf("%sDisplay #%d: ", prefix, d);
-        // Ideally magnificationSpecDumper should use spec.dump(pw), but there is no such method
-        ValueDumper<MagnificationSpec> magnificationSpecDumper = spec -> pw.print(spec);
-
-        dumpSparseArray(pw, prefix2, mDisplayInfos, "display info", noKeyDumper, d -> pw.print(d));
-        dumpSparseArray(pw, prefix2, mInputWindowHandlesOnDisplays, "window handles on display",
-                displayDumper, list -> pw.print(list));
-        dumpSparseArray(pw, prefix2, mMagnificationSpecInverseMatrix, "magnification spec matrix",
-                noKeyDumper, matrix -> matrix.dump(pw));
-        dumpSparseArray(pw, prefix2, mCurrentMagnificationSpec, "current magnification spec",
-                noKeyDumper, magnificationSpecDumper);
-        dumpSparseArray(pw, prefix2, mPreviousMagnificationSpec, "previous magnification spec",
-                noKeyDumper, magnificationSpecDumper);
     }
 
     @GuardedBy("mLock")
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 2d2a88a86..d9e14340 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -661,7 +661,8 @@
      */
     private CompatDisplayInsets mCompatDisplayInsets;
 
-    private final TaskFragment.ConfigOverrideHint mResolveConfigHint;
+    @VisibleForTesting
+    final TaskFragment.ConfigOverrideHint mResolveConfigHint;
 
     private final boolean mOptOutEdgeToEdge;
 
@@ -803,6 +804,11 @@
     final LetterboxUiController mLetterboxUiController;
 
     /**
+     * The policy for transparent activities
+     */
+    final TransparentPolicy mTransparentPolicy;
+
+    /**
      * The scale to fit at least one side of the activity to its parent. If the activity uses
      * 1920x1080, and the actually size on the screen is 960x540, then the scale is 0.5.
      */
@@ -1698,7 +1704,7 @@
             if (isState(RESUMED)) {
                 newParent.setResumedActivity(this, "onParentChanged");
             }
-            mLetterboxUiController.updateInheritedLetterbox();
+            mTransparentPolicy.start();
         }
 
         if (rootTask != null && rootTask.topRunningActivity() == this) {
@@ -2136,6 +2142,7 @@
         // Don't move below setOrientation(info.screenOrientation) since it triggers
         // getOverrideOrientation that requires having mLetterboxUiController
         // initialised.
+        mTransparentPolicy = new TransparentPolicy(this, mWmService.mLetterboxConfiguration);
         mLetterboxUiController = new LetterboxUiController(mWmService, this);
         mCameraCompatControlEnabled = mWmService.mContext.getResources()
                 .getBoolean(R.bool.config_isCameraCompatControlForStretchedIssuesEnabled);
@@ -8080,13 +8087,13 @@
     @Configuration.Orientation
     int getRequestedConfigurationOrientation(boolean forDisplay,
             @ActivityInfo.ScreenOrientation int requestedOrientation) {
-        if (mLetterboxUiController.hasInheritedOrientation()) {
+        if (mTransparentPolicy.hasInheritedOrientation()) {
             final RootDisplayArea root = getRootDisplayArea();
             if (forDisplay && root != null && root.isOrientationDifferentFromDisplay()) {
                 return reverseConfigurationOrientation(
-                        mLetterboxUiController.getInheritedOrientation());
+                        mTransparentPolicy.getInheritedOrientation());
             } else {
-                return mLetterboxUiController.getInheritedOrientation();
+                return mTransparentPolicy.getInheritedOrientation();
             }
         }
         if (task != null && requestedOrientation == SCREEN_ORIENTATION_BEHIND) {
@@ -8302,8 +8309,8 @@
 
     @Nullable
     CompatDisplayInsets getCompatDisplayInsets() {
-        if (mLetterboxUiController.hasInheritedLetterboxBehavior()) {
-            return mLetterboxUiController.getInheritedCompatDisplayInsets();
+        if (mTransparentPolicy.isRunning()) {
+            return mTransparentPolicy.getInheritedCompatDisplayInsets();
         }
         return mCompatDisplayInsets;
     }
@@ -8466,7 +8473,7 @@
         }
         mSizeCompatBounds = null;
         mCompatDisplayInsets = null;
-        mLetterboxUiController.clearInheritedCompatDisplayInsets();
+        mTransparentPolicy.clearInheritedCompatDisplayInsets();
     }
 
     @VisibleForTesting
@@ -8527,6 +8534,8 @@
         mIsEligibleForFixedOrientationLetterbox = false;
         mLetterboxBoundsForFixedOrientationAndAspectRatio = null;
         mLetterboxBoundsForAspectRatio = null;
+        mResolveConfigHint.resolveTmpOverrides(mDisplayContent, newParentConfiguration,
+                isFixedRotationTransforming());
 
         // Can't use resolvedConfig.windowConfiguration.getWindowingMode() because it can be
         // different from windowing mode of the task (PiP) during transition from fullscreen to PiP
@@ -8641,10 +8650,15 @@
         }
 
         applySizeOverrideIfNeeded(newParentConfiguration, parentWindowingMode, resolvedConfig);
+        mResolveConfigHint.resetTmpOverrides();
 
         logAppCompatState();
     }
 
+    @Nullable Rect getParentAppBoundsOverride() {
+        return Rect.copyOrNull(mResolveConfigHint.mTmpParentAppBoundsOverride);
+    }
+
     /**
      * If necessary, override configuration fields related to app bounds.
      * This will happen when the app is targeting SDK earlier than 35.
@@ -8668,8 +8682,8 @@
             rotation = mDisplayContent.getRotation();
         }
         if (!mOptOutEdgeToEdge && (!mResolveConfigHint.mUseOverrideInsetsForConfig
-                || getCompatDisplayInsets() != null || shouldCreateCompatDisplayInsets()
-                || isFloating(parentWindowingMode) || rotation == ROTATION_UNDEFINED)) {
+                || getCompatDisplayInsets() != null || isFloating(parentWindowingMode)
+                || rotation == ROTATION_UNDEFINED)) {
             // If the insets configuration decoupled logic is not enabled for the app, or the app
             // already has a compat override, or the context doesn't contain enough info to
             // calculate the override, skip the override.
@@ -8691,7 +8705,7 @@
                 : mDisplayContent.mBaseDisplayWidth;
         final int dh = rotated ? mDisplayContent.mBaseDisplayWidth
                 : mDisplayContent.mBaseDisplayHeight;
-        final  Rect nonDecorInsets = mDisplayContent.getDisplayPolicy()
+        final Rect nonDecorInsets = mDisplayContent.getDisplayPolicy()
                 .getDecorInsetsInfo(rotation, dw, dh).mOverrideNonDecorInsets;
         // This should be the only place override the configuration for ActivityRecord. Override
         // the value if not calculated yet.
@@ -8707,12 +8721,10 @@
         }
         density *= DisplayMetrics.DENSITY_DEFAULT_SCALE;
         if (inOutConfig.screenWidthDp == Configuration.SCREEN_WIDTH_DP_UNDEFINED) {
-            final int overrideScreenWidthDp = (int) (outAppBounds.width() / density + 0.5f);
-            inOutConfig.screenWidthDp = overrideScreenWidthDp;
+            inOutConfig.screenWidthDp = (int) (outAppBounds.width() / density + 0.5f);
         }
         if (inOutConfig.screenHeightDp == Configuration.SCREEN_HEIGHT_DP_UNDEFINED) {
-            final int overrideScreenHeightDp = (int) (outAppBounds.height() / density + 0.5f);
-            inOutConfig.screenHeightDp = overrideScreenHeightDp;
+            inOutConfig.screenHeightDp = (int) (outAppBounds.height() / density + 0.5f);
         }
         if (inOutConfig.smallestScreenWidthDp
                 == Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED
@@ -8784,8 +8796,8 @@
             return APP_COMPAT_STATE_CHANGED__STATE__NOT_VISIBLE;
         }
         // TODO(b/256564921): Investigate if we need new metrics for translucent activities
-        if (mLetterboxUiController.hasInheritedLetterboxBehavior()) {
-            return mLetterboxUiController.getInheritedAppCompatState();
+        if (mTransparentPolicy.isRunning()) {
+            return mTransparentPolicy.getInheritedAppCompatState();
         }
         if (mInSizeCompatModeForBounds) {
             return APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_SIZE_COMPAT_MODE;
@@ -8823,7 +8835,7 @@
         }
         final Rect screenResolvedBounds =
                 mSizeCompatBounds != null ? mSizeCompatBounds : resolvedBounds;
-        final Rect parentAppBounds = newParentConfiguration.windowConfiguration.getAppBounds();
+        final Rect parentAppBounds = mResolveConfigHint.mTmpParentAppBoundsOverride;
         final Rect parentBounds = newParentConfiguration.windowConfiguration.getBounds();
         final float screenResolvedBoundsWidth = screenResolvedBounds.width();
         final float parentAppBoundsWidth = parentAppBounds.width();
@@ -8938,7 +8950,7 @@
         // We check if the current activity is transparent. In that case we need to
         // recomputeConfiguration of the first opaque activity beneath, to allow a
         // proper computation of the new bounds.
-        if (!mLetterboxUiController.applyOnOpaqueActivityBelow(
+        if (!mTransparentPolicy.applyOnOpaqueActivityBelow(
                 ActivityRecord::recomputeConfiguration)) {
             onRequestedOverrideConfigurationChanged(getRequestedOverrideConfiguration());
         }
@@ -9232,7 +9244,7 @@
      */
     private void resolveAspectRatioRestriction(Configuration newParentConfiguration) {
         final Configuration resolvedConfig = getResolvedOverrideConfiguration();
-        final Rect parentAppBounds = newParentConfiguration.windowConfiguration.getAppBounds();
+        final Rect parentAppBounds = mResolveConfigHint.mTmpParentAppBoundsOverride;
         final Rect parentBounds = newParentConfiguration.windowConfiguration.getBounds();
         final Rect resolvedBounds = resolvedConfig.windowConfiguration.getBounds();
         // Use tmp bounds to calculate aspect ratio so we can know whether the activity should use
@@ -9261,19 +9273,6 @@
             @NonNull CompatDisplayInsets compatDisplayInsets) {
         final Configuration resolvedConfig = getResolvedOverrideConfiguration();
         final Rect resolvedBounds = resolvedConfig.windowConfiguration.getBounds();
-        final Insets insets;
-        if (mResolveConfigHint.mUseOverrideInsetsForConfig) {
-            // TODO(b/343197837): Add test to verify SCM behaviour with new bound configuration
-            // Insets are decoupled from configuration by default from V+, use legacy
-            // compatibility behaviour for apps targeting SDK earlier than 35
-            // (see applySizeOverrideIfNeeded).
-            insets = Insets.of(mDisplayContent.getDisplayPolicy()
-                    .getDecorInsetsInfo(mDisplayContent.mDisplayFrames.mRotation,
-                            mDisplayContent.mDisplayFrames.mWidth,
-                            mDisplayContent.mDisplayFrames.mHeight).mOverrideNonDecorInsets);
-        } else {
-            insets = Insets.NONE;
-        }
 
         // When an activity needs to be letterboxed because of fixed orientation, use fixed
         // orientation bounds (stored in resolved bounds) instead of parent bounds since the
@@ -9284,22 +9283,22 @@
         final Rect containerBounds = useResolvedBounds
                 ? new Rect(resolvedBounds)
                 : newParentConfiguration.windowConfiguration.getBounds();
-        final Rect parentAppBounds =
-                newParentConfiguration.windowConfiguration.getAppBounds();
-        parentAppBounds.inset(insets);
         final Rect containerAppBounds = useResolvedBounds
                 ? new Rect(resolvedConfig.windowConfiguration.getAppBounds())
-                : parentAppBounds;
+                : mResolveConfigHint.mTmpParentAppBoundsOverride;
 
         final int requestedOrientation = getRequestedConfigurationOrientation();
         final boolean orientationRequested = requestedOrientation != ORIENTATION_UNDEFINED;
+        final int parentOrientation = mResolveConfigHint.mUseOverrideInsetsForConfig
+                ? mResolveConfigHint.mTmpOverrideConfigOrientation
+                : newParentConfiguration.orientation;
         final int orientation = orientationRequested
                 ? requestedOrientation
                 // We should use the original orientation of the activity when possible to avoid
                 // forcing the activity in the opposite orientation.
                 : compatDisplayInsets.mOriginalRequestedOrientation != ORIENTATION_UNDEFINED
                         ? compatDisplayInsets.mOriginalRequestedOrientation
-                        : newParentConfiguration.orientation;
+                        : parentOrientation;
         int rotation = newParentConfiguration.windowConfiguration.getRotation();
         final boolean isFixedToUserRotation = mDisplayContent == null
                 || mDisplayContent.getDisplayRotation().isFixedToUserRotation();
@@ -9341,7 +9340,7 @@
         // Use parent orientation if it cannot be decided by bounds, so the activity can fit inside
         // the parent bounds appropriately.
         if (resolvedConfig.screenWidthDp == resolvedConfig.screenHeightDp) {
-            resolvedConfig.orientation = newParentConfiguration.orientation;
+            resolvedConfig.orientation = parentOrientation;
         }
 
         // Below figure is an example that puts an activity which was launched in a larger container
@@ -9411,7 +9410,7 @@
 
     void updateSizeCompatScale(Rect resolvedAppBounds, Rect containerAppBounds) {
         // Only allow to scale down.
-        mSizeCompatScale = mLetterboxUiController.findOpaqueNotFinishingActivityBelow()
+        mSizeCompatScale = mTransparentPolicy.findOpaqueNotFinishingActivityBelow()
                 .map(activityRecord -> activityRecord.mSizeCompatScale)
                 .orElseGet(() -> {
                     final int contentW = resolvedAppBounds.width();
@@ -9424,7 +9423,7 @@
     }
 
     private boolean isInSizeCompatModeForBounds(final Rect appBounds, final Rect containerBounds) {
-        if (mLetterboxUiController.hasInheritedLetterboxBehavior()) {
+        if (mTransparentPolicy.isRunning()) {
             // To avoid wrong app behaviour, we decided to disable SCM when a translucent activity
             // is letterboxed.
             return false;
@@ -9487,7 +9486,7 @@
     public Rect getBounds() {
         // TODO(b/268458693): Refactor configuration inheritance in case of translucent activities
         final Rect superBounds = super.getBounds();
-        return mLetterboxUiController.findOpaqueNotFinishingActivityBelow()
+        return mTransparentPolicy.findOpaqueNotFinishingActivityBelow()
                 .map(ActivityRecord::getBounds)
                 .orElseGet(() -> {
                     if (mSizeCompatBounds != null) {
@@ -9851,8 +9850,8 @@
      * Returns the min aspect ratio of this activity.
      */
     float getMinAspectRatio() {
-        if (mLetterboxUiController.hasInheritedLetterboxBehavior()) {
-            return mLetterboxUiController.getInheritedMinAspectRatio();
+        if (mTransparentPolicy.isRunning()) {
+            return mTransparentPolicy.getInheritedMinAspectRatio();
         }
         if (info.applicationInfo == null) {
             return info.getMinAspectRatio();
@@ -9902,8 +9901,8 @@
     }
 
     float getMaxAspectRatio() {
-        if (mLetterboxUiController.hasInheritedLetterboxBehavior()) {
-            return mLetterboxUiController.getInheritedMaxAspectRatio();
+        if (mTransparentPolicy.isRunning()) {
+            return mTransparentPolicy.getInheritedMaxAspectRatio();
         }
         return info.getMaxAspectRatio();
     }
diff --git a/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java b/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
index 4149bd9..351dc3a 100644
--- a/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
+++ b/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
@@ -41,7 +41,7 @@
     static final String DOC_LINK = "go/android-asm";
 
     /** Used to determine which version of the ASM logic was used in logs while we iterate */
-    static final int ASM_VERSION = 10;
+    static final int ASM_VERSION = 11;
 
     private static final String NAMESPACE = NAMESPACE_WINDOW_MANAGER;
     private static final String KEY_ASM_PREFIX = "ActivitySecurity__";
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 72b854b..d7a696f 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -936,13 +936,8 @@
         }
         mLastStartReason = request.reason;
         mLastStartActivityTimeMs = System.currentTimeMillis();
-        // Reset the ActivityRecord#mCurrentLaunchCanTurnScreenOn state of last start activity in
-        // case the state is not yet consumed during rapid activity launch.
-        if (mLastStartActivityRecord != null) {
-            mLastStartActivityRecord.setCurrentLaunchCanTurnScreenOn(false);
-        }
-        mLastStartActivityRecord = null;
 
+        final ActivityRecord previousStart = mLastStartActivityRecord;
         final IApplicationThread caller = request.caller;
         Intent intent = request.intent;
         NeededUriGrants intentGrants = request.intentGrants;
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 3aa63af..cfd5300 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -1439,6 +1439,8 @@
                 resultTo.removeResultsLocked(r, resultWho, requestCode);
             }
 
+            final int origCallingUid = Binder.getCallingUid();
+            final int origCallingPid = Binder.getCallingPid();
             final long origId = Binder.clearCallingIdentity();
             // TODO(b/64750076): Check if calling pid should really be -1.
             try {
@@ -1446,13 +1448,14 @@
                     options = new SafeActivityOptions(ActivityOptions.makeBasic());
                 }
 
-                // Fixes b/230492947
+                // Fixes b/230492947 b/337726734
                 // Prevents background activity launch through #startNextMatchingActivity
-                // An activity going into the background could still go back to the foreground
-                // if the intent used matches both:
-                // - the activity in the background
-                // - a second activity.
-                options.getOptions(r).setAvoidMoveToFront();
+                // launchedFromUid of the calling activity represents the app that launches it.
+                // It may have BAL privileges (i.e. the Launcher App). Using its identity to
+                // launch to launch next matching activity causes BAL.
+                // Change the realCallingUid to the calling activity's uid.
+                // In ActivityStarter, when caller is set, the callingUid and callingPid are
+                // ignored. So now both callingUid and realCallingUid is set to the caller app.
                 final int res = getActivityStartController()
                         .obtainStarter(intent, "startNextMatchingActivity")
                         .setCaller(r.app.getThread())
@@ -1465,8 +1468,8 @@
                         .setCallingUid(r.launchedFromUid)
                         .setCallingPackage(r.launchedFromPackage)
                         .setCallingFeatureId(r.launchedFromFeatureId)
-                        .setRealCallingPid(-1)
-                        .setRealCallingUid(r.launchedFromUid)
+                        .setRealCallingPid(origCallingPid)
+                        .setRealCallingUid(origCallingUid)
                         .setActivityOptions(options)
                         .setUserId(userId)
                         .execute();
@@ -1507,7 +1510,7 @@
         a.persistableMode = ActivityInfo.PERSIST_NEVER;
         a.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
         a.colorMode = ActivityInfo.COLOR_MODE_DEFAULT;
-        a.flags |= ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS;
+        a.flags |= ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS | ActivityInfo.FLAG_SHOW_WHEN_LOCKED;
         a.configChanges = 0xffffffff;
 
         if (homePanelDream()) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index a10f7e7..3867d2d 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -155,7 +155,7 @@
 import com.android.server.am.ActivityManagerService;
 import com.android.server.am.HostingRecord;
 import com.android.server.am.UserState;
-import com.android.server.pm.PackageManagerServiceUtils;
+import com.android.server.pm.SaferIntentUtils;
 import com.android.server.utils.Slogf;
 import com.android.server.wm.ActivityMetricsLogger.LaunchingState;
 
@@ -769,7 +769,7 @@
             // (e.g. AMS.startActivityAsUser).
             final long token = Binder.clearCallingIdentity();
             try {
-                return mService.getPackageManagerInternalLocked().resolveIntentExported(
+                return mService.getPackageManagerInternalLocked().resolveIntent(
                         intent, resolvedType, modifiedFlags, privateResolveFlags, userId, true,
                         filterCallingUid, callingPid);
             } finally {
@@ -2856,14 +2856,14 @@
             // We need to temporarily disable the explicit intent filter matching enforcement
             // because Task does not store the resolved type of the intent data, causing filter
             // mismatch in certain cases. (b/240373119)
-            PackageManagerServiceUtils.DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.set(true);
+            SaferIntentUtils.DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.set(true);
             return mService.getActivityStartController().startActivityInPackage(taskCallingUid,
                     callingPid, callingUid, callingPackage, callingFeatureId, intent, null, null,
                     null, 0, 0, options, userId, task, "startActivityFromRecents",
                     false /* validateIncomingUser */, null /* originatingPendingIntent */,
                     BackgroundStartPrivileges.NONE);
         } finally {
-            PackageManagerServiceUtils.DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.set(false);
+            SaferIntentUtils.DISABLE_ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS.set(false);
             synchronized (mService.mGlobalLock) {
                 mService.continueWindowLayout();
             }
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
index ac2c886..a4fb959 100644
--- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
+++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
@@ -31,6 +31,7 @@
 import static android.os.Process.ROOT_UID;
 import static android.os.Process.SYSTEM_UID;
 import static android.provider.DeviceConfig.NAMESPACE_WINDOW_MANAGER;
+import static android.security.Flags.asmOptSystemIntoEnforcement;
 
 import static com.android.server.wm.ActivityStarter.ASM_RESTRICTIONS;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_ACTIVITY_STARTS;
@@ -426,19 +427,6 @@
             return name + "[debugOnly]";
         }
 
-        /** @return valid targetSdk or <code>-1</code> */
-        private int getTargetSdk(String packageName) {
-            if (packageName == null) {
-                return -1;
-            }
-            try {
-                PackageManager pm = mService.mContext.getPackageManager();
-                return pm.getTargetSdkVersion(packageName);
-            } catch (Exception e) {
-                return -1;
-            }
-        }
-
         private boolean hasRealCaller() {
             return mRealCallingUid != NO_PROCESS_UID;
         }
@@ -1462,13 +1450,18 @@
             return bas.matchesSource();
         }
 
+        if (ar.isUid(SYSTEM_UID)) {
+            if (asmOptSystemIntoEnforcement()) {
+                return bas.optedIn(ar);
+            } else {
+                return bas;
+            }
+        }
+
         if (!CompatChanges.isChangeEnabled(ASM_RESTRICTIONS, ar.getUid())) {
             return bas;
         }
 
-        if (ar.isUid(SYSTEM_UID)) {
-            return bas.optedIn(ar);
-        }
 
         String packageName = ar.packageName;
         if (packageName == null) {
@@ -1566,6 +1559,7 @@
         joiner.add(prefix + "Allowed By Grace Period: " + allowedByGracePeriod);
         joiner.add(prefix + "LastResumedActivity: "
                        + recordToString.apply(mService.mLastResumedActivity));
+        joiner.add(prefix + "System opted into enforcement: " + asmOptSystemIntoEnforcement());
 
         if (mTopFinishedActivity != null) {
             joiner.add(prefix + "TopFinishedActivity: " + mTopFinishedActivity.mDebugInfo);
@@ -1723,7 +1717,9 @@
                 state.mResultForRealCaller == null ? BAL_BLOCK
                         : state.mResultForRealCaller.getRawCode(),
                 state.mBalAllowedByPiSender.allowsBackgroundActivityStarts(),
-                state.realCallerExplicitOptInOrOut()
+                state.realCallerExplicitOptInOrOut(),
+                getTargetSdk(state.mCallingPackage),
+                getTargetSdk(state.mRealCallingPackage)
         );
     }
 
@@ -1804,6 +1800,19 @@
                 + ", taskFragment=" + ar.getTaskFragment();
     }
 
+    /** @return valid targetSdk or <code>-1</code> */
+    private int getTargetSdk(String packageName) {
+        if (packageName == null) {
+            return -1;
+        }
+        try {
+            PackageManager pm = mService.mContext.getPackageManager();
+            return pm.getTargetSdkVersion(packageName);
+        } catch (Exception e) {
+            return -1;
+        }
+    }
+
     private class FinishedActivityEntry {
         int mUid;
         int mTaskId;
diff --git a/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java b/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java
index 125eb2a..be44629 100644
--- a/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java
+++ b/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java
@@ -194,6 +194,16 @@
             final Rect startBounds = new Rect(0, 0, mDisplayContent.mInitialDisplayWidth,
                     mDisplayContent.mInitialDisplayHeight);
             final int fromRotation = mDisplayContent.getRotation();
+            if (Flags.blastSyncNotificationShadeOnDisplaySwitch() && physicalDisplayUpdated) {
+                final WindowState notificationShade =
+                        mDisplayContent.getDisplayPolicy().getNotificationShade();
+                if (notificationShade != null && notificationShade.isVisible()
+                        && mDisplayContent.mAtmService.mKeyguardController.isKeyguardOrAodShowing(
+                                mDisplayContent.mDisplayId)) {
+                    Slog.i(TAG, notificationShade + " uses blast for display switch");
+                    notificationShade.mSyncMethodOverride = BLASTSyncEngine.METHOD_BLAST;
+                }
+            }
 
             mDisplayContent.mAtmService.deferWindowLayout();
             try {
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index e2b0932..a3a6b51 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -4160,6 +4160,7 @@
                 && mImeLayeringTarget != null
                 && mImeLayeringTarget.mActivityRecord != null
                 && mImeLayeringTarget.getWindowingMode() == WINDOWING_MODE_FULLSCREEN
+                && mImeLayeringTarget.getBounds().equals(mImeWindowsContainer.getBounds())
                 // IME is attached to app windows that fill display area. This excludes
                 // letterboxed windows.
                 && mImeLayeringTarget.matchesDisplayAreaBounds();
@@ -4191,7 +4192,12 @@
                 && target.getDisplayContent().getImePolicy() == DISPLAY_IME_POLICY_LOCAL) {
             return target;
         }
-        return getImeFallback();
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            final DisplayContent defaultDc = mWmService.getDefaultDisplayContentLocked();
+            return defaultDc.mRemoteInsetsControlTarget;
+        } else {
+            return getImeFallback();
+        }
     }
 
     InsetsControlTarget getImeFallback() {
@@ -4624,6 +4630,10 @@
                     && !mInputMethodSurfaceParent.isSameSurface(
                             mImeWindowsContainer.getParent().mSurfaceControl));
             updateImeControlTarget(forceUpdateImeParent);
+
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                mInsetsStateController.getImeSourceProvider().onInputTargetChanged(target);
+            }
         }
     }
 
@@ -4727,6 +4737,14 @@
             // in case seeing unexpected IME surface visibility change when delivering the IME leash
             // to the remote insets target during the IME restarting, but the focus window is not in
             // multi-windowing mode, return null target until the next input target updated.
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                // The control target could be the RemoteInsetsControlTarget (if the focussed
+                // view is on a virtual display that can not show the IME (and therefore it will
+                // be shown on the default display)
+                if (isDefaultDisplay && mRemoteInsetsControlTarget != null) {
+                    return mRemoteInsetsControlTarget;
+                }
+            }
             return null;
         }
 
@@ -7062,9 +7080,13 @@
 
         @Override
         public boolean isRequestedVisible(@InsetsType int types) {
-            return ((types & ime()) != 0
-                            && getInsetsStateController().getImeSourceProvider().isImeShowing())
-                    || (mRequestedVisibleTypes & types) != 0;
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                return (mRequestedVisibleTypes & types) != 0;
+            } else {
+                return ((types & ime()) != 0
+                        && getInsetsStateController().getImeSourceProvider().isImeShowing())
+                        || (mRequestedVisibleTypes & types) != 0;
+            }
         }
 
         @Override
@@ -7072,6 +7094,18 @@
             return mRequestedVisibleTypes;
         }
 
+        @Override
+        public void setImeInputTargetRequestedVisibility(boolean visible) {
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                try {
+                    // TODO stats token
+                    mRemoteInsetsController.setImeInputTargetRequestedVisibility(visible);
+                } catch (RemoteException e) {
+                    Slog.w(TAG, "Failed to deliver setImeInputTargetRequestedVisibility", e);
+                }
+            }
+        }
+
         /**
          * @see #getRequestedVisibleTypes()
          */
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index d0086aa..2f23955 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -2011,9 +2011,14 @@
             public String toString() {
                 final StringBuilder tmpSb = new StringBuilder(32);
                 return "{nonDecorInsets=" + mNonDecorInsets.toShortString(tmpSb)
+                        + ", overrideNonDecorInsets=" + mOverrideNonDecorInsets.toShortString(tmpSb)
                         + ", configInsets=" + mConfigInsets.toShortString(tmpSb)
+                        + ", overrideConfigInsets=" + mOverrideConfigInsets.toShortString(tmpSb)
                         + ", nonDecorFrame=" + mNonDecorFrame.toShortString(tmpSb)
-                        + ", configFrame=" + mConfigFrame.toShortString(tmpSb) + '}';
+                        + ", overrideNonDecorFrame=" + mOverrideNonDecorFrame.toShortString(tmpSb)
+                        + ", configFrame=" + mConfigFrame.toShortString(tmpSb)
+                        + ", overrideConfigFrame=" + mOverrideConfigFrame.toShortString(tmpSb)
+                        + '}';
             }
         }
 
diff --git a/services/core/java/com/android/server/wm/EventLogTags.logtags b/services/core/java/com/android/server/wm/EventLogTags.logtags
index d957591..cc2249de 100644
--- a/services/core/java/com/android/server/wm/EventLogTags.logtags
+++ b/services/core/java/com/android/server/wm/EventLogTags.logtags
@@ -59,6 +59,10 @@
 31002 wm_task_moved (TaskId|1|5),(Root Task ID|1|5),(Display Id|1|5),(ToTop|1),(Index|1)
 # Task removed with source explanation.
 31003 wm_task_removed (TaskId|1|5),(Root Task ID|1|5),(Display Id|1|5),(Reason|3)
+# Embedded TaskFragment created
+31004 wm_tf_created (Token|1|5),(TaskId|1|5)
+# Embedded TaskFragment removed
+31005 wm_tf_removed (Token|1|5),(TaskId|1|5)
 
 # Set the requested orientation of an activity.
 31006 wm_set_requested_orientation (Orientation|1|5),(Component Name|3)
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index e03ff688..156e9f9 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -36,6 +36,7 @@
 import android.view.InsetsSourceConsumer;
 import android.view.InsetsSourceControl;
 import android.view.WindowInsets;
+import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -73,12 +74,51 @@
      */
     private boolean mServerVisible;
 
+    /**
+     * When the IME is not ready, it has givenInsetsPending. However, this could happen again,
+     * after it became serverVisible. This flag indicates is used to determine if it is
+     * readyForDispatching
+     */
+    private boolean mGivenInsetsReady = false;
+
     ImeInsetsSourceProvider(@NonNull InsetsSource source,
             @NonNull InsetsStateController stateController,
             @NonNull DisplayContent displayContent) {
         super(source, stateController, displayContent);
     }
 
+    @Override
+    void onPostLayout() {
+        super.onPostLayout();
+
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            final WindowState ws =
+                    mWindowContainer != null ? mWindowContainer.asWindowState() : null;
+            final boolean givenInsetsPending = ws != null && ws.mGivenInsetsPending;
+
+            // isLeashReadyForDispatching (used to dispatch the leash of the control) is
+            // depending on mGivenInsetsReady. Therefore, triggering notifyControlChanged here
+            // again, so that the control with leash can be eventually dispatched
+            if (!mGivenInsetsReady && mServerVisible && !givenInsetsPending) {
+                mGivenInsetsReady = true;
+                mStateController.notifyControlChanged(mControlTarget);
+            }
+        }
+    }
+
+    @Override
+    protected boolean isLeashReadyForDispatching() {
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            final WindowState ws =
+                    mWindowContainer != null ? mWindowContainer.asWindowState() : null;
+            final boolean isDrawn = ws != null && ws.isDrawn();
+            return super.isLeashReadyForDispatching() && mServerVisible && isDrawn
+                    && mGivenInsetsReady;
+        } else {
+            return super.isLeashReadyForDispatching();
+        }
+    }
+
     @Nullable
     @Override
     InsetsSourceControl getControl(InsetsControlTarget target) {
@@ -122,7 +162,16 @@
 
     @Override
     void setServerVisible(boolean serverVisible) {
-        mServerVisible = serverVisible;
+        if (mServerVisible != serverVisible) {
+            mServerVisible = serverVisible;
+            // reset the leash if the server visibility becomes hidden
+            if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                if (!serverVisible && !mFrozen) {
+                    mGivenInsetsReady = false;
+                    updateControlForTarget(mControlTarget, true /* force */);
+                }
+            }
+        }
         if (!mFrozen) {
             super.setServerVisible(serverVisible);
         }
@@ -154,7 +203,13 @@
 
     @Override
     protected void updateVisibility() {
+        boolean oldVisibility = mSource.isVisible();
         super.updateVisibility();
+        if (Flags.refactorInsetsController()) {
+            if (mSource.isVisible() && !oldVisibility && mImeRequester != null) {
+                reportImeDrawnForOrganizerIfNeeded(mImeRequester);
+            }
+        }
         onSourceChanged();
     }
 
@@ -166,21 +221,92 @@
             target = target.getWindow().getImeControlTarget();
         }
         super.updateControlForTarget(target, force);
+        if (Flags.refactorInsetsController()) {
+            if (target != null) {
+                invokeOnImeRequestedChangedListener(target.getWindow());
+            }
+        }
     }
 
     @Override
     protected boolean updateClientVisibility(InsetsControlTarget caller) {
-        if (caller != getControlTarget()) {
+        InsetsControlTarget controlTarget = getControlTarget();
+        if (caller != controlTarget) {
+            if (Flags.refactorInsetsController()) {
+                if (isImeInputTarget(caller)) {
+                    // In case of the multi window mode, update the requestedVisibleTypes from
+                    // the controlTarget (=RemoteInsetsControlTarget) via DisplayImeController.
+                    // Then, trigger onRequestedVisibleTypesChanged for the controlTarget with
+                    // its new requested visibility for the IME
+                    boolean imeVisible = caller.isRequestedVisible(WindowInsets.Type.ime());
+                    if (controlTarget != null) {
+                        controlTarget.setImeInputTargetRequestedVisibility(imeVisible);
+                    } else {
+                        // In case of a virtual display that cannot show the IME, the
+                        // controlTarget will be null here, as no controlTarget was set yet. In
+                        // that case, proceed similar to the multi window mode (fallback =
+                        // RemoteInsetsControlTarget of the default display)
+                        controlTarget = mDisplayContent.getImeHostOrFallback(caller.getWindow());
+
+                        if (controlTarget != caller) {
+                            controlTarget.setImeInputTargetRequestedVisibility(imeVisible);
+                        }
+                    }
+
+                    WindowState windowState = caller.getWindow();
+                    invokeOnImeRequestedChangedListener(windowState);
+                }
+            }
             return false;
         }
         boolean changed = super.updateClientVisibility(caller);
-        if (changed && caller.isRequestedVisible(mSource.getType())) {
-            reportImeDrawnForOrganizerIfNeeded(caller);
+        if (!Flags.refactorInsetsController()) {
+            if (changed && caller.isRequestedVisible(mSource.getType())) {
+                reportImeDrawnForOrganizerIfNeeded(caller);
+            }
         }
         changed |= mDisplayContent.onImeInsetsClientVisibilityUpdate();
+        if (Flags.refactorInsetsController()) {
+            if (changed) {
+                // RemoteInsetsControlTarget does not have a window. In this case, we use the
+                // windowState from the imeInputTarget
+                WindowState windowState = caller.getWindow() != null ? caller.getWindow()
+                        : ((mDisplayContent.getImeInputTarget() != null)
+                                ? mDisplayContent.getImeInputTarget().getWindowState() : null);
+                invokeOnImeRequestedChangedListener(windowState);
+            }
+        }
         return changed;
     }
 
+    void onInputTargetChanged(InputTarget target) {
+        if (Flags.refactorInsetsController() && target != null) {
+            WindowState targetWin = target.getWindowState();
+            InsetsControlTarget imeControlTarget = getControlTarget();
+            if (target != imeControlTarget && targetWin != null) {
+                // If the targetWin is not the imeControlTarget (=RemoteInsetsControlTarget) let it
+                // know about the new requestedVisibleTypes for the IME.
+                if (imeControlTarget != null) {
+                    imeControlTarget.setImeInputTargetRequestedVisibility(
+                            (targetWin.getRequestedVisibleTypes()
+                                    & WindowInsets.Type.ime()) != 0);
+                }
+            }
+        }
+    }
+
+    private void invokeOnImeRequestedChangedListener(WindowState windowState) {
+        final var imeListener = mDisplayContent.mWmService.mOnImeRequestedChangedListener;
+        if (imeListener != null) {
+            if (windowState != null) {
+                mDisplayContent.mWmService.mH.post(() -> {
+                    imeListener.onImeRequestedChanged(windowState.mClient.asBinder(),
+                            windowState.isRequestedVisible(WindowInsets.Type.ime()));
+                });
+            }
+        }
+    }
+
     private void reportImeDrawnForOrganizerIfNeeded(@NonNull InsetsControlTarget caller) {
         final WindowState callerWindow = caller.getWindow();
         if (callerWindow == null) {
@@ -273,6 +399,19 @@
             // This can later become ready, so we don't want to cancel the pending request here.
             return;
         }
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            // Clear token here so we don't report an error in abortShowImePostLayout().
+            abortShowImePostLayout();
+            // The IME is drawn, so call into {@link WindowState#notifyInsetsControlChanged}
+            // if we have a leash
+            if (mControl != null && mControl.getLeash() != null
+                    && mControlTarget.getWindow() != null
+                    && !mControlTarget.getWindow().mGivenInsetsPending) {
+                int displayId = mDisplayContent.getDisplayId();
+                mControlTarget.notifyInsetsControlChanged(displayId);
+            }
+            return;
+        }
 
         ImeTracker.forLogging().onProgress(mStatsToken, ImeTracker.PHASE_WM_SHOW_IME_RUNNER);
         ProtoLog.d(WM_DEBUG_IME, "Run showImeRunner");
diff --git a/services/core/java/com/android/server/wm/InsetsControlTarget.java b/services/core/java/com/android/server/wm/InsetsControlTarget.java
index cc3de7a..07e249a 100644
--- a/services/core/java/com/android/server/wm/InsetsControlTarget.java
+++ b/services/core/java/com/android/server/wm/InsetsControlTarget.java
@@ -85,6 +85,13 @@
         return false;
     }
 
+    /**
+     * @param visible the requested visibility for the IME, used for
+     * {@link com.android.server.wm.DisplayContent.RemoteInsetsControlTarget}
+     */
+    default void setImeInputTargetRequestedVisibility(boolean visible) {
+    }
+
     /** Returns {@code target.getWindow()}, or null if {@code target} is {@code null}. */
     static WindowState asWindowOrNull(InsetsControlTarget target) {
         return target != null ? target.getWindow() : null;
diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
index 2288fe9..f68b67f6 100644
--- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
@@ -69,12 +69,12 @@
     protected final @NonNull InsetsStateController mStateController;
     protected @Nullable WindowContainer mWindowContainer;
     protected @Nullable InsetsSourceControl mControl;
+    protected @Nullable InsetsControlTarget mControlTarget;
     protected boolean mIsLeashReadyForDispatching;
 
     private final Rect mTmpRect = new Rect();
     private final InsetsSourceControl mFakeControl;
     private final Consumer<Transaction> mSetLeashPositionConsumer;
-    private @Nullable InsetsControlTarget mControlTarget;
     private @Nullable InsetsControlTarget mPendingControlTarget;
     private @Nullable InsetsControlTarget mFakeControlTarget;
 
@@ -350,11 +350,27 @@
         boolean isServerVisible = windowState != null
                 ? windowState.wouldBeVisibleIfPolicyIgnored() && windowState.isVisibleByPolicy()
                 : mWindowContainer.isVisibleRequested();
+
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            if (mControl != null && mControl.getType() == WindowInsets.Type.ime() && !mServerVisible
+                    && isServerVisible && windowState != null) {
+                // in case the IME becomes visible, we need to check if it is already drawn and
+                // does not have given insets pending. If it's not yet drawn, we do not set
+                // server visibility
+                isServerVisible = windowState.isDrawn() && !windowState.mGivenInsetsPending;
+            }
+        }
+        final boolean serverVisibleChanged = mServerVisible != isServerVisible;
         setServerVisible(isServerVisible);
-        updateInsetsControlPosition(windowState);
+        updateInsetsControlPosition(windowState, serverVisibleChanged);
     }
 
     void updateInsetsControlPosition(WindowState windowState) {
+        updateInsetsControlPosition(windowState, false);
+    }
+
+    private void updateInsetsControlPosition(WindowState windowState,
+            boolean serverVisibleChanged) {
         if (mControl == null) {
             return;
         }
@@ -390,6 +406,9 @@
             mControl.setInsetsHint(insetsHint);
             changed = true;
         }
+        if (android.view.inputmethod.Flags.refactorInsetsController() && serverVisibleChanged) {
+            changed = true;
+        }
         if (changed) {
             mStateController.notifyControlChanged(mControlTarget);
         }
@@ -590,6 +609,10 @@
                 mServerVisible, mClientVisible);
     }
 
+    protected boolean isLeashReadyForDispatching() {
+        return mIsLeashReadyForDispatching;
+    }
+
     /**
      * Gets the source control for the given control target. If this is the provider's control
      * target, but the leash is not ready for dispatching, a new source control object with the
@@ -600,7 +623,7 @@
     @Nullable
     InsetsSourceControl getControl(InsetsControlTarget target) {
         if (target == mControlTarget) {
-            if (!mIsLeashReadyForDispatching && mControl != null) {
+            if (!isLeashReadyForDispatching() && mControl != null) {
                 // The surface transaction of preparing leash is not applied yet. We don't send it
                 // to the client in case that the client applies its transaction sooner than ours
                 // that we could unexpectedly overwrite the surface state.
@@ -750,9 +773,11 @@
                 @AnimationType int type, @NonNull OnAnimationFinishedCallback finishCallback) {
             // TODO(b/166736352): Check if we still need to control the IME visibility here.
             if (mSource.getType() == WindowInsets.Type.ime()) {
-                // TODO: use 0 alpha and remove t.hide() once b/138459974 is fixed.
-                t.setAlpha(animationLeash, 1 /* alpha */);
-                t.hide(animationLeash);
+                if (!android.view.inputmethod.Flags.refactorInsetsController() || !mClientVisible) {
+                    // TODO: use 0 alpha and remove t.hide() once b/138459974 is fixed.
+                    t.setAlpha(animationLeash, 1 /* alpha */);
+                    t.hide(animationLeash);
+                }
             }
             ProtoLog.i(WM_DEBUG_WINDOW_INSETS,
                     "ControlAdapter startAnimation mSource: %s controlTarget: %s", mSource,
diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java
index 7a1f57b..a967f7a 100644
--- a/services/core/java/com/android/server/wm/InsetsStateController.java
+++ b/services/core/java/com/android/server/wm/InsetsStateController.java
@@ -221,10 +221,13 @@
         for (int i = mProviders.size() - 1; i >= 0; i--) {
             changed |= mProviders.valueAt(i).updateClientVisibility(caller);
         }
-        if (changed) {
-            notifyInsetsChanged();
-            mDisplayContent.updateSystemGestureExclusion();
-            mDisplayContent.getDisplayPolicy().updateSystemBarAttributes();
+        if (!android.view.inputmethod.Flags.refactorInsetsController()) {
+            if (changed) {
+                notifyInsetsChanged();
+                mDisplayContent.updateSystemGestureExclusion();
+
+                mDisplayContent.getDisplayPolicy().updateSystemBarAttributes();
+            }
         }
     }
 
@@ -357,6 +360,13 @@
     void notifyControlChanged(InsetsControlTarget target) {
         mPendingControlChanged.add(target);
         notifyPendingInsetsControlChanged();
+
+        if (android.view.inputmethod.Flags.refactorInsetsController()) {
+            notifyInsetsChanged();
+            mDisplayContent.updateSystemGestureExclusion();
+            mDisplayContent.updateKeepClearAreas();
+            mDisplayContent.getDisplayPolicy().updateSystemBarAttributes();
+        }
     }
 
     private void notifyPendingInsetsControlChanged() {
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java
index b8d0694..5e93e89 100644
--- a/services/core/java/com/android/server/wm/LetterboxUiController.java
+++ b/services/core/java/com/android/server/wm/LetterboxUiController.java
@@ -40,7 +40,6 @@
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
-import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER;
 import static android.content.pm.ActivityInfo.isFixedOrientation;
 import static android.content.pm.ActivityInfo.isFixedOrientationLandscape;
@@ -54,10 +53,6 @@
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN;
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;
 import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
-import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
-import static android.content.res.Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
-import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED;
-import static android.content.res.Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
 import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
 import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
@@ -80,7 +75,6 @@
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__RIGHT;
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__TOP;
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__UNKNOWN_POSITION;
-import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
 import static com.android.internal.util.FrameworkStatsLog.LETTERBOX_POSITION_CHANGED__POSITION_CHANGE__BOTTOM_TO_CENTER;
 import static com.android.internal.util.FrameworkStatsLog.LETTERBOX_POSITION_CHANGED__POSITION_CHANGE__CENTER_TO_BOTTOM;
 import static com.android.internal.util.FrameworkStatsLog.LETTERBOX_POSITION_CHANGED__POSITION_CHANGE__CENTER_TO_LEFT;
@@ -135,12 +129,7 @@
 import com.android.window.flags.Flags;
 
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
 import java.util.function.BooleanSupplier;
-import java.util.function.Consumer;
-import java.util.function.Predicate;
 
 /** Controls behaviour of the letterbox UI for {@link mActivityRecord}. */
 // TODO(b/185262487): Improve test coverage of this class. Parts of it are tested in
@@ -150,13 +139,8 @@
 // TODO(b/263021211): Consider renaming to more generic CompatUIController.
 final class LetterboxUiController {
 
-    private static final Predicate<ActivityRecord> FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE =
-            ActivityRecord::occludesParent;
-
     private static final String TAG = TAG_WITH_CLASS_NAME ? "LetterboxUiController" : TAG_ATM;
 
-    private static final float UNDEFINED_ASPECT_RATIO = 0f;
-
     // Minimum value of mSetOrientationRequestCounter before qualifying as orientation request loop
     @VisibleForTesting
     static final int MIN_COUNT_TO_IGNORE_REQUEST_IN_LOOP = 2;
@@ -188,10 +172,6 @@
     // Corresponds to OVERRIDE_RESPECT_REQUESTED_ORIENTATION
     private final boolean mIsOverrideRespectRequestedOrientationEnabled;
 
-    // The list of observers for the destroy event of candidate opaque activities
-    // when dealing with translucent activities.
-    private final List<LetterboxUiController> mDestroyListeners = new ArrayList<>();
-
     @NonNull
     private final OptProp mAllowOrientationOverrideOptProp;
     @NonNull
@@ -206,34 +186,11 @@
     @NonNull
     private final OptProp mAllowUserAspectRatioFullscreenOverrideOptProp;
 
-    /*
-     * WindowContainerListener responsible to make translucent activities inherit
-     * constraints from the first opaque activity beneath them. It's null for not
-     * translucent activities.
-     */
-    @Nullable
-    private WindowContainerListener mLetterboxConfigListener;
-
-    @Nullable
-    @VisibleForTesting
-    ActivityRecord mFirstOpaqueActivityBeneath;
-
     private boolean mShowWallpaperForLetterboxBackground;
 
-    // In case of transparent activities we might need to access the aspectRatio of the
-    // first opaque activity beneath.
-    private float mInheritedMinAspectRatio = UNDEFINED_ASPECT_RATIO;
-    private float mInheritedMaxAspectRatio = UNDEFINED_ASPECT_RATIO;
-
     // Updated when ActivityRecord#setRequestedOrientation is called
     private long mTimeMsLastSetOrientationRequest = 0;
 
-    @Configuration.Orientation
-    private int mInheritedOrientation = ORIENTATION_UNDEFINED;
-
-    // The app compat state for the opaque activity if any
-    private int mInheritedAppCompatState = APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
-
     // Counter for ActivityRecord#setRequestedOrientation
     private int mSetOrientationRequestCounter = 0;
 
@@ -242,9 +199,6 @@
     @PackageManager.UserMinAspectRatio
     private int mUserAspectRatio = USER_MIN_ASPECT_RATIO_UNSET;
 
-    // The CompatDisplayInsets of the opaque activity beneath the translucent one.
-    private ActivityRecord.CompatDisplayInsets mInheritedCompatDisplayInsets;
-
     @Nullable
     private Letterbox mLetterbox;
 
@@ -361,14 +315,7 @@
             mLetterbox.destroy();
             mLetterbox = null;
         }
-        for (int i = mDestroyListeners.size() - 1; i >= 0; i--) {
-            mDestroyListeners.get(i).updateInheritedLetterbox();
-        }
-        mDestroyListeners.clear();
-        if (mLetterboxConfigListener != null) {
-            mLetterboxConfigListener.onRemoved();
-            mLetterboxConfigListener = null;
-        }
+        mActivityRecord.mTransparentPolicy.stop();
     }
 
     void onMovedToDisplay(int displayId) {
@@ -877,7 +824,7 @@
             // For this reason we use ActivityRecord#getBounds() that the translucent activity
             // inherits from the first opaque activity beneath and also takes care of the scaling
             // in case of activities in size compat mode.
-            final Rect innerFrame = hasInheritedLetterboxBehavior()
+            final Rect innerFrame = mActivityRecord.mTransparentPolicy.isRunning()
                     ? mActivityRecord.getBounds() : w.getFrame();
             mLetterbox.layout(spaceToFill, innerFrame, mTmpPoint);
             if (mDoubleTapEvent) {
@@ -1341,19 +1288,20 @@
         if (!allowHorizontalReachabilityForThinLetterbox()) {
             return false;
         }
+        final Rect parentAppBoundsOverride = mActivityRecord.getParentAppBoundsOverride();
+        final Rect parentAppBounds = parentAppBoundsOverride != null
+                ? parentAppBoundsOverride : parentConfiguration.windowConfiguration.getAppBounds();
         // Use screen resolved bounds which uses resolved bounds or size compat bounds
         // as activity bounds can sometimes be empty
-        final Rect opaqueActivityBounds = hasInheritedLetterboxBehavior()
-                ? mFirstOpaqueActivityBeneath.getScreenResolvedBounds()
-                : mActivityRecord.getScreenResolvedBounds();
+        final Rect opaqueActivityBounds = mActivityRecord.mTransparentPolicy
+                .getFirstOpaqueActivity().map(ActivityRecord::getScreenResolvedBounds)
+                .orElse(mActivityRecord.getScreenResolvedBounds());
         return mLetterboxConfiguration.getIsHorizontalReachabilityEnabled()
                 && parentConfiguration.windowConfiguration.getWindowingMode()
                         == WINDOWING_MODE_FULLSCREEN
                 // Check whether the activity fills the parent vertically.
-                && parentConfiguration.windowConfiguration.getAppBounds().height()
-                        <= opaqueActivityBounds.height()
-                && parentConfiguration.windowConfiguration.getAppBounds().width()
-                        > opaqueActivityBounds.width();
+                && parentAppBounds.height() <= opaqueActivityBounds.height()
+                && parentAppBounds.width() > opaqueActivityBounds.width();
     }
 
     @VisibleForTesting
@@ -1379,19 +1327,20 @@
         if (!allowVerticalReachabilityForThinLetterbox()) {
             return false;
         }
+        final Rect parentAppBoundsOverride = mActivityRecord.getParentAppBoundsOverride();
+        final Rect parentAppBounds = parentAppBoundsOverride != null
+                ? parentAppBoundsOverride : parentConfiguration.windowConfiguration.getAppBounds();
         // Use screen resolved bounds which uses resolved bounds or size compat bounds
-        // as activity bounds can sometimes be empty
-        final Rect opaqueActivityBounds = hasInheritedLetterboxBehavior()
-                ? mFirstOpaqueActivityBeneath.getScreenResolvedBounds()
-                : mActivityRecord.getScreenResolvedBounds();
+        // as activity bounds can sometimes be empty.
+        final Rect opaqueActivityBounds = mActivityRecord.mTransparentPolicy
+                .getFirstOpaqueActivity().map(ActivityRecord::getScreenResolvedBounds)
+                .orElse(mActivityRecord.getScreenResolvedBounds());
         return mLetterboxConfiguration.getIsVerticalReachabilityEnabled()
                 && parentConfiguration.windowConfiguration.getWindowingMode()
                         == WINDOWING_MODE_FULLSCREEN
                 // Check whether the activity fills the parent horizontally.
-                && parentConfiguration.windowConfiguration.getAppBounds().width()
-                        <= opaqueActivityBounds.width()
-                && parentConfiguration.windowConfiguration.getAppBounds().height()
-                        > opaqueActivityBounds.height();
+                && parentAppBounds.width() <= opaqueActivityBounds.width()
+                && parentAppBounds.height() > opaqueActivityBounds.height();
     }
 
     @VisibleForTesting
@@ -1490,7 +1439,8 @@
         // corners because we assume the specific layout would. This is the case when the layout
         // of the translucent activity uses only a part of all the bounds because of the use of
         // LayoutParams.WRAP_CONTENT.
-        if (hasInheritedLetterboxBehavior() && (cropBounds.width() != mainWindow.mRequestedWidth
+        if (mActivityRecord.mTransparentPolicy.isRunning()
+                && (cropBounds.width() != mainWindow.mRequestedWidth
                 || cropBounds.height() != mainWindow.mRequestedHeight)) {
             return null;
         }
@@ -1794,173 +1744,6 @@
         );
     }
 
-    /**
-     * Handles translucent activities letterboxing inheriting constraints from the
-     * first opaque activity beneath.
-     * @param parent The parent container.
-     */
-    void updateInheritedLetterbox() {
-        final WindowContainer<?> parent = mActivityRecord.getParent();
-        if (parent == null) {
-            return;
-        }
-        if (!mLetterboxConfiguration.isTranslucentLetterboxingEnabled()) {
-            return;
-        }
-        if (mLetterboxConfigListener != null) {
-            mLetterboxConfigListener.onRemoved();
-            clearInheritedConfig();
-        }
-        // In case mActivityRecord.hasCompatDisplayInsetsWithoutOverride() we don't apply the
-        // opaque activity constraints because we're expecting the activity is already letterboxed.
-        mFirstOpaqueActivityBeneath = mActivityRecord.getTask().getActivity(
-                FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE /* callback */,
-                mActivityRecord /* boundary */, false /* includeBoundary */,
-                true /* traverseTopToBottom */);
-        if (mFirstOpaqueActivityBeneath == null || mFirstOpaqueActivityBeneath.isEmbedded()) {
-            // We skip letterboxing if the translucent activity doesn't have any opaque
-            // activities beneath or the activity below is embedded which never has letterbox.
-            mActivityRecord.recomputeConfiguration();
-            return;
-        }
-        if (mActivityRecord.getTask() == null || mActivityRecord.fillsParent()
-                || mActivityRecord.hasCompatDisplayInsetsWithoutInheritance()) {
-            return;
-        }
-        mFirstOpaqueActivityBeneath.mLetterboxUiController.mDestroyListeners.add(this);
-        inheritConfiguration(mFirstOpaqueActivityBeneath);
-        mLetterboxConfigListener = WindowContainer.overrideConfigurationPropagation(
-                mActivityRecord, mFirstOpaqueActivityBeneath,
-                (opaqueConfig, transparentOverrideConfig) -> {
-                    resetTranslucentOverrideConfig(transparentOverrideConfig);
-                    final Rect parentBounds = parent.getWindowConfiguration().getBounds();
-                    final Rect bounds = transparentOverrideConfig.windowConfiguration.getBounds();
-                    final Rect letterboxBounds = opaqueConfig.windowConfiguration.getBounds();
-                    // We cannot use letterboxBounds directly here because the position relies on
-                    // letterboxing. Using letterboxBounds directly, would produce a double offset.
-                    bounds.set(parentBounds.left, parentBounds.top,
-                            parentBounds.left + letterboxBounds.width(),
-                            parentBounds.top + letterboxBounds.height());
-                    // We need to initialize appBounds to avoid NPE. The actual value will
-                    // be set ahead when resolving the Configuration for the activity.
-                    transparentOverrideConfig.windowConfiguration.setAppBounds(new Rect());
-                    inheritConfiguration(mFirstOpaqueActivityBeneath);
-                    return transparentOverrideConfig;
-                });
-    }
-
-    /**
-     * @return {@code true} if the current activity is translucent with an opaque activity
-     * beneath. In this case it will inherit bounds, orientation and aspect ratios from
-     * the first opaque activity beneath.
-     */
-    boolean hasInheritedLetterboxBehavior() {
-        return mLetterboxConfigListener != null;
-    }
-
-    /**
-     * @return {@code true} if the current activity is translucent with an opaque activity
-     * beneath and needs to inherit its orientation.
-     */
-    boolean hasInheritedOrientation() {
-        // To force a different orientation, the transparent one needs to have an explicit one
-        // otherwise the existing one is fine and the actual orientation will depend on the
-        // bounds.
-        // To avoid wrong behaviour, we're not forcing orientation for activities with not
-        // fixed orientation (e.g. permission dialogs).
-        return hasInheritedLetterboxBehavior()
-                && mActivityRecord.getOverrideOrientation()
-                        != SCREEN_ORIENTATION_UNSPECIFIED;
-    }
-
-    float getInheritedMinAspectRatio() {
-        return mInheritedMinAspectRatio;
-    }
-
-    float getInheritedMaxAspectRatio() {
-        return mInheritedMaxAspectRatio;
-    }
-
-    int getInheritedAppCompatState() {
-        return mInheritedAppCompatState;
-    }
-
-    @Configuration.Orientation
-    int getInheritedOrientation() {
-        return mInheritedOrientation;
-    }
-
-    ActivityRecord.CompatDisplayInsets getInheritedCompatDisplayInsets() {
-        return mInheritedCompatDisplayInsets;
-    }
-
-    void clearInheritedCompatDisplayInsets() {
-        mInheritedCompatDisplayInsets = null;
-    }
-
-    /**
-     * In case of translucent activities, it consumes the {@link ActivityRecord} of the first opaque
-     * activity beneath using the given consumer and returns {@code true}.
-     */
-    boolean applyOnOpaqueActivityBelow(@NonNull Consumer<ActivityRecord> consumer) {
-        return findOpaqueNotFinishingActivityBelow()
-                .map(activityRecord -> {
-                    consumer.accept(activityRecord);
-                    return true;
-                }).orElse(false);
-    }
-
-    /**
-     * @return The first not finishing opaque activity beneath the current translucent activity
-     * if it exists and the strategy is enabled.
-     */
-    Optional<ActivityRecord> findOpaqueNotFinishingActivityBelow() {
-        if (!hasInheritedLetterboxBehavior() || mActivityRecord.getTask() == null) {
-            return Optional.empty();
-        }
-        return Optional.ofNullable(mFirstOpaqueActivityBeneath);
-    }
-
-    /** Resets the screen size related fields so they can be resolved by requested bounds later. */
-    private static void resetTranslucentOverrideConfig(Configuration config) {
-        // The values for the following properties will be defined during the configuration
-        // resolution in {@link ActivityRecord#resolveOverrideConfiguration} using the
-        // properties inherited from the first not finishing opaque activity beneath.
-        config.orientation = ORIENTATION_UNDEFINED;
-        config.screenWidthDp = config.compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED;
-        config.screenHeightDp = config.compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED;
-        config.smallestScreenWidthDp = config.compatSmallestScreenWidthDp =
-                SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
-    }
-
-    private void inheritConfiguration(ActivityRecord firstOpaque) {
-        // To avoid wrong behaviour, we're not forcing a specific aspect ratio to activities
-        // which are not already providing one (e.g. permission dialogs) and presumably also
-        // not resizable.
-        if (mActivityRecord.getMinAspectRatio() != UNDEFINED_ASPECT_RATIO) {
-            mInheritedMinAspectRatio = firstOpaque.getMinAspectRatio();
-        }
-        if (mActivityRecord.getMaxAspectRatio() != UNDEFINED_ASPECT_RATIO) {
-            mInheritedMaxAspectRatio = firstOpaque.getMaxAspectRatio();
-        }
-        mInheritedOrientation = firstOpaque.getRequestedConfigurationOrientation();
-        mInheritedAppCompatState = firstOpaque.getAppCompatState();
-        mInheritedCompatDisplayInsets = firstOpaque.getCompatDisplayInsets();
-    }
-
-    private void clearInheritedConfig() {
-        if (mFirstOpaqueActivityBeneath != null) {
-            mFirstOpaqueActivityBeneath.mLetterboxUiController.mDestroyListeners.remove(this);
-        }
-        mFirstOpaqueActivityBeneath = null;
-        mLetterboxConfigListener = null;
-        mInheritedMinAspectRatio = UNDEFINED_ASPECT_RATIO;
-        mInheritedMaxAspectRatio = UNDEFINED_ASPECT_RATIO;
-        mInheritedOrientation = ORIENTATION_UNDEFINED;
-        mInheritedAppCompatState = APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
-        mInheritedCompatDisplayInsets = null;
-    }
-
     @NonNull
     private static BooleanSupplier asLazy(@NonNull BooleanSupplier supplier) {
         return new BooleanSupplier() {
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index be8c2ae..9c7c41c 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -1693,7 +1693,7 @@
     }
 
     /**
-     * Check if home activity start should be allowed on a display.
+     * Check if home activity start should be allowed on a {@link TaskDisplayArea}.
      *
      * @param homeInfo           {@code ActivityInfo} of the home activity that is going to be
      *                           launched.
@@ -1717,6 +1717,10 @@
             return false;
         }
 
+        if (taskDisplayArea != null && !taskDisplayArea.canHostHomeTask()) {
+            return false;
+        }
+
         final int displayId = taskDisplayArea != null ? taskDisplayArea.getDisplayId()
                 : INVALID_DISPLAY;
         if (shouldPlacePrimaryHomeOnDisplay(displayId)) {
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 6c48e95..13883fd 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -3739,7 +3739,13 @@
         return !isOwnActivity && !isTrustedTaskFragment;
     }
 
-    void setDecorSurfaceBoosted(
+    /**
+     * Sets the requested boosted state for the decor surface.
+     *
+     * The caller must call {@link #commitDecorSurfaceBoostedState()} to ensure that the change is
+     * applied.
+     */
+    void requestDecorSurfaceBoosted(
             @NonNull TaskFragment ownerTaskFragment,
             boolean isBoosted,
             @Nullable SurfaceControl.Transaction clientTransaction) {
@@ -3747,9 +3753,17 @@
                 || mDecorSurfaceContainer.mOwnerTaskFragment != ownerTaskFragment) {
             return;
         }
-        mDecorSurfaceContainer.setBoosted(isBoosted, clientTransaction);
-        // scheduleAnimation() is called inside assignChildLayers(), which ensures that child
-        // surface visibility is updated with prepareSurfaces()
+        mDecorSurfaceContainer.requestBoosted(isBoosted, clientTransaction);
+    }
+
+    void commitDecorSurfaceBoostedState() {
+        if (mDecorSurfaceContainer == null) {
+            return;
+        }
+        mDecorSurfaceContainer.commitBoostedState();
+
+        // assignChildLayers() calls scheduleAnimation(), which calls prepareSurfaces()
+        // to ensure child surface visibility.
         assignChildLayers();
     }
 
@@ -4563,7 +4577,10 @@
         }
         final WindowState w = getTopVisibleAppMainWindow();
         if (w != null) {
+            w.mIsSurfacePositionPaused = true;
             w.applyWithNextDraw((d) -> {
+                w.mIsSurfacePositionPaused = false;
+                w.updateSurfacePosition(d);
                 d.merge(t);
             });
         } else {
@@ -6787,11 +6804,11 @@
      * Associates the decor surface with the given TF, or create one if there
      * isn't one in the Task yet. The surface will be removed with the TF,
      * and become invisible if the TF is invisible. */
-    void moveOrCreateDecorSurfaceFor(TaskFragment taskFragment) {
+    void moveOrCreateDecorSurfaceFor(TaskFragment taskFragment, boolean visible) {
         if (mDecorSurfaceContainer != null) {
             mDecorSurfaceContainer.mOwnerTaskFragment = taskFragment;
         } else {
-            mDecorSurfaceContainer = new DecorSurfaceContainer(taskFragment);
+            mDecorSurfaceContainer = new DecorSurfaceContainer(taskFragment, visible);
             assignChildLayers();
             sendTaskFragmentParentInfoChangedIfNeeded();
         }
@@ -6810,6 +6827,13 @@
         return mDecorSurfaceContainer != null ? mDecorSurfaceContainer.mDecorSurface : null;
     }
 
+    void setDecorSurfaceVisible(@NonNull SurfaceControl.Transaction t) {
+        if (mDecorSurfaceContainer == null) {
+            return;
+        }
+        t.show(mDecorSurfaceContainer.mDecorSurface);
+    }
+
     /**
      * A class managing the decor surface.
      *
@@ -6849,12 +6873,13 @@
         @NonNull TaskFragment mOwnerTaskFragment;
 
         private boolean mIsBoosted;
+        private boolean mIsBoostedRequested;
 
         // The surface transactions that will be applied when the layer is reassigned.
         @NonNull private final List<SurfaceControl.Transaction> mPendingClientTransactions =
                 new ArrayList<>();
 
-        private DecorSurfaceContainer(@NonNull TaskFragment initialOwner) {
+        private DecorSurfaceContainer(@NonNull TaskFragment initialOwner, boolean visible) {
             mOwnerTaskFragment = initialOwner;
             mContainerSurface = makeSurface().setContainerLayer()
                     .setParent(mSurfaceControl)
@@ -6867,23 +6892,36 @@
             mDecorSurface = makeSurface()
                     .setParent(mContainerSurface)
                     .setName(mSurfaceControl + " - decor surface")
-                    .setHidden(false)
+                    .setHidden(!visible)
                     .setCallsite("Task.DecorSurfaceContainer")
                     .build();
         }
 
-        private void setBoosted(
+        /**
+         * Sets the requested boosted state. The state is not applied until
+         * {@link commitBoostedState} is called.
+         */
+        private void requestBoosted(
                 boolean isBoosted, @Nullable SurfaceControl.Transaction clientTransaction) {
-            mIsBoosted = isBoosted;
-            // The client transaction will be applied together with the next assignLayer.
+            mIsBoostedRequested = isBoosted;
+            // The client transaction will be applied together with the next commitBoostedState.
             if (clientTransaction != null) {
                 mPendingClientTransactions.add(clientTransaction);
             }
         }
 
+        /** Applies the last requested boosted state. */
+        private void commitBoostedState() {
+            mIsBoosted = mIsBoostedRequested;
+            applyPendingClientTransactions(getSyncTransaction());
+        }
+
         private void assignLayer(@NonNull SurfaceControl.Transaction t, int layer) {
             t.setLayer(mContainerSurface, layer);
             t.setVisibility(mContainerSurface, mOwnerTaskFragment.isVisible() || mIsBoosted);
+        }
+
+        private void applyPendingClientTransactions(@NonNull SurfaceControl.Transaction t) {
             for (int i = 0; i < mPendingClientTransactions.size(); i++) {
                 t.merge(mPendingClientTransactions.get(i));
             }
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 61022cc..187b105 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -40,6 +40,8 @@
 import static android.os.Process.SYSTEM_UID;
 import static android.os.UserHandle.USER_NULL;
 import static android.view.Display.INVALID_DISPLAY;
+import static android.view.Surface.ROTATION_270;
+import static android.view.Surface.ROTATION_90;
 import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
 import static android.view.WindowManager.TRANSIT_CLOSE;
 import static android.view.WindowManager.TRANSIT_FLAG_OPEN_BEHIND;
@@ -87,6 +89,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
+import android.graphics.Insets;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.IBinder;
@@ -2225,7 +2228,43 @@
     static class ConfigOverrideHint {
         @Nullable DisplayInfo mTmpOverrideDisplayInfo;
         @Nullable ActivityRecord.CompatDisplayInsets mTmpCompatInsets;
+        @Nullable Rect mTmpParentAppBoundsOverride;
+        int mTmpOverrideConfigOrientation;
         boolean mUseOverrideInsetsForConfig;
+
+        void resolveTmpOverrides(DisplayContent dc, Configuration parentConfig,
+                boolean isFixedRotationTransforming) {
+            mTmpParentAppBoundsOverride = new Rect(parentConfig.windowConfiguration.getAppBounds());
+            final Insets insets;
+            if (mUseOverrideInsetsForConfig && dc != null) {
+                // Insets are decoupled from configuration by default from V+, use legacy
+                // compatibility behaviour for apps targeting SDK earlier than 35
+                // (see applySizeOverrideIfNeeded).
+                int rotation = parentConfig.windowConfiguration.getRotation();
+                if (rotation == ROTATION_UNDEFINED && !isFixedRotationTransforming) {
+                    rotation = dc.getRotation();
+                }
+                final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
+                final int dw = rotated ? dc.mBaseDisplayHeight : dc.mBaseDisplayWidth;
+                final int dh = rotated ? dc.mBaseDisplayWidth : dc.mBaseDisplayHeight;
+                DisplayPolicy.DecorInsets.Info decorInsets = dc.getDisplayPolicy()
+                        .getDecorInsetsInfo(rotation, dw, dh);
+                final Rect stableBounds = decorInsets.mOverrideConfigFrame;
+                mTmpOverrideConfigOrientation = stableBounds.width() > stableBounds.height()
+                                ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT;
+                insets = Insets.of(decorInsets.mOverrideNonDecorInsets);
+            } else {
+                insets = Insets.NONE;
+            }
+            mTmpParentAppBoundsOverride.inset(insets);
+        }
+
+        void resetTmpOverrides() {
+            mTmpOverrideDisplayInfo = null;
+            mTmpCompatInsets = null;
+            mTmpParentAppBoundsOverride = null;
+            mTmpOverrideConfigOrientation = ORIENTATION_UNDEFINED;
+        }
     }
 
     void computeConfigResourceOverrides(@NonNull Configuration inOutConfig,
@@ -2311,7 +2350,9 @@
             if (!customContainerPolicy && windowingMode != WINDOWING_MODE_FREEFORM) {
                 final Rect containingAppBounds;
                 if (insideParentBounds) {
-                    containingAppBounds = parentConfig.windowConfiguration.getAppBounds();
+                    containingAppBounds = useOverrideInsetsForConfig
+                            ? overrideHint.mTmpParentAppBoundsOverride
+                            : parentConfig.windowConfiguration.getAppBounds();
                 } else {
                     // Restrict appBounds to display non-decor rather than parent because the
                     // override bounds are beyond the parent. Otherwise, it won't match the
@@ -2999,6 +3040,9 @@
 
     @Override
     void removeImmediately() {
+        if (asTask() == null) {
+            EventLogTags.writeWmTfRemoved(System.identityHashCode(this), getTaskId());
+        }
         mIsRemovalRequested = false;
         resetAdjacentTaskFragment();
         cleanUpEmbeddedTaskFragment();
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index c972eee..4aa3e36 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -43,6 +43,7 @@
 import static android.view.WindowManager.TransitionType;
 import static android.view.WindowManager.transitTypeToString;
 import static android.window.TaskFragmentAnimationParams.DEFAULT_ANIMATION_BACKGROUND_COLOR;
+import static android.window.TransitionInfo.AnimationOptions;
 import static android.window.TransitionInfo.FLAGS_IS_OCCLUDED_NO_ANIMATION;
 import static android.window.TransitionInfo.FLAG_CONFIG_AT_END;
 import static android.window.TransitionInfo.FLAG_DISPLAY_HAS_ALERT_WINDOWS;
@@ -51,6 +52,7 @@
 import static android.window.TransitionInfo.FLAG_IS_BEHIND_STARTING_WINDOW;
 import static android.window.TransitionInfo.FLAG_IS_DISPLAY;
 import static android.window.TransitionInfo.FLAG_IS_INPUT_METHOD;
+import static android.window.TransitionInfo.FLAG_IS_OCCLUDED;
 import static android.window.TransitionInfo.FLAG_IS_VOICE_INTERACTION;
 import static android.window.TransitionInfo.FLAG_IS_WALLPAPER;
 import static android.window.TransitionInfo.FLAG_MOVED_TO_TOP;
@@ -94,6 +96,7 @@
 import android.view.SurfaceControl;
 import android.view.WindowManager;
 import android.window.ScreenCapture;
+import android.window.TaskFragmentAnimationParams;
 import android.window.TransitionInfo;
 import android.window.WindowContainerTransaction;
 
@@ -105,6 +108,7 @@
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.inputmethod.InputMethodManagerInternal;
 import com.android.server.statusbar.StatusBarManagerInternal;
+import com.android.window.flags.Flags;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -239,7 +243,8 @@
     private ArrayList<Runnable> mTransitionEndedListeners = null;
 
     /** Custom activity-level animation options and callbacks. */
-    private TransitionInfo.AnimationOptions mOverrideOptions;
+    private AnimationOptions mOverrideOptions;
+
     private IRemoteCallback mClientAnimationStartCallback = null;
     private IRemoteCallback mClientAnimationFinishCallback = null;
 
@@ -320,6 +325,7 @@
      */
     ArrayList<ActivityRecord> mConfigAtEndActivities = null;
 
+    @VisibleForTesting
     Transition(@TransitionType int type, @TransitionFlags int flags,
             TransitionController controller, BLASTSyncEngine syncEngine) {
         mType = type;
@@ -911,7 +917,7 @@
      * Set animation options for collecting transition by ActivityRecord.
      * @param options AnimationOptions captured from ActivityOptions
      */
-    void setOverrideAnimation(TransitionInfo.AnimationOptions options,
+    void setOverrideAnimation(@Nullable AnimationOptions options,
             @Nullable IRemoteCallback startCallback, @Nullable IRemoteCallback finishCallback) {
         if (!isCollecting()) return;
         mOverrideOptions = options;
@@ -1368,13 +1374,22 @@
         // processed all the participants first (in particular, we want to trigger pip-enter first)
         for (int i = 0; i < mParticipants.size(); ++i) {
             final ActivityRecord ar = mParticipants.valueAt(i).asActivityRecord();
+            if (ar == null) continue;
+
             // If the activity was just inserted to an invisible task, it will keep INITIALIZING
             // state. Then no need to notify the callback to avoid clearing some states
             // unexpectedly, e.g. launch-task-behind.
-            if (ar != null && (ar.isVisibleRequested()
-                    || !ar.isState(ActivityRecord.State.INITIALIZING))) {
+            if (ar.isVisibleRequested() || !ar.isState(ActivityRecord.State.INITIALIZING)) {
                 mController.dispatchLegacyAppTransitionFinished(ar);
             }
+
+            // Reset the ActivityRecord#mCurrentLaunchCanTurnScreenOn state if it is not the top
+            // running activity. Doing so in case the state is not yet consumed during rapid
+            // activity launch.
+            if (ar.currentLaunchCanTurnScreenOn() && ar.getDisplayContent() != null
+                    && ar.getDisplayContent().topRunningActivity() != ar) {
+                ar.setCurrentLaunchCanTurnScreenOn(false);
+            }
         }
 
         // Update the input-sink (touch-blocking) state now that the animation is finished.
@@ -1754,23 +1769,7 @@
                 mController.mValidateDisplayVis.add(da);
             }
         }
-
-        if (mOverrideOptions != null) {
-            info.setAnimationOptions(mOverrideOptions);
-            if (mOverrideOptions.getType() == ANIM_OPEN_CROSS_PROFILE_APPS) {
-                for (int i = 0; i < mTargets.size(); ++i) {
-                    final TransitionInfo.Change c = info.getChanges().get(i);
-                    final ActivityRecord ar = mTargets.get(i).mContainer.asActivityRecord();
-                    if (ar == null || c.getMode() != TRANSIT_OPEN) continue;
-                    int flags = c.getFlags();
-                    flags |= ar.mUserId == ar.mWmService.mCurrentUserId
-                            ? TransitionInfo.FLAG_CROSS_PROFILE_OWNER_THUMBNAIL
-                            : TransitionInfo.FLAG_CROSS_PROFILE_WORK_THUMBNAIL;
-                    c.setFlags(flags);
-                    break;
-                }
-            }
-        }
+        overrideAnimationOptionsToInfoIfNecessary(info);
 
         // TODO(b/188669821): Move to animation impl in shell.
         for (int i = 0; i < mTargetDisplays.size(); ++i) {
@@ -1893,6 +1892,51 @@
         }
     }
 
+    private void overrideAnimationOptionsToInfoIfNecessary(@NonNull TransitionInfo info) {
+        if (mOverrideOptions == null) {
+            return;
+        }
+
+        if (!Flags.moveAnimationOptionsToChange()) {
+            info.setAnimationOptions(mOverrideOptions);
+        } else {
+            final List<TransitionInfo.Change> changes = info.getChanges();
+            for (int i = changes.size() - 1; i >= 0; --i) {
+                if (mTargets.get(i).mContainer.asActivityRecord() != null) {
+                    changes.get(i).setAnimationOptions(mOverrideOptions);
+                    // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
+                    changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
+                }
+            }
+        }
+        updateActivityTargetForCrossProfileAnimation(info);
+    }
+
+    /**
+     * Updates activity open target if {@link #mOverrideOptions} is
+     * {@link ANIM_OPEN_CROSS_PROFILE_APPS}.
+     */
+    private void updateActivityTargetForCrossProfileAnimation(@NonNull TransitionInfo info) {
+        if (mOverrideOptions.getType() != ANIM_OPEN_CROSS_PROFILE_APPS) {
+            return;
+        }
+        for (int i = 0; i < mTargets.size(); ++i) {
+            final ActivityRecord activity = mTargets.get(i).mContainer
+                    .asActivityRecord();
+            final TransitionInfo.Change change = info.getChanges().get(i);
+            if (activity == null || change.getMode() != TRANSIT_OPEN) {
+                continue;
+            }
+
+            int flags = change.getFlags();
+            flags |= activity.mUserId == activity.mWmService.mCurrentUserId
+                    ? TransitionInfo.FLAG_CROSS_PROFILE_OWNER_THUMBNAIL
+                    : TransitionInfo.FLAG_CROSS_PROFILE_WORK_THUMBNAIL;
+            change.setFlags(flags);
+            break;
+        }
+    }
+
     @Override
     public void onTransactionCommitTimeout() {
         if (mCleanupTransaction == null) return;
@@ -2697,6 +2741,13 @@
             return out;
         }
 
+        final AnimationOptions animOptionsForActivityTransition =
+                calculateAnimationOptionsForActivityTransition(type, sortedTargets);
+        if (!Flags.moveAnimationOptionsToChange() && animOptionsForActivityTransition != null) {
+            out.setAnimationOptions(animOptionsForActivityTransition);
+        }
+
+        final ArraySet<WindowContainer> occludedAtEndContainers = new ArraySet<>();
         // Convert all the resolved ChangeInfos into TransactionInfo.Change objects in order.
         final int count = sortedTargets.size();
         for (int i = 0; i < count; ++i) {
@@ -2720,8 +2771,26 @@
             info.mReadyFlags = change.getFlags();
             change.setDisplayId(info.mDisplayId, getDisplayId(target));
 
+            // Add FLAGS_IS_OCCLUDED to preventing from visible-translucent change which belows
+            // the non-translucent change playing unexpected open animation.
+            if (change.getMode() == TRANSIT_TO_FRONT || change.getMode() == TRANSIT_OPEN) {
+                for (int occIndex = occludedAtEndContainers.size() - 1; occIndex >= 0; --occIndex) {
+                    if (target.isDescendantOf(occludedAtEndContainers.valueAt(occIndex))) {
+                        change.setFlags(change.getFlags() | FLAG_IS_OCCLUDED);
+                        break;
+                    }
+                }
+            }
+            if (!change.hasFlags(FLAG_TRANSLUCENT)  && (change.getMode() == TRANSIT_OPEN
+                    || change.getMode() == TRANSIT_TO_FRONT
+                    || change.getMode() == TRANSIT_CHANGE)) {
+                occludedAtEndContainers.add(target.getParent());
+            }
+
             final Task task = target.asTask();
             final TaskFragment taskFragment = target.asTaskFragment();
+            final boolean isEmbeddedTaskFragment = taskFragment != null
+                    && taskFragment.isEmbedded();
             final ActivityRecord activityRecord = target.asActivityRecord();
 
             if (task != null) {
@@ -2761,7 +2830,7 @@
                 change.setEndAbsBounds(bounds);
             }
 
-            if (activityRecord != null || (taskFragment != null && taskFragment.isEmbedded())) {
+            if (activityRecord != null || isEmbeddedTaskFragment) {
                 final int backgroundColor;
                 final TaskFragment organizedTf = activityRecord != null
                         ? activityRecord.getOrganizedTaskFragment()
@@ -2786,6 +2855,29 @@
                 change.setBackgroundColor(ColorUtils.setAlphaComponent(backgroundColor, 255));
             }
 
+            AnimationOptions animOptions = null;
+            if (Flags.moveAnimationOptionsToChange()) {
+                if (activityRecord != null && animOptionsForActivityTransition != null) {
+                    animOptions = animOptionsForActivityTransition;
+                } else if (Flags.activityEmbeddingOverlayPresentationFlag()
+                        && isEmbeddedTaskFragment) {
+                    final TaskFragmentAnimationParams params = taskFragment.getAnimationParams();
+                    if (params.hasOverrideAnimation()) {
+                        // Only set AnimationOptions if there's any animation override.
+                        // We use separated field for backgroundColor, and
+                        // AnimationOptions#backgroundColor will be removed in long term.
+                        animOptions = AnimationOptions.makeCustomAnimOptions(
+                                taskFragment.getTask().getBasePackageName(),
+                                params.getOpenAnimationResId(), params.getChangeAnimationResId(),
+                                params.getCloseAnimationResId(), 0 /* backgroundColor */,
+                                false /* overrideTaskTransition */);
+                    }
+                }
+                if (animOptions != null) {
+                    change.setAnimationOptions(animOptions);
+                }
+            }
+
             if (activityRecord != null) {
                 change.setActivityComponent(activityRecord.mActivityComponent);
             }
@@ -2797,11 +2889,26 @@
 
             out.addChange(change);
         }
+        return out;
+    }
 
+    /**
+     * Calculates {@link AnimationOptions} for activity-to-activity transition.
+     * It returns a valid {@link AnimationOptions} if:
+     * <ul>
+     *   <li>the top animation target is an Activity</li>
+     *   <li>there's a {@link android.view.Window#setWindowAnimations(int)} and there's only
+     *     {@link WindowState}, {@link WindowToken} and {@link ActivityRecord} target</li>
+     * </ul>
+     * Otherwise, it returns {@code null}.
+     */
+    @Nullable
+    private static AnimationOptions calculateAnimationOptionsForActivityTransition(
+            @TransitionType int type, @NonNull ArrayList<ChangeInfo> sortedTargets) {
         TransitionInfo.AnimationOptions animOptions = null;
 
-        // Check if the top-most app is an activity (ie. activity->activity). If so, make sure to
-        // honor its custom transition options.
+        // Check if the top-most app is an activity (ie. activity->activity). If so, make sure
+        // to honor its custom transition options.
         WindowContainer<?> topApp = null;
         for (int i = 0; i < sortedTargets.size(); i++) {
             if (isWallpaper(sortedTargets.get(i).mContainer)) continue;
@@ -2810,16 +2917,18 @@
         }
         if (topApp.asActivityRecord() != null) {
             final ActivityRecord topActivity = topApp.asActivityRecord();
-            animOptions = addCustomActivityTransition(topActivity, true/* open */, null);
-            animOptions = addCustomActivityTransition(topActivity, false/* open */, animOptions);
+            animOptions = addCustomActivityTransition(topActivity, true/* open */,
+                    null /* animOptions */);
+            animOptions = addCustomActivityTransition(topActivity, false/* open */,
+                    animOptions);
         }
         final WindowManager.LayoutParams animLp =
                 getLayoutParamsForAnimationsStyle(type, sortedTargets);
         if (animLp != null && animLp.type != TYPE_APPLICATION_STARTING
                 && animLp.windowAnimations != 0) {
-            // Don't send animation options if no windowAnimations have been set or if the we are
-            // running an app starting animation, in which case we don't want the app to be able to
-            // change its animation directly.
+            // Don't send animation options if no windowAnimations have been set or if the we
+            // are running an app starting animation, in which case we don't want the app to be
+            // able to change its animation directly.
             if (animOptions != null) {
                 animOptions.addOptionsFromLayoutParameters(animLp);
             } else {
@@ -2827,20 +2936,29 @@
                         .makeAnimOptionsFromLayoutParameters(animLp);
             }
         }
-        if (animOptions != null) {
-            out.setAnimationOptions(animOptions);
-        }
-        return out;
+        return animOptions;
     }
 
-    static TransitionInfo.AnimationOptions addCustomActivityTransition(ActivityRecord topActivity,
-            boolean open, TransitionInfo.AnimationOptions animOptions) {
+    /**
+     * Returns {@link TransitionInfo.AnimationOptions} with custom Activity transition appended if
+     * {@code topActivity} specifies {@link ActivityRecord#getCustomAnimation(boolean)}, or
+     * {@code animOptions}, otherwise.
+     * <p>
+     * If the passed {@code animOptions} is {@code null}, this method will creates an
+     * {@link TransitionInfo.AnimationOptions} with custom animation appended
+     *
+     * @param open {@code true} to add a custom open animation, and {@false} to add a close one
+     */
+    @Nullable
+    private static TransitionInfo.AnimationOptions addCustomActivityTransition(
+            @NonNull ActivityRecord activity, boolean open,
+            @Nullable TransitionInfo.AnimationOptions animOptions) {
         final ActivityRecord.CustomAppTransition customAnim =
-                topActivity.getCustomAnimation(open);
+                activity.getCustomAnimation(open);
         if (customAnim != null) {
             if (animOptions == null) {
                 animOptions = TransitionInfo.AnimationOptions
-                        .makeCommonAnimOptions(topActivity.packageName);
+                        .makeCommonAnimOptions(activity.packageName);
             }
             animOptions.addCustomActivityTransition(open, customAnim.mEnterAnim,
                     customAnim.mExitAnim, customAnim.mBackgroundColor);
diff --git a/services/core/java/com/android/server/wm/TransparentPolicy.java b/services/core/java/com/android/server/wm/TransparentPolicy.java
new file mode 100644
index 0000000..b408397
--- /dev/null
+++ b/services/core/java/com/android/server/wm/TransparentPolicy.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.wm;
+
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
+import static android.content.res.Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
+import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED;
+import static android.content.res.Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
+
+import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.BooleanSupplier;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+
+/**
+ * Encapsulate logic about translucent activities.
+ * <p/>
+ * An activity is defined as translucent if {@link ActivityRecord#fillsParent()} returns
+ * {@code false}. When the policy is running for a letterboxed activity, a transparent activity
+ * will inherit constraints about bounds, aspect ratios and orientation from the first not finishing
+ * activity below.
+ */
+class TransparentPolicy {
+
+    private static final String TAG = TAG_WITH_CLASS_NAME ? "TransparentPolicy" : TAG_ATM;
+
+    // The predicate used to find the first opaque not finishing activity below the potential
+    // transparent activity.
+    private static final Predicate<ActivityRecord> FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE =
+            ActivityRecord::occludesParent;
+
+    // The ActivityRecord this policy relates to.
+    @NonNull
+    private final ActivityRecord mActivityRecord;
+
+    // If transparent activity policy is enabled.
+    @NonNull
+    private final BooleanSupplier mIsTranslucentLetterboxingEnabledSupplier;
+
+    // The list of observers for the destroy event of candidate opaque activities
+    // when dealing with translucent activities.
+    @NonNull
+    private final List<TransparentPolicy> mDestroyListeners = new ArrayList<>();
+
+    // The current state for the possible transparent activity
+    @NonNull
+    private final TransparentPolicyState mTransparentPolicyState;
+
+    TransparentPolicy(@NonNull ActivityRecord activityRecord,
+            @NonNull LetterboxConfiguration letterboxConfiguration) {
+        mActivityRecord = activityRecord;
+        mIsTranslucentLetterboxingEnabledSupplier =
+                letterboxConfiguration::isTranslucentLetterboxingEnabled;
+        mTransparentPolicyState = new TransparentPolicyState(activityRecord);
+    }
+
+    /**
+     * Handles translucent activities letterboxing inheriting constraints from the
+     * first opaque activity beneath.
+     */
+    void start() {
+        if (!mIsTranslucentLetterboxingEnabledSupplier.getAsBoolean()) {
+            return;
+        }
+        final WindowContainer<?> parent = mActivityRecord.getParent();
+        if (parent == null) {
+            return;
+        }
+        mTransparentPolicyState.reset();
+        // In case mActivityRecord.hasCompatDisplayInsetsWithoutOverride() we don't apply the
+        // opaque activity constraints because we're expecting the activity is already letterboxed.
+        final ActivityRecord firstOpaqueActivity = mActivityRecord.getTask().getActivity(
+                FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE /* callback */,
+                mActivityRecord /* boundary */, false /* includeBoundary */,
+                true /* traverseTopToBottom */);
+        // We check if we need for some reason to skip the policy gievn the specific first
+        // opaque activity
+        if (shouldSkipTransparentPolicy(firstOpaqueActivity)) {
+            return;
+        }
+        mTransparentPolicyState.start(firstOpaqueActivity);
+    }
+
+    void stop() {
+        for (int i = mDestroyListeners.size() - 1; i >= 0; i--) {
+            mDestroyListeners.get(i).start();
+        }
+        mDestroyListeners.clear();
+        mTransparentPolicyState.reset();
+    }
+
+    /**
+     * @return {@code true} if the current activity is translucent with an opaque activity
+     * beneath and the related policy is running. In this case it will inherit bounds, orientation
+     * and aspect ratios from the first opaque activity beneath.
+     */
+    boolean isRunning() {
+        return mTransparentPolicyState.isRunning();
+    }
+
+    /**
+     * @return {@code true} if the current activity is translucent with an opaque activity
+     * beneath and needs to inherit its orientation.
+     */
+    boolean hasInheritedOrientation() {
+        // To avoid wrong behaviour (e.g. permission dialogs not centered or with wrong size),
+        // transparent activities inherit orientation from the first opaque activity below only if
+        // they explicitly define an orientation different from SCREEN_ORIENTATION_UNSPECIFIED.
+        return isRunning()
+                && mActivityRecord.getOverrideOrientation()
+                != SCREEN_ORIENTATION_UNSPECIFIED;
+    }
+
+    float getInheritedMinAspectRatio() {
+        return mTransparentPolicyState.mInheritedMinAspectRatio;
+    }
+
+    float getInheritedMaxAspectRatio() {
+        return mTransparentPolicyState.mInheritedMaxAspectRatio;
+    }
+
+    int getInheritedAppCompatState() {
+        return mTransparentPolicyState.mInheritedAppCompatState;
+    }
+
+    @Configuration.Orientation
+    int getInheritedOrientation() {
+        return mTransparentPolicyState.mInheritedOrientation;
+    }
+
+    ActivityRecord.CompatDisplayInsets getInheritedCompatDisplayInsets() {
+        return mTransparentPolicyState.mInheritedCompatDisplayInsets;
+    }
+
+    void clearInheritedCompatDisplayInsets() {
+        mTransparentPolicyState.clearInheritedCompatDisplayInsets();
+    }
+
+    TransparentPolicyState getTransparentPolicyState() {
+        return mTransparentPolicyState;
+    }
+
+    /**
+     * In case of translucent activities, it consumes the {@link ActivityRecord} of the first opaque
+     * activity beneath using the given consumer and returns {@code true}.
+     */
+    boolean applyOnOpaqueActivityBelow(@NonNull Consumer<ActivityRecord> consumer) {
+        return mTransparentPolicyState.applyOnOpaqueActivityBelow(consumer);
+    }
+
+    @NonNull
+    Optional<ActivityRecord> getFirstOpaqueActivity() {
+        return isRunning() ? Optional.of(mTransparentPolicyState.mFirstOpaqueActivity)
+                : Optional.empty();
+    }
+
+    /**
+     * @return The first not finishing opaque activity beneath the current translucent activity
+     * if it exists and the strategy is enabled.
+     */
+    Optional<ActivityRecord> findOpaqueNotFinishingActivityBelow() {
+        return mTransparentPolicyState.findOpaqueNotFinishingActivityBelow();
+    }
+
+    // We evaluate the case when the policy should not be applied.
+    private boolean shouldSkipTransparentPolicy(@Nullable ActivityRecord opaqueActivity) {
+        if (opaqueActivity == null || opaqueActivity.isEmbedded()) {
+            // We skip letterboxing if the translucent activity doesn't have any
+            // opaque activities beneath or the activity below is embedded which
+            // never has letterbox.
+            mActivityRecord.recomputeConfiguration();
+            return true;
+        }
+        if (mActivityRecord.getTask() == null || mActivityRecord.fillsParent()
+                || mActivityRecord.hasCompatDisplayInsetsWithoutInheritance()) {
+            return true;
+        }
+        return false;
+    }
+
+    /** Resets the screen size related fields so they can be resolved by requested bounds later. */
+    private static void resetTranslucentOverrideConfig(Configuration config) {
+        // The values for the following properties will be defined during the configuration
+        // resolution in {@link ActivityRecord#resolveOverrideConfiguration} using the
+        // properties inherited from the first not finishing opaque activity beneath.
+        config.orientation = ORIENTATION_UNDEFINED;
+        config.screenWidthDp = config.compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED;
+        config.screenHeightDp = config.compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED;
+        config.smallestScreenWidthDp = config.compatSmallestScreenWidthDp =
+                SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
+    }
+
+    private void inheritConfiguration(ActivityRecord firstOpaque) {
+        mTransparentPolicyState.inheritFromOpaque(firstOpaque);
+    }
+
+    /**
+     * Encapsulate the state for the current translucent activity when the transparent policy
+     * has started.
+     */
+    static class TransparentPolicyState {
+        // Aspect ratio value to consider as undefined.
+        private static final float UNDEFINED_ASPECT_RATIO = 0f;
+
+        @NonNull
+        private final ActivityRecord mActivityRecord;
+
+        @Configuration.Orientation
+        private int mInheritedOrientation = ORIENTATION_UNDEFINED;
+        private float mInheritedMinAspectRatio = UNDEFINED_ASPECT_RATIO;
+        private float mInheritedMaxAspectRatio = UNDEFINED_ASPECT_RATIO;
+
+        // The app compat state for the opaque activity if any
+        private int mInheritedAppCompatState = APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
+
+        // The CompatDisplayInsets of the opaque activity beneath the translucent one.
+        @Nullable
+        private ActivityRecord.CompatDisplayInsets mInheritedCompatDisplayInsets;
+
+        @Nullable
+        private ActivityRecord mFirstOpaqueActivity;
+
+        /*
+         * WindowContainerListener responsible to make translucent activities inherit
+         * constraints from the first opaque activity beneath them. It's null for not
+         * translucent activities.
+         */
+        @Nullable
+        private WindowContainerListener mLetterboxConfigListener;
+
+        TransparentPolicyState(@NonNull ActivityRecord activityRecord) {
+            mActivityRecord = activityRecord;
+        }
+
+        private void start(@NonNull ActivityRecord firstOpaqueActivity) {
+            mFirstOpaqueActivity = firstOpaqueActivity;
+            mFirstOpaqueActivity.mTransparentPolicy
+                    .mDestroyListeners.add(mActivityRecord.mTransparentPolicy);
+            inheritFromOpaque(firstOpaqueActivity);
+            final WindowContainer<?> parent = mActivityRecord.getParent();
+            mLetterboxConfigListener = WindowContainer.overrideConfigurationPropagation(
+                    mActivityRecord, mFirstOpaqueActivity,
+                    (opaqueConfig, transparentOverrideConfig) -> {
+                        resetTranslucentOverrideConfig(transparentOverrideConfig);
+                        final Rect parentBounds = parent.getWindowConfiguration().getBounds();
+                        final Rect bounds = transparentOverrideConfig
+                                .windowConfiguration.getBounds();
+                        final Rect letterboxBounds = opaqueConfig.windowConfiguration.getBounds();
+                        // We cannot use letterboxBounds directly here because the position relies
+                        // on letterboxing. Using letterboxBounds directly, would produce a
+                        // double offset.
+                        bounds.set(parentBounds.left, parentBounds.top,
+                                parentBounds.left + letterboxBounds.width(),
+                                parentBounds.top + letterboxBounds.height());
+                        // We need to initialize appBounds to avoid NPE. The actual value will
+                        // be set ahead when resolving the Configuration for the activity.
+                        transparentOverrideConfig.windowConfiguration.setAppBounds(new Rect());
+                        inheritFromOpaque(mFirstOpaqueActivity);
+                        return transparentOverrideConfig;
+                    });
+        }
+
+        private void inheritFromOpaque(@NonNull ActivityRecord opaqueActivity) {
+            // To avoid wrong behaviour, we're not forcing a specific aspect ratio to activities
+            // which are not already providing one (e.g. permission dialogs) and presumably also
+            // not resizable.
+            if (mActivityRecord.getMinAspectRatio() != UNDEFINED_ASPECT_RATIO) {
+                mInheritedMinAspectRatio = opaqueActivity.getMinAspectRatio();
+            }
+            if (mActivityRecord.getMaxAspectRatio() != UNDEFINED_ASPECT_RATIO) {
+                mInheritedMaxAspectRatio = opaqueActivity.getMaxAspectRatio();
+            }
+            mInheritedOrientation = opaqueActivity.getRequestedConfigurationOrientation();
+            mInheritedAppCompatState = opaqueActivity.getAppCompatState();
+            mInheritedCompatDisplayInsets = opaqueActivity.getCompatDisplayInsets();
+        }
+
+        private void reset() {
+            if (mLetterboxConfigListener != null) {
+                mLetterboxConfigListener.onRemoved();
+            }
+            mLetterboxConfigListener = null;
+            mInheritedOrientation = ORIENTATION_UNDEFINED;
+            mInheritedMinAspectRatio = UNDEFINED_ASPECT_RATIO;
+            mInheritedMaxAspectRatio = UNDEFINED_ASPECT_RATIO;
+            mInheritedAppCompatState = APP_COMPAT_STATE_CHANGED__STATE__UNKNOWN;
+            mInheritedCompatDisplayInsets = null;
+            if (mFirstOpaqueActivity != null) {
+                mFirstOpaqueActivity.mTransparentPolicy
+                        .mDestroyListeners.remove(mActivityRecord.mTransparentPolicy);
+            }
+            mFirstOpaqueActivity = null;
+        }
+
+        private boolean isRunning() {
+            return mLetterboxConfigListener != null;
+        }
+
+        private void clearInheritedCompatDisplayInsets() {
+            mInheritedCompatDisplayInsets = null;
+        }
+
+        /**
+         * @return The first not finishing opaque activity beneath the current translucent activity
+         * if it exists and the strategy is enabled.
+         */
+        private Optional<ActivityRecord> findOpaqueNotFinishingActivityBelow() {
+            if (!isRunning() || mActivityRecord.getTask() == null) {
+                return Optional.empty();
+            }
+            return Optional.ofNullable(mFirstOpaqueActivity);
+        }
+
+        /**
+         * In case of translucent activities, it consumes the {@link ActivityRecord} of the first
+         * opaque activity beneath using the given consumer and returns {@code true}.
+         */
+        private boolean applyOnOpaqueActivityBelow(@NonNull Consumer<ActivityRecord> consumer) {
+            return findOpaqueNotFinishingActivityBelow()
+                    .map(activityRecord -> {
+                        consumer.accept(activityRecord);
+                        return true;
+                    }).orElse(false);
+        }
+    }
+
+}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index edbba92..70143ba 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -1077,9 +1077,6 @@
         if (dc != null && dc != this) {
             dc.getPendingTransaction().merge(mPendingTransaction);
         }
-        if (dc != this && mLocalInsetsSources != null) {
-            mLocalInsetsSources.clear();
-        }
         for (int i = mChildren.size() - 1; i >= 0; --i) {
             final WindowContainer child = mChildren.get(i);
             child.onDisplayChanged(dc);
diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java
index 19053f7..a42cb09 100644
--- a/services/core/java/com/android/server/wm/WindowManagerInternal.java
+++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java
@@ -340,6 +340,19 @@
     }
 
     /**
+      * An interface to be notified about requested changes in the IME visibility.
+      */
+    public interface OnImeRequestedChangedListener {
+        /**
+         * Called when the requested IME visibility is changed.
+         *
+         * @param windowToken The window token
+         * @param imeVisible {@code true} if the IME should be shown, {@code false} to hide
+         */
+        void onImeRequestedChanged(IBinder windowToken, boolean imeVisible);
+    }
+
+    /**
      * An interface to customize drag and drop behaviors.
      */
     public interface IDragDropCallback {
@@ -682,6 +695,14 @@
     public abstract void setOnHardKeyboardStatusChangeListener(
         OnHardKeyboardStatusChangeListener listener);
 
+
+    /**
+     * Sets the callback listener for requested IME visibility changes in ImeInsetsSourceProvider
+     *
+     * @param listener The listener to set
+     */
+    public abstract void setOnImeRequestedChangedListener(OnImeRequestedChangedListener listener);
+
     /**
      * Requests the window manager to resend the windows for accessibility on specified display.
      *
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index a00b6fc4..8a6c73a 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -781,7 +781,7 @@
 
     boolean mHardKeyboardAvailable;
     WindowManagerInternal.OnHardKeyboardStatusChangeListener mHardKeyboardStatusChangeListener;
-
+    WindowManagerInternal.OnImeRequestedChangedListener mOnImeRequestedChangedListener;
     @Nullable ImeTargetChangeListener mImeTargetChangeListener;
 
     SettingsObserver mSettingsObserver;
@@ -2645,9 +2645,6 @@
             if (displayPolicy.areSystemBarsForcedConsumedLw()) {
                 result |= WindowManagerGlobal.RELAYOUT_RES_CONSUME_ALWAYS_SYSTEM_BARS;
             }
-            if (!win.isGoneForLayout()) {
-                win.mResizedWhileGone = false;
-            }
 
             if (outFrames != null && outMergedConfiguration != null) {
                 final boolean shouldReportActivityWindowInfo;
@@ -8131,6 +8128,27 @@
                     getInputTargetFromWindowTokenLocked(imeTargetWindowToken);
                 if (imeTarget != null) {
                     imeTarget.getDisplayContent().updateImeInputAndControlTarget(imeTarget);
+
+                    if (android.view.inputmethod.Flags.refactorInsetsController()) {
+                        // In case of a virtual display that may not show the IME, reset the
+                        // inputTarget of all other displays
+                        WindowState imeWindowState = imeTarget.getWindowState();
+                        if (imeWindowState != null) {
+                            InsetsControlTarget fallback =
+                                    imeTarget.getDisplayContent().getImeHostOrFallback(
+                                            imeWindowState);
+                            if (imeWindowState != fallback) {
+                                // fallback should be the RemoteInsetsControlTarget of the
+                                // default display
+                                int currentDisplayId = imeTarget.getDisplayContent().getDisplayId();
+                                mRoot.forAllDisplays(display -> {
+                                    if (display.getDisplayId() != currentDisplayId) {
+                                        display.setImeInputTarget(null);
+                                    }
+                                });
+                            }
+                        }
+                    }
                 }
             }
         }
@@ -8151,6 +8169,14 @@
         }
 
         @Override
+        public void setOnImeRequestedChangedListener(
+                OnImeRequestedChangedListener listener) {
+            synchronized (mGlobalLock) {
+                mOnImeRequestedChangedListener = listener;
+            }
+        }
+
+        @Override
         public void computeWindowsForAccessibility(int displayId) {
             mAccessibilityController.performComputeChangedWindowsNot(displayId, true);
         }
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index 6221d96..72109d34 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -23,8 +23,8 @@
 import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.window.TaskFragmentOperation.OP_TYPE_CLEAR_ADJACENT_TASK_FRAGMENTS;
-import static android.window.TaskFragmentOperation.OP_TYPE_CREATE_TASK_FRAGMENT;
 import static android.window.TaskFragmentOperation.OP_TYPE_CREATE_OR_MOVE_TASK_FRAGMENT_DECOR_SURFACE;
+import static android.window.TaskFragmentOperation.OP_TYPE_CREATE_TASK_FRAGMENT;
 import static android.window.TaskFragmentOperation.OP_TYPE_DELETE_TASK_FRAGMENT;
 import static android.window.TaskFragmentOperation.OP_TYPE_REMOVE_TASK_FRAGMENT_DECOR_SURFACE;
 import static android.window.TaskFragmentOperation.OP_TYPE_REORDER_TO_BOTTOM_OF_TASK;
@@ -839,9 +839,14 @@
     }
 
     private int applyTaskChanges(Task tr, WindowContainerTransaction.Change c) {
-        int effects = applyChanges(tr, c);
         final SurfaceControl.Transaction t = c.getBoundsChangeTransaction();
+        // Check bounds change transaction at the beginning because it may pause updating window
+        // surface position. Then the following changes won't apply intermediate position.
+        if (t != null) {
+            tr.setMainWindowSizeChangeTransaction(t);
+        }
 
+        int effects = applyChanges(tr, c);
         if ((c.getChangeMask() & WindowContainerTransaction.Change.CHANGE_HIDDEN) != 0) {
             if (tr.setForceHidden(FLAG_FORCE_HIDDEN_FOR_TASK_ORG, c.getHidden())) {
                 effects |= TRANSACT_EFFECTS_LIFECYCLE;
@@ -874,10 +879,6 @@
             tr.forAllActivities(a -> { a.setWindowingMode(childWindowingMode); });
         }
 
-        if (t != null) {
-            tr.setMainWindowSizeChangeTransaction(t);
-        }
-
         Rect enterPipBounds = c.getEnterPipBounds();
         if (enterPipBounds != null) {
             tr.mDisplayContent.mPinnedTaskController.setEnterPipBounds(enterPipBounds);
@@ -1594,11 +1595,31 @@
                 break;
             }
             case OP_TYPE_CREATE_OR_MOVE_TASK_FRAGMENT_DECOR_SURFACE: {
-                taskFragment.getTask().moveOrCreateDecorSurfaceFor(taskFragment);
+                final Task task = taskFragment.getTask();
+                if (task == null) {
+                    break;
+                }
+                // If any TaskFragment in the Task is collected by the transition, we make the decor
+                // surface visible in sync with the TaskFragment transition. Otherwise, we make the
+                // decor surface visible immediately.
+                final TaskFragment syncTaskFragment = transition != null
+                        ? task.getTaskFragment(transition.mParticipants::contains)
+                        : null;
+
+                if (syncTaskFragment != null) {
+                    task.moveOrCreateDecorSurfaceFor(taskFragment, false /* visible */);
+                    task.setDecorSurfaceVisible(syncTaskFragment.getSyncTransaction());
+                } else {
+                    task.moveOrCreateDecorSurfaceFor(taskFragment, true /* visible */);
+                }
                 break;
             }
             case OP_TYPE_REMOVE_TASK_FRAGMENT_DECOR_SURFACE: {
-                taskFragment.getTask().removeDecorSurface();
+                final Task task = taskFragment.getTask();
+                if (task == null) {
+                    break;
+                }
+                task.removeDecorSurface();
                 break;
             }
             case OP_TYPE_SET_DIM_ON_TASK: {
@@ -1626,21 +1647,15 @@
                         clientTransaction.sanitize(caller.mPid, caller.mUid);
                     }
 
-                    if (transition != null) {
-                        // The decor surface boost/unboost must happen after the transition is
-                        // completed. Otherwise, the decor surface could be moved before Shell
-                        // completes the transition, causing flicker.
-                        transition.addTransitionEndedListener(() ->
-                                task.setDecorSurfaceBoosted(
-                                        taskFragment,
-                                        operation.getBooleanValue() /* isBoosted */,
-                                        clientTransaction));
-                    } else {
-                        task.setDecorSurfaceBoosted(
-                                taskFragment,
-                                operation.getBooleanValue() /* isBoosted */,
-                                clientTransaction);
-                    }
+                    task.requestDecorSurfaceBoosted(
+                            taskFragment,
+                            operation.getBooleanValue() /* isBoosted */,
+                            clientTransaction);
+
+                    // The decor surface boost/unboost must be applied after the transition is
+                    // completed. Otherwise, the decor surface could be moved before Shell completes
+                    // the transition, causing flicker.
+                    runAfterTransition(transition, task::commitDecorSurfaceBoostedState);
                 }
                 break;
             }
@@ -1653,6 +1668,19 @@
         return effects;
     }
 
+    /**
+     * Executes the provided {@code runnable} after the {@code transition}. If the
+     * {@code transition} is {@code null}, the {@code runnable} is executed immediately.
+     */
+    private static void runAfterTransition(
+            @Nullable Transition transition, @NonNull Runnable runnable) {
+        if (transition == null) {
+            runnable.run();
+        } else {
+            transition.addTransitionEndedListener(runnable);
+        }
+    }
+
     private boolean validateTaskFragmentOperation(
             @NonNull WindowContainerTransaction.HierarchyOp hop,
             @Nullable IBinder errorCallbackToken, @Nullable ITaskFragmentOrganizer organizer) {
@@ -1834,7 +1862,7 @@
 
             task.getParent().positionChildAt(
                     hop.getToTop() ? POSITION_TOP : POSITION_BOTTOM,
-                    task, false /* includingParents */);
+                    task, hop.includingParents());
         }
         return TRANSACT_EFFECTS_LIFECYCLE;
     }
@@ -2360,6 +2388,7 @@
             position = POSITION_TOP;
         }
         ownerTask.addChild(taskFragment, position);
+        EventLogTags.writeWmTfCreated(System.identityHashCode(taskFragment), ownerTask.mTaskId);
         taskFragment.setWindowingMode(creationParams.getWindowingMode());
         if (!creationParams.getInitialRelativeBounds().isEmpty()) {
             // The surface operations for the task fragment should sync with the transition.
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index d1efc27..dcd4bd6 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -670,9 +670,10 @@
     private final Transaction mTmpTransaction;
 
     /**
-     * Whether the window was resized by us while it was gone for layout.
+     * Whether the surface position of window is paused to update. Currently it is only used for
+     * {@link Task#setMainWindowSizeChangeTransaction(Transaction)} to synchronize position.
      */
-    boolean mResizedWhileGone = false;
+    boolean mIsSurfacePositionPaused;
 
     /**
      * During seamless rotation we have two phases, first the old window contents
@@ -1813,9 +1814,11 @@
         if (mInsetsSourceProviders == null) {
             return false;
         }
+        final @InsetsType int decorInsetsTypes =
+                mWmService.mConfigTypes | mWmService.mOverrideConfigTypes;
         for (int i = mInsetsSourceProviders.size() - 1; i >= 0; i--) {
             final InsetsSource source = mInsetsSourceProviders.valueAt(i).getSource();
-            if ((source.getType() & mWmService.mConfigTypes) != 0) {
+            if ((source.getType() & decorInsetsTypes) != 0) {
                 return true;
             }
         }
@@ -2192,9 +2195,6 @@
             ProtoLog.d(WM_DEBUG_RESIZE, "onResize: Resizing %s", this);
             resizingWindows.add(this);
         }
-        if (isGoneForLayout()) {
-            mResizedWhileGone = true;
-        }
 
         super.onResize();
     }
@@ -4191,6 +4191,9 @@
         pw.println(prefix + "mHasSurface=" + mHasSurface
                 + " isReadyForDisplay()=" + isReadyForDisplay()
                 + " mWindowRemovalAllowed=" + mWindowRemovalAllowed);
+        if (mIsSurfacePositionPaused) {
+            pw.println(prefix + "mIsSurfacePositionPaused=true");
+        }
         if (mInvGlobalScale != 1f) {
             pw.println(prefix + "mCompatFrame=" + mWindowFrames.mCompatFrame.toShortString(sTmpSB));
         }
@@ -4934,11 +4937,11 @@
             Slog.d(TAG, "relayoutVisibleWindow: " + this + " mAnimatingExit=true, mRemoveOnExit="
                     + mRemoveOnExit + ", mDestroying=" + mDestroying);
 
+            mAnimatingExit = false;
             // Cancel the existing exit animation for the next enter animation.
             if (isAnimating()) {
                 cancelAnimation();
             }
-            mAnimatingExit = false;
             ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=relayoutVisibleWindow win=%s",
                     this);
         }
@@ -5283,7 +5286,7 @@
     @Override
     @VisibleForTesting
     void updateSurfacePosition(Transaction t) {
-        if (mSurfaceControl == null) {
+        if (mSurfaceControl == null || mIsSurfacePositionPaused) {
             return;
         }
         if (mActivityRecord != null && mActivityRecord.isConfigurationDispatchPaused()) {
diff --git a/services/core/jni/com_android_server_vibrator_VibratorController.cpp b/services/core/jni/com_android_server_vibrator_VibratorController.cpp
index f47a59d..4be21d8 100644
--- a/services/core/jni/com_android_server_vibrator_VibratorController.cpp
+++ b/services/core/jni/com_android_server_vibrator_VibratorController.cpp
@@ -131,17 +131,28 @@
     }
 
     std::function<void()> createCallback(jlong vibrationId) {
-        return [vibrationId, this]() {
+        auto callbackId = ++mCallbackId;
+        return [vibrationId, callbackId, this]() {
+            auto currentCallbackId = mCallbackId.load();
+            if (currentCallbackId != callbackId) {
+                // This callback is from an older HAL call that is no longer relevant to the service
+                return;
+            }
             auto jniEnv = GetOrAttachJNIEnvironment(sJvm);
             jniEnv->CallVoidMethod(mCallbackListener, sMethodIdOnComplete, mVibratorId,
                                    vibrationId);
         };
     }
 
+    void disableOldCallbacks() {
+        mCallbackId++;
+    }
+
 private:
     const std::shared_ptr<vibrator::HalController> mHal;
     const int32_t mVibratorId;
     const jobject mCallbackListener;
+    std::atomic<int64_t> mCallbackId;
 };
 
 static aidl::BrakingPwle brakingPwle(aidl::Braking braking, int32_t duration) {
@@ -236,6 +247,7 @@
     }
     auto offFn = [](vibrator::HalWrapper* hal) { return hal->off(); };
     wrapper->halCall<void>(offFn, "off");
+    wrapper->disableOldCallbacks();
 }
 
 static void vibratorSetAmplitude(JNIEnv* env, jclass /* clazz */, jlong ptr, jfloat amplitude) {
diff --git a/services/core/xsd/display-device-config/display-device-config.xsd b/services/core/xsd/display-device-config/display-device-config.xsd
index 610b502..eeb8b9b 100644
--- a/services/core/xsd/display-device-config/display-device-config.xsd
+++ b/services/core/xsd/display-device-config/display-device-config.xsd
@@ -779,6 +779,21 @@
     </xs:complexType>
 
     <xs:complexType name="blockingZoneConfig">
+        <!-- list of supported modes for blocking zone . Each point corresponds to one mode.
+            Supported only for lowerBlockingZoneConfigs
+            Mode format is : first = refreshRate, second = vsyncRate. E.g. :
+            <supportedModes>
+                <point>
+                    <first>60</first>   // refreshRate
+                    <second>60</second> //vsyncRate
+                </point>
+                ....
+            </supportedModes>
+        -->
+        <xs:element type="nonNegativeFloatToFloatMap" name="supportedModes" minOccurs="0">
+            <xs:annotation name="nullable"/>
+            <xs:annotation name="final"/>
+        </xs:element>
         <xs:element name="defaultRefreshRate" type="xs:nonNegativeInteger"
                     minOccurs="1" maxOccurs="1">
             <xs:annotation name="final"/>
diff --git a/services/core/xsd/display-device-config/schema/current.txt b/services/core/xsd/display-device-config/schema/current.txt
index 203a6d9..757b23a 100644
--- a/services/core/xsd/display-device-config/schema/current.txt
+++ b/services/core/xsd/display-device-config/schema/current.txt
@@ -35,9 +35,11 @@
     method public final com.android.server.display.config.BlockingZoneThreshold getBlockingZoneThreshold();
     method public final java.math.BigInteger getDefaultRefreshRate();
     method @Nullable public final String getRefreshRateThermalThrottlingId();
+    method @Nullable public final com.android.server.display.config.NonNegativeFloatToFloatMap getSupportedModes();
     method public final void setBlockingZoneThreshold(com.android.server.display.config.BlockingZoneThreshold);
     method public final void setDefaultRefreshRate(java.math.BigInteger);
     method public final void setRefreshRateThermalThrottlingId(@Nullable String);
+    method public final void setSupportedModes(@Nullable com.android.server.display.config.NonNegativeFloatToFloatMap);
   }
 
   public class BlockingZoneThreshold {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
index a0ea4e9..901cafa 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
@@ -240,7 +240,7 @@
                     POLICY_FLAG_LOCAL_ONLY_POLICY | POLICY_FLAG_INHERITABLE
                             | POLICY_FLAG_NON_COEXISTABLE_POLICY
                             | POLICY_FLAG_SKIP_ENFORCEMENT_IF_UNCHANGED,
-                    PolicyEnforcerCallbacks::noOp,
+                    PolicyEnforcerCallbacks::setApplicationRestrictions,
                     new BundlePolicySerializer());
 
     /**
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
index 3bdcd9b..161a816 100644
--- a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
@@ -246,24 +246,32 @@
         }
 
     override fun setUidMode(uid: Int, deviceId: String, code: Int, mode: Int): Boolean {
-        if (
-            Flags.runtimePermissionAppopsMappingEnabled() && code in runtimeAppOpToPermissionNames
-        ) {
-            Slog.w(
-                LOG_TAG,
-                "Cannot set UID mode for runtime permission app op, " +
-                    " callingUid = ${Binder.getCallingUid()}, " +
-                    " uid = $uid," +
-                    " code = ${AppOpsManager.opToName(code)}," +
-                    " mode = ${AppOpsManager.modeToName(mode)}",
-                RuntimeException()
-            )
-            return false
-        }
-
         val appId = UserHandle.getAppId(uid)
         val userId = UserHandle.getUserId(uid)
         val appOpName = AppOpsManager.opToPublicName(code)
+
+        if (
+            Flags.runtimePermissionAppopsMappingEnabled() && code in runtimeAppOpToPermissionNames
+        ) {
+            val oldMode =
+                service.getState { with(appIdPolicy) { getAppOpMode(appId, userId, appOpName) } }
+            val wouldHaveChanged = oldMode != mode
+            val logMessage =
+                (if (wouldHaveChanged) "Blocked" else "Ignored") +
+                    " setUidMode call for runtime permission app op:" +
+                    " uid = $uid," +
+                    " code = ${AppOpsManager.opToName(code)}," +
+                    " mode = ${AppOpsManager.modeToName(mode)}," +
+                    " callingUid = ${Binder.getCallingUid()}," +
+                    " oldMode = ${AppOpsManager.modeToName(oldMode)}"
+            if (wouldHaveChanged) {
+                Slog.e(LOG_TAG, logMessage, RuntimeException())
+            } else {
+                Slog.w(LOG_TAG, logMessage)
+            }
+            return false
+        }
+
         var wasChanged: Boolean
         service.mutateState {
             wasChanged = with(appIdPolicy) { setAppOpMode(appId, userId, appOpName, mode) }
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
index d307200..bb0838d 100644
--- a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
@@ -1277,10 +1277,11 @@
                     permissionName
                 )
             else ->
-                permissionAllowlist.getProductSignatureAppAllowlistState(
-                    packageName,
-                    permissionName
-                )
+                permissionAllowlist.getApexSignatureAppAllowlistState(packageName, permissionName)
+                    ?: permissionAllowlist.getProductSignatureAppAllowlistState(
+                        packageName,
+                        permissionName
+                    )
                     ?: permissionAllowlist.getVendorSignatureAppAllowlistState(
                         packageName,
                         permissionName
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
index 9f97648..cd70ed2 100644
--- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
+++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
@@ -25,6 +25,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.hardware.camera2.CameraManager;
 import android.os.Handler;
 import android.os.IBinder.DeathRecipient;
 import android.os.Looper;
@@ -58,7 +59,6 @@
 public final class ProfcollectForwardingService extends SystemService {
     public static final String LOG_TAG = "ProfcollectForwardingService";
 
-    private static final boolean DEBUG = Log.isLoggable(LOG_TAG, Log.DEBUG);
     private static final String INTENT_UPLOAD_PROFILES =
             "com.android.server.profcollect.UPLOAD_PROFILES";
     private static final long BG_PROCESS_INTERVAL = TimeUnit.HOURS.toMillis(4); // every 4 hours.
@@ -120,9 +120,6 @@
 
     @Override
     public void onStart() {
-        if (DEBUG) {
-            Log.d(LOG_TAG, "Profcollect forwarding service start");
-        }
         connectNativeService();
     }
 
@@ -245,9 +242,6 @@
 
         @Override
         public boolean onStartJob(JobParameters params) {
-            if (DEBUG) {
-                Log.d(LOG_TAG, "Starting background process job");
-            }
             createAndUploadReport(sSelfService);
             jobFinished(params, false);
             return true;
@@ -265,6 +259,7 @@
         BackgroundThread.get().getThreadHandler().post(
                 () -> {
                     registerAppLaunchObserver();
+                    registerCameraOpenObserver();
                     registerDex2oatObserver();
                     registerOTAObserver();
                 });
@@ -289,9 +284,6 @@
                 "applaunch_trace_freq", 2);
         int randomNum = ThreadLocalRandom.current().nextInt(100);
         if (randomNum < traceFrequency) {
-            if (DEBUG) {
-                Log.d(LOG_TAG, "Tracing on app launch event: " + packageName);
-            }
             BackgroundThread.get().getThreadHandler().post(() -> {
                 try {
                     mIProfcollect.trace_once("applaunch");
@@ -331,19 +323,14 @@
                 "dex2oat_trace_freq", 25);
         int randomNum = ThreadLocalRandom.current().nextInt(100);
         if (randomNum < traceFrequency) {
-            if (DEBUG) {
-                Log.d(LOG_TAG, "Tracing on dex2oat event");
-            }
-            BackgroundThread.get().getThreadHandler().post(() -> {
+            // Dex2oat could take a while before it starts. Add a short delay before start tracing.
+            BackgroundThread.get().getThreadHandler().postDelayed(() -> {
                 try {
-                    // Dex2oat could take a while before it starts. Add a short delay before start
-                    // tracing.
-                    Thread.sleep(1000);
                     mIProfcollect.trace_once("dex2oat");
-                } catch (RemoteException | InterruptedException e) {
+                } catch (RemoteException e) {
                     Log.e(LOG_TAG, "Failed to initiate trace: " + e.getMessage());
                 }
-            });
+            }, 1000);
         }
     }
 
@@ -352,11 +339,6 @@
         updateEngine.bind(new UpdateEngineCallback() {
             @Override
             public void onStatusUpdate(int status, float percent) {
-                if (DEBUG) {
-                    Log.d(LOG_TAG, "Received OTA status update, status: " + status + ", percent: "
-                            + percent);
-                }
-
                 if (status == UpdateEngine.UpdateStatusConstants.UPDATED_NEED_REBOOT) {
                     createAndUploadReport(sSelfService);
                 }
@@ -388,8 +370,37 @@
                     .putExtra("filename", reportName);
             pfs.getContext().sendBroadcast(intent);
         });
-        if (DEBUG) {
-            Log.d(LOG_TAG, "Sent report for upload.");
-        }
+    }
+
+    private void registerCameraOpenObserver() {
+        CameraManager cm = getContext().getSystemService(CameraManager.class);
+        cm.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
+            @Override
+            public void onCameraOpened(String cameraId, String packageId) {
+                Log.d(LOG_TAG, "Received camera open event from: " + packageId);
+                // Skip face auth and Android System Intelligence, since they trigger way too
+                // often.
+                if (packageId.startsWith("client.pid")
+                        || packageId.equals("com.google.android.as")) {
+                    return;
+                }
+                // Sample for a fraction of camera events.
+                final int traceFrequency =
+                        DeviceConfig.getInt(DeviceConfig.NAMESPACE_PROFCOLLECT_NATIVE_BOOT,
+                        "camera_trace_freq", 10);
+                int randomNum = ThreadLocalRandom.current().nextInt(100);
+                if (randomNum >= traceFrequency) {
+                    return;
+                }
+                // Wait for 1s before starting tracing.
+                BackgroundThread.get().getThreadHandler().postDelayed(() -> {
+                    try {
+                        mIProfcollect.trace_once("camera");
+                    } catch (RemoteException e) {
+                        Log.e(LOG_TAG, "Failed to initiate trace: " + e.getMessage());
+                    }
+                }, 1000);
+            }
+        }, null);
     }
 }
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
index 46d08b0..9a25b1a 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
@@ -948,6 +948,22 @@
         assertThat(supportedModeData.vsyncRate).isEqualTo(120);
     }
 
+    @Test
+    public void testLowLightBlockingZoneSupportedModesFromConfigFile() throws IOException {
+        setupDisplayDeviceConfigFromDisplayConfigFile();
+
+        RefreshRateData refreshRateData = mDisplayDeviceConfig.getRefreshRateData();
+        assertNotNull(refreshRateData);
+        assertThat(refreshRateData.lowLightBlockingZoneSupportedModes).hasSize(2);
+        SupportedModeData supportedModeData =
+                refreshRateData.lowLightBlockingZoneSupportedModes.get(0);
+        assertThat(supportedModeData.refreshRate).isEqualTo(60);
+        assertThat(supportedModeData.vsyncRate).isEqualTo(60);
+        supportedModeData = refreshRateData.lowLightBlockingZoneSupportedModes.get(1);
+        assertThat(supportedModeData.refreshRate).isEqualTo(240);
+        assertThat(supportedModeData.vsyncRate).isEqualTo(240);
+    }
+
     private String getValidLuxThrottling() {
         return "<luxThrottling>\n"
                 + "    <brightnessLimitMap>\n"
@@ -1117,6 +1133,19 @@
                 + "</lowPowerSupportedModes>\n";
     }
 
+    private String getLowLightVrrSupportedModesConfig() {
+        return "<supportedModes>\n"
+                + "    <point>\n"
+                + "        <first>60</first>\n"
+                + "        <second>60</second>\n"
+                + "    </point>\n"
+                + "    <point>\n"
+                + "        <first>240</first>\n"
+                + "        <second>240</second>\n"
+                + "    </point>\n"
+                + "</supportedModes>\n";
+    }
+
     private String getHdrBrightnessConfig() {
         return "<hdrBrightnessConfig>\n"
               + "    <brightnessMap>\n"
@@ -1624,6 +1653,7 @@
                 +                   "<nits>-1</nits>\n"
                 +               "</displayBrightnessPoint>\n"
                 +           "</blockingZoneThreshold>\n"
+                + getLowLightVrrSupportedModesConfig()
                 +       "</lowerBlockingZoneConfigs>\n"
                 +       "<higherBlockingZoneConfigs>\n"
                 +           "<defaultRefreshRate>90</defaultRefreshRate>\n"
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index 8fd1e6b..efa224f 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -39,6 +39,7 @@
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import android.app.ActivityManager;
@@ -1284,14 +1285,37 @@
 
     @Test
     public void testDwbcCallsHappenOnHandler() {
+        when(mDisplayManagerFlagsMock.isAdaptiveTone1Enabled()).thenReturn(true);
         mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
 
-        mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
-        verify(mDisplayWhiteBalanceControllerMock, never()).setStrongModeEnabled(true);
+        // Send a display power request
+        DisplayPowerRequest dpr = new DisplayPowerRequest();
+        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
+        dpr.useProximitySensor = true;
+        mHolder.dpc.requestPowerState(dpr, false /* waitForNegativeProximity */);
+
+        // Run updatePowerState
+        advanceTime(1);
+
+        setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
+                mHolder.config, /* isEnabled= */ true);
 
         // dispatch handler looper
         advanceTime(1);
-        verify(mDisplayWhiteBalanceControllerMock, times(1)).setStrongModeEnabled(true);
+        clearInvocations(mDisplayWhiteBalanceControllerMock, mHolder.automaticBrightnessController,
+                mHolder.animator);
+        mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
+        verifyNoMoreInteractions(mDisplayWhiteBalanceControllerMock,
+                mHolder.automaticBrightnessController,
+                mHolder.animator);
+
+        // dispatch handler looper
+        advanceTime(1);
+        verify(mHolder.automaticBrightnessController).switchMode(AUTO_BRIGHTNESS_MODE_IDLE,
+                /* sendUpdate= */ true);
+        verify(mHolder.animator).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX_IDLE,
+                BRIGHTNESS_RAMP_DECREASE_MAX_IDLE);
+        verify(mDisplayWhiteBalanceControllerMock).setStrongModeEnabled(true);
     }
 
     @Test
@@ -1506,6 +1530,9 @@
         // switch to idle mode
         mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
 
+        // Process the MSG_SWITCH_AUTOBRIGHTNESS_MODE event
+        advanceTime(1);
+
         // A second time when switching to idle mode.
         verify(mHolder.animator, times(2)).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX,
                 BRIGHTNESS_RAMP_DECREASE_MAX);
@@ -1532,6 +1559,8 @@
         // switch to idle mode
         mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
 
+        // Process the MSG_SWITCH_AUTOBRIGHTNESS_MODE event
+        advanceTime(1);
         verify(mHolder.animator).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX_IDLE,
                 BRIGHTNESS_RAMP_DECREASE_MAX_IDLE);
     }
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
index 323ef6a..88d3238 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
@@ -33,6 +33,7 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.hardware.SensorManager;
+import android.hardware.display.DisplayManagerInternal;
 import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
 import android.os.Handler;
 import android.os.HandlerExecutor;
@@ -119,7 +120,8 @@
         int targetDisplayState = Display.STATE_DOZE;
         when(mDisplayBrightnessStrategySelector.selectStrategy(
                 any(StrategySelectionRequest.class))).thenReturn(displayBrightnessStrategy);
-        mDisplayBrightnessController.updateBrightness(displayPowerRequest, targetDisplayState);
+        mDisplayBrightnessController.updateBrightness(displayPowerRequest, targetDisplayState, mock(
+                DisplayManagerInternal.DisplayOffloadSession.class));
         verify(displayBrightnessStrategy).updateBrightness(
                 eq(new StrategyExecutionRequest(displayPowerRequest, DEFAULT_BRIGHTNESS,
                         /* userSetBrightnessChanged= */ false)));
@@ -128,6 +130,12 @@
     }
 
     @Test
+    public void isAllowAutoBrightnessWhileDozingDelegatesToDozeBrightnessStrategy() {
+        mDisplayBrightnessController.isAllowAutoBrightnessWhileDozing();
+        verify(mDisplayBrightnessStrategySelector).isAllowAutoBrightnessWhileDozing();
+    }
+
+    @Test
     public void isAllowAutoBrightnessWhileDozingConfigDelegatesToDozeBrightnessStrategy() {
         mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig();
         verify(mDisplayBrightnessStrategySelector).isAllowAutoBrightnessWhileDozingConfig();
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
index df96712..639d06d 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
@@ -16,13 +16,15 @@
 
 package com.android.server.display.brightness;
 
+import static junit.framework.Assert.assertFalse;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
 import android.content.ContentResolver;
@@ -97,6 +99,9 @@
     @Mock
     private DisplayManagerFlags mDisplayManagerFlags;
 
+    @Mock
+    private DisplayManagerInternal.DisplayOffloadSession mDisplayOffloadSession;
+
     private DisplayBrightnessStrategySelector mDisplayBrightnessStrategySelector;
     private Context mContext;
     private DisplayBrightnessStrategySelector.Injector mInjector =
@@ -191,7 +196,7 @@
                 DISALLOW_AUTO_BRIGHTNESS_WHILE_DOZING);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_DOZE,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mDozeBrightnessModeStrategy);
     }
 
@@ -205,7 +210,30 @@
                 DISALLOW_AUTO_BRIGHTNESS_WHILE_DOZING);
         assertNotEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_DOZE,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
+                mDozeBrightnessModeStrategy);
+    }
+
+    @Test
+    public void selectStrategyDoesNotSelectDozeStrategyWhenOffloadSessionAutoBrightnessIsEnabled() {
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest = mock(
+                DisplayManagerInternal.DisplayPowerRequest.class);
+        displayPowerRequest.policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;
+        displayPowerRequest.dozeScreenBrightness = 0.2f;
+
+        assertNotEquals(mDisplayBrightnessStrategySelector.selectStrategy(
+                        new StrategySelectionRequest(displayPowerRequest, Display.STATE_DOZE,
+                                0.1f, false, mDisplayOffloadSession)),
                 mDozeBrightnessModeStrategy);
     }
 
@@ -215,7 +243,7 @@
                 DisplayManagerInternal.DisplayPowerRequest.class);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_OFF,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mScreenOffBrightnessModeStrategy);
     }
 
@@ -227,7 +255,7 @@
         when(mFollowerBrightnessStrategy.getBrightnessToFollow()).thenReturn(Float.NaN);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mOverrideBrightnessStrategy);
     }
 
@@ -240,7 +268,7 @@
         when(mTemporaryBrightnessStrategy.getTemporaryScreenBrightness()).thenReturn(0.3f);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mTemporaryBrightnessStrategy);
     }
 
@@ -254,7 +282,7 @@
         when(mTemporaryBrightnessStrategy.getTemporaryScreenBrightness()).thenReturn(Float.NaN);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mBoostBrightnessStrategy);
     }
 
@@ -268,7 +296,7 @@
         when(mOffloadBrightnessStrategy.getOffloadScreenBrightness()).thenReturn(Float.NaN);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mInvalidBrightnessStrategy);
     }
 
@@ -279,7 +307,7 @@
         when(mFollowerBrightnessStrategy.getBrightnessToFollow()).thenReturn(0.3f);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mFollowerBrightnessStrategy);
     }
 
@@ -297,13 +325,18 @@
         when(mOffloadBrightnessStrategy.getOffloadScreenBrightness()).thenReturn(0.3f);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mOffloadBrightnessStrategy);
     }
 
     @Test
     public void selectStrategy_selectsAutomaticStrategyWhenValid() {
         when(mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()).thenReturn(true);
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
         mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
                 mInjector, DISPLAY_ID, mDisplayManagerFlags);
         DisplayManagerInternal.DisplayPowerRequest displayPowerRequest = mock(
@@ -316,13 +349,11 @@
         when(mAutomaticBrightnessStrategy.isAutoBrightnessValid()).thenReturn(true);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mAutomaticBrightnessStrategy);
-        verifyZeroInteractions(mOffloadBrightnessStrategy);
         verify(mAutomaticBrightnessStrategy).setAutoBrightnessState(Display.STATE_ON,
-                false, BrightnessReason.REASON_UNKNOWN,
+                true, BrightnessReason.REASON_UNKNOWN,
                 DisplayManagerInternal.DisplayPowerRequest.POLICY_BRIGHT, 0.1f, false);
-
     }
 
     @Test
@@ -341,7 +372,7 @@
         when(mAutoBrightnessFallbackStrategy.isValid()).thenReturn(true);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mAutoBrightnessFallbackStrategy);
     }
 
@@ -359,7 +390,7 @@
         assertNotEquals(mOffloadBrightnessStrategy,
                 mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)));
+                                0.1f, false, mDisplayOffloadSession)));
     }
 
     @Test
@@ -377,7 +408,7 @@
         when(mAutomaticBrightnessStrategy.isAutoBrightnessValid()).thenReturn(false);
         assertEquals(mDisplayBrightnessStrategySelector.selectStrategy(
                         new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                                0.1f, false)),
+                                0.1f, false, mDisplayOffloadSession)),
                 mFallbackBrightnessStrategy);
     }
 
@@ -392,7 +423,7 @@
 
         mDisplayBrightnessStrategySelector.selectStrategy(
                 new StrategySelectionRequest(displayPowerRequest, Display.STATE_ON,
-                        0.1f, false));
+                        0.1f, false, mDisplayOffloadSession));
 
         StrategySelectionNotifyRequest strategySelectionNotifyRequest =
                 new StrategySelectionNotifyRequest(displayPowerRequest, Display.STATE_ON,
@@ -422,4 +453,78 @@
         assertEquals(mAutomaticBrightnessStrategy,
                 mDisplayBrightnessStrategySelector.getAutomaticBrightnessStrategy());
     }
+
+    @Test
+    public void setAllowAutoBrightnessWhileDozing_enabledWhenConfigAndOffloadSessionAreEnabled() {
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+        mDisplayBrightnessStrategySelector
+                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
+        assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+    }
+
+    @Test
+    public void setAllowAutoBrightnessWhileDozing_disabledWhenOffloadSessionFlagIsDisabled() {
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(false);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+        mDisplayBrightnessStrategySelector
+                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
+        assertFalse(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+    }
+
+    @Test
+    public void setAllowAutoBrightnessWhileDozing_disabledWhenABWhileDozingConfigIsDisabled() {
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                false);
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+        mDisplayBrightnessStrategySelector
+                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
+        assertFalse(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+    }
+
+    @Test
+    public void setAllowAutoBrightnessWhileDozing_EnabledWhenOffloadSessionIsNotSet() {
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+        mDisplayBrightnessStrategySelector.setAllowAutoBrightnessWhileDozing(null);
+        assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+    }
+
+    @Test
+    public void setAllowAutoBrightnessWhileDozing_EnabledWhenFlagsAreDisabled() {
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
+        when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
+                true);
+        mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
+                mInjector, DISPLAY_ID, mDisplayManagerFlags);
+
+        // Same as the config_allowAutoBrightnessWhileDozing when either of the concerned flags
+        // are disabled
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(false);
+        mDisplayBrightnessStrategySelector
+                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
+        assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+
+        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
+        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(false);
+        mDisplayBrightnessStrategySelector
+                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
+        assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
+    }
 }
diff --git a/services/tests/displayservicetests/src/com/android/server/display/mode/BrightnessObserverTest.kt b/services/tests/displayservicetests/src/com/android/server/display/mode/BrightnessObserverTest.kt
index 88c0daa..95702aa 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/mode/BrightnessObserverTest.kt
+++ b/services/tests/displayservicetests/src/com/android/server/display/mode/BrightnessObserverTest.kt
@@ -19,11 +19,12 @@
 import android.content.Context
 import android.content.ContextWrapper
 import android.hardware.display.BrightnessInfo
-import android.util.SparseArray
 import android.view.Display
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SmallTest
 import com.android.server.display.DisplayDeviceConfig
+import com.android.server.display.config.RefreshRateData
+import com.android.server.display.config.SupportedModeData
 import com.android.server.display.feature.DisplayManagerFlags
 import com.android.server.display.mode.DisplayModeDirector.DisplayDeviceConfigProvider
 import com.android.server.testutils.TestHandler
@@ -39,6 +40,13 @@
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.whenever
 
+private val LOW_LIGHT_REFRESH_RATE_DATA = createRefreshRateData(
+    lowLightBlockingZoneSupportedModes = listOf(
+        SupportedModeData(60f, 60f), SupportedModeData(240f, 240f)))
+private val EXPECTED_SUPPORTED_MODES_VOTE = SupportedRefreshRatesVote(
+    listOf(SupportedRefreshRatesVote.RefreshRates(60f, 60f),
+        SupportedRefreshRatesVote.RefreshRates(240f, 240f)))
+
 @SmallTest
 @RunWith(TestParameterInjector::class)
 class BrightnessObserverTest {
@@ -65,21 +73,25 @@
         whenever(mockFlags.isVsyncLowLightVoteEnabled).thenReturn(testCase.vsyncLowLightVoteEnabled)
         val displayModeDirector = DisplayModeDirector(
                 spyContext, testHandler, mockInjector, mockFlags, mockDisplayDeviceConfigProvider)
-        val ddcByDisplay = SparseArray<DisplayDeviceConfig>()
         whenever(mockDeviceConfig.isVrrSupportEnabled).thenReturn(testCase.vrrSupported)
-        ddcByDisplay.put(Display.DEFAULT_DISPLAY, mockDeviceConfig)
-        displayModeDirector.injectDisplayDeviceConfigByDisplay(ddcByDisplay)
+        whenever(mockDeviceConfig.refreshRateData).thenReturn(testCase.refreshRateData)
+        whenever(mockDeviceConfig.defaultLowBlockingZoneRefreshRate).thenReturn(-1)
+
+        displayModeDirector.defaultDisplayDeviceUpdated(mockDeviceConfig)
+
         val brightnessObserver = displayModeDirector.BrightnessObserver(
                 spyContext, testHandler, mockInjector, mockFlags)
-
+        // set mRefreshRateChangeable to true
         brightnessObserver.onRefreshRateSettingChangedLocked(0.0f, 120.0f)
         brightnessObserver.updateBlockingZoneThresholds(mockDeviceConfig, false)
-        brightnessObserver.onDeviceConfigRefreshRateInLowZoneChanged(60)
+        brightnessObserver.onDeviceConfigRefreshRateInLowZoneChanged(testCase.refreshRateInLowZone)
 
         brightnessObserver.onDisplayChanged(Display.DEFAULT_DISPLAY)
 
         assertThat(displayModeDirector.getVote(VotesStorage.GLOBAL_ID,
-                Vote.PRIORITY_FLICKER_REFRESH_RATE_SWITCH)).isEqualTo(testCase.expectedVote)
+            Vote.PRIORITY_FLICKER_REFRESH_RATE)).isEqualTo(testCase.expectedRefreshRateVote)
+        assertThat(displayModeDirector.getVote(VotesStorage.GLOBAL_ID,
+                Vote.PRIORITY_FLICKER_REFRESH_RATE_SWITCH)).isEqualTo(testCase.expectedSwitchVote)
     }
 
     private fun setUpLowBrightnessZone() {
@@ -98,14 +110,20 @@
     enum class LowLightTestCase(
             val vrrSupported: Boolean,
             val vsyncLowLightVoteEnabled: Boolean,
-            internal val expectedVote: Vote
+            val refreshRateData: RefreshRateData,
+            val refreshRateInLowZone: Int,
+            internal val expectedRefreshRateVote: Vote,
+            internal val expectedSwitchVote: Vote?,
     ) {
-        ALL_ENABLED(true, true, CombinedVote(
-                listOf(DisableRefreshRateSwitchingVote(true),
-                        SupportedRefreshRatesVote(
-                                listOf(SupportedRefreshRatesVote.RefreshRates(60f, 60f),
-                                        SupportedRefreshRatesVote.RefreshRates(120f, 120f)))))),
-        VRR_NOT_SUPPORTED(false, true, DisableRefreshRateSwitchingVote(true)),
-        VSYNC_VOTE_DISABLED(true, false, DisableRefreshRateSwitchingVote(true))
+        ALL_ENABLED(true, true, LOW_LIGHT_REFRESH_RATE_DATA, 60,
+            EXPECTED_SUPPORTED_MODES_VOTE, null),
+        ALL_ENABLED_NO_RR_IN_LOW_ZONE(true, true, LOW_LIGHT_REFRESH_RATE_DATA, 0,
+            EXPECTED_SUPPORTED_MODES_VOTE, null),
+        VRR_NOT_SUPPORTED(false, true, LOW_LIGHT_REFRESH_RATE_DATA, 60,
+            Vote.forPhysicalRefreshRates(60f, 60f), DisableRefreshRateSwitchingVote(true)),
+        VSYNC_VOTE_DISABLED(true, false, LOW_LIGHT_REFRESH_RATE_DATA, 50,
+            Vote.forPhysicalRefreshRates(50f, 50f), DisableRefreshRateSwitchingVote(true)),
+        NO_LOW_LIGHT_CONFIG(true, true, createRefreshRateData(), 40,
+            Vote.forPhysicalRefreshRates(40f, 40f), DisableRefreshRateSwitchingVote(true)),
     }
 }
\ No newline at end of file
diff --git a/services/tests/displayservicetests/src/com/android/server/display/mode/DisplayModeDirectorTest.java b/services/tests/displayservicetests/src/com/android/server/display/mode/DisplayModeDirectorTest.java
index 714b423..242d559 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/mode/DisplayModeDirectorTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/mode/DisplayModeDirectorTest.java
@@ -132,7 +132,8 @@
             /* defaultPeakRefreshRate= */ 0,
             /* defaultRefreshRateInHbmHdr= */ 0,
             /* defaultRefreshRateInHbmSunlight= */ 0,
-            /* lowPowerSupportedModes =*/ List.of());
+            /* lowPowerSupportedModes= */ List.of(),
+            /* lowLightBlockingZoneSupportedModes= */ List.of());
 
     public static Collection<Object[]> getAppRequestedSizeTestCases() {
         var appRequestedSizeTestCases = Arrays.asList(new Object[][] {
@@ -3170,7 +3171,8 @@
                 /* defaultPeakRefreshRate= */ 65,
                 /* defaultRefreshRateInHbmHdr= */ 65,
                 /* defaultRefreshRateInHbmSunlight= */ 75,
-                /* lowPowerSupportedModes= */ List.of());
+                /* lowPowerSupportedModes= */ List.of(),
+                /* lowLightBlockingZoneSupportedModes= */ List.of());
         when(displayDeviceConfig.getRefreshRateData()).thenReturn(refreshRateData);
         when(displayDeviceConfig.getDefaultLowBlockingZoneRefreshRate()).thenReturn(50);
         when(displayDeviceConfig.getDefaultHighBlockingZoneRefreshRate()).thenReturn(55);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/mode/TestUtils.kt b/services/tests/displayservicetests/src/com/android/server/display/mode/TestUtils.kt
index 1206e30..5b07166 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/mode/TestUtils.kt
+++ b/services/tests/displayservicetests/src/com/android/server/display/mode/TestUtils.kt
@@ -34,9 +34,10 @@
         defaultPeakRefreshRate: Int = 60,
         defaultRefreshRateInHbmHdr: Int = 60,
         defaultRefreshRateInHbmSunlight: Int = 60,
-        lowPowerSupportedModes: List<SupportedModeData> = emptyList()
+        lowPowerSupportedModes: List<SupportedModeData> = emptyList(),
+        lowLightBlockingZoneSupportedModes: List<SupportedModeData> = emptyList()
 ): RefreshRateData {
         return RefreshRateData(defaultRefreshRate, defaultPeakRefreshRate,
                 defaultRefreshRateInHbmHdr, defaultRefreshRateInHbmSunlight,
-                lowPowerSupportedModes)
+                lowPowerSupportedModes, lowLightBlockingZoneSupportedModes)
 }
diff --git a/services/tests/displayservicetests/src/com/android/server/display/mode/VotesStorageTest.java b/services/tests/displayservicetests/src/com/android/server/display/mode/VotesStorageTest.java
index a248d6de..0125ddb 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/mode/VotesStorageTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/mode/VotesStorageTest.java
@@ -38,10 +38,10 @@
 @RunWith(AndroidJUnit4.class)
 public class VotesStorageTest {
     private static final int DISPLAY_ID = 100;
-    private static final int PRIORITY = Vote.PRIORITY_APP_REQUEST_SIZE;
+    private static final @Vote.Priority int PRIORITY = Vote.PRIORITY_APP_REQUEST_SIZE;
     private static final Vote VOTE = Vote.forDisableRefreshRateSwitching();
     private static final int DISPLAY_ID_OTHER = 101;
-    private static final int PRIORITY_OTHER = Vote.PRIORITY_FLICKER_REFRESH_RATE;
+    private static final @Vote.Priority int PRIORITY_OTHER = Vote.PRIORITY_FLICKER_REFRESH_RATE;
     private static final Vote VOTE_OTHER = Vote.forBaseModeRefreshRate(10f);
 
     @Mock
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
index daa827ea..5f12677 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
@@ -556,7 +556,7 @@
         rInfo.serviceInfo = makeServiceInfo(compName.getClassName(), compName.getPackageName(),
                 serviceUid);
         doReturn(rInfo).when(mPackageManagerInt).resolveService(any(Intent.class), any(),
-                anyLong(), anyInt(), anyInt());
+                anyLong(), anyInt(), anyInt(), anyInt());
 
         return serviceIntent;
     }
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
index 396edae..9ab607d 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
@@ -140,6 +140,7 @@
         PropertyInvalidatedCache.disableForTestMode()
         val apply = ExtendedMockito.mockitoSession()
                 .strictness(Strictness.LENIENT)
+                .mockStatic(SaferIntentUtils::class.java)
                 .mockStatic(SystemProperties::class.java)
                 .mockStatic(SystemConfig::class.java)
                 .mockStatic(SELinuxMMAC::class.java, Mockito.CALLS_REAL_METHODS)
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerTracedLockTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerTracedLockTest.java
new file mode 100644
index 0000000..eebd921
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerTracedLockTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.pm;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import android.os.Handler;
+import android.os.HandlerThread;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class PackageManagerTracedLockTest {
+    PackageManagerTracedLock mLock = new PackageManagerTracedLock();
+    PackageManagerTracedLock.RawLock mRawLock = mLock.getRawLock();
+
+    @After
+    public void tearDown() {
+        if (mRawLock.isHeldByCurrentThread()) {
+            mRawLock.unlock();
+        }
+    }
+
+    @Test
+    public void testAcquireLock() {
+        assertFalse(mRawLock.isLocked());
+        try (var autoClosableLock = mLock.acquireLock()) {
+            assertTrue(mRawLock.isHeldByCurrentThread());
+            assertTrue(mRawLock.isLocked());
+            assertEquals(autoClosableLock.getRawLock(), mRawLock);
+            assertEquals(1, mRawLock.getHoldCount());
+            try (var autoClosableLock2 = mLock.acquireLock()) {
+                assertTrue(mRawLock.isHeldByCurrentThread());
+                assertTrue(mRawLock.isLocked());
+                assertEquals(autoClosableLock2.getRawLock(), mRawLock);
+                assertEquals(2, mRawLock.getHoldCount());
+            }
+            assertTrue(mRawLock.isHeldByCurrentThread());
+            assertTrue(mRawLock.isLocked());
+            assertEquals(1, mRawLock.getHoldCount());
+        }
+        assertFalse(mRawLock.isHeldByCurrentThread());
+        assertFalse(mRawLock.isLocked());
+        assertEquals(0, mRawLock.getHoldCount());
+    }
+
+    @Test
+    public void testUnlockInsideTry() {
+        assertFalse(mRawLock.isLocked());
+        try (var autoClosableLock = mLock.acquireLock()) {
+            assertTrue(mRawLock.isHeldByCurrentThread());
+            assertTrue(mRawLock.isLocked());
+            assertEquals(autoClosableLock.getRawLock(), mRawLock);
+            assertEquals(1, mRawLock.getHoldCount());
+            mRawLock.unlock();
+            assertFalse(mRawLock.isHeldByCurrentThread());
+            assertFalse(mRawLock.isLocked());
+            assertEquals(0, mRawLock.getHoldCount());
+            mRawLock.lock();
+        }
+        assertFalse(mRawLock.isHeldByCurrentThread());
+        assertFalse(mRawLock.isLocked());
+        assertEquals(0, mRawLock.getHoldCount());
+    }
+
+    @Test
+    public void testRawLock() {
+        assertFalse(mRawLock.isLocked());
+        mRawLock.lock();
+        assertTrue(mRawLock.isLocked());
+        assertTrue(mRawLock.isHeldByCurrentThread());
+        assertEquals(1, mRawLock.getHoldCount());
+        assertTrue(mRawLock.tryLock());
+        assertTrue(mRawLock.isLocked());
+        assertTrue(mRawLock.isHeldByCurrentThread());
+        assertEquals(2, mRawLock.getHoldCount());
+        mRawLock.unlock();
+        assertTrue(mRawLock.isLocked());
+        assertTrue(mRawLock.isHeldByCurrentThread());
+        assertEquals(1, mRawLock.getHoldCount());
+        mRawLock.unlock();
+        assertFalse(mRawLock.isLocked());
+        assertFalse(mRawLock.isHeldByCurrentThread());
+    }
+
+    @Test
+    public void testTrylock() throws InterruptedException {
+        assertFalse(mRawLock.isLocked());
+        HandlerThread thread = new HandlerThread("PackageManagerTracedLockTestThread",
+                android.os.Process.THREAD_PRIORITY_BACKGROUND);
+        thread.start();
+        Handler handler = new Handler(thread.getLooper());
+        handler.post(() -> mRawLock.lock());
+        waitForHandler(handler);
+        assertTrue(mRawLock.isLocked());
+        assertFalse(mRawLock.isHeldByCurrentThread());
+        assertEquals(0, mRawLock.getHoldCount());
+        assertFalse(mRawLock.tryLock());
+        handler.post(() -> mRawLock.unlock());
+        waitForHandler(handler);
+        assertFalse(mRawLock.isLocked());
+        assertFalse(mRawLock.isHeldByCurrentThread());
+        assertEquals(0, mRawLock.getHoldCount());
+        thread.interrupt();
+    }
+
+    private void waitForHandler(Handler handler) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(1);
+        handler.post(latch::countDown);
+        assertTrue(latch.await(1, TimeUnit.SECONDS));
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java b/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
index 7dae235..a6784417 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
@@ -83,8 +83,6 @@
     @Mock BatteryManager mMockBatteryManager;
     @Mock PowerManager mMockPowerManager;
 
-    private final Object mInstallLock = new Object();
-
     private DynamicCodeLogger mDynamicCodeLogger;
     private DexManager mDexManager;
 
@@ -160,8 +158,8 @@
                 .getSystemService(PowerManager.class);
 
         mDynamicCodeLogger = new DynamicCodeLogger(mInstaller);
-        mDexManager = new DexManager(mockContext, /*PackageDexOptimizer*/ null, mInstaller,
-                mInstallLock, mDynamicCodeLogger, mPM);
+        mDexManager = new DexManager(mockContext, /*PackageDexOptimizer*/ null,
+                mDynamicCodeLogger, mPM);
 
         // Foo and Bar are available to user0.
         // Only Bar is available to user1;
diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
index 1b0a8d2..f1bf86f 100644
--- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperCropperTest.java
@@ -211,9 +211,11 @@
                     new Rect(100, 200, bitmapSize.x - 100, bitmapSize.y))) {
                 for (int mode: ALL_MODES) {
                     for (boolean parallax: List.of(true, false)) {
-                        assertThat(WallpaperCropper.getAdjustedCrop(
-                                crop, bitmapSize, displaySize, parallax, mode))
-                                .isEqualTo(crop);
+                        for (boolean rtl: List.of(true, false)) {
+                            assertThat(WallpaperCropper.getAdjustedCrop(
+                                    crop, bitmapSize, displaySize, parallax, rtl, mode))
+                                    .isEqualTo(crop);
+                        }
                     }
                 }
             }
@@ -234,8 +236,11 @@
         Point expectedCropSize = new Point(expectedWidth, 1000);
         for (int mode: ALL_MODES) {
             assertThat(WallpaperCropper.getAdjustedCrop(
-                    crop, bitmapSize, displaySize, true, mode))
-                    .isEqualTo(centerOf(crop, expectedCropSize));
+                    crop, bitmapSize, displaySize, true, false, mode))
+                    .isEqualTo(leftOf(crop, expectedCropSize));
+            assertThat(WallpaperCropper.getAdjustedCrop(
+                    crop, bitmapSize, displaySize, true, true, mode))
+                    .isEqualTo(rightOf(crop, expectedCropSize));
         }
     }
 
@@ -254,9 +259,11 @@
             Point bitmapSize = new Point(acceptableWidth, 1000);
             Rect crop = new Rect(0, 0, bitmapSize.x, bitmapSize.y);
             for (int mode : ALL_MODES) {
-                assertThat(WallpaperCropper.getAdjustedCrop(
-                        crop, bitmapSize, displaySize, true, mode))
-                        .isEqualTo(crop);
+                for (boolean rtl : List.of(false, true)) {
+                    assertThat(WallpaperCropper.getAdjustedCrop(
+                            crop, bitmapSize, displaySize, true, rtl, mode))
+                            .isEqualTo(crop);
+                }
             }
         }
     }
@@ -286,9 +293,11 @@
         for (int i = 0; i < crops.size(); i++) {
             Rect crop = crops.get(i);
             Rect expectedCrop = expectedAdjustedCrops.get(i);
-            assertThat(WallpaperCropper.getAdjustedCrop(
-                    crop, bitmapSize, displaySize, false, WallpaperCropper.ADD))
-                    .isEqualTo(expectedCrop);
+            for (boolean rtl: List.of(false, true)) {
+                assertThat(WallpaperCropper.getAdjustedCrop(
+                        crop, bitmapSize, displaySize, false, rtl, WallpaperCropper.ADD))
+                        .isEqualTo(expectedCrop);
+            }
         }
     }
 
@@ -309,9 +318,11 @@
         Point expectedCropSize = new Point(1000, 1000);
 
         for (Rect crop: crops) {
-            assertThat(WallpaperCropper.getAdjustedCrop(
-                    crop, bitmapSize, displaySize, false, WallpaperCropper.REMOVE))
-                    .isEqualTo(centerOf(crop, expectedCropSize));
+            for (boolean rtl : List.of(false, true)) {
+                assertThat(WallpaperCropper.getAdjustedCrop(
+                        crop, bitmapSize, displaySize, false, rtl, WallpaperCropper.REMOVE))
+                        .isEqualTo(centerOf(crop, expectedCropSize));
+            }
         }
     }
 
@@ -338,14 +349,14 @@
             Rect crop = crops.get(i);
             Rect expected = expectedAdjustedCrops.get(i);
             assertThat(WallpaperCropper.getAdjustedCrop(
-                    crop, bitmapSize, displaySize, false, WallpaperCropper.BALANCE))
+                    crop, bitmapSize, displaySize, false, false, WallpaperCropper.BALANCE))
                     .isEqualTo(expected);
 
             Rect transposedCrop = new Rect(crop.top, crop.left, crop.bottom, crop.right);
             Rect expectedTransposed = new Rect(
                     expected.top, expected.left, expected.bottom, expected.right);
             assertThat(WallpaperCropper.getAdjustedCrop(transposedCrop, bitmapSize,
-                    transposedDisplaySize, false, WallpaperCropper.BALANCE))
+                    transposedDisplaySize, false, false, WallpaperCropper.BALANCE))
                     .isEqualTo(expectedTransposed);
         }
     }
@@ -376,9 +387,11 @@
             Point displaySize = displaySizes.get(i);
             Point expectedCropSize = expectedCropSizes.get(i);
             for (boolean rtl : List.of(false, true)) {
+                Rect expectedCrop = rtl ? rightOf(bitmapRect, expectedCropSize)
+                        : leftOf(bitmapRect, expectedCropSize);
                 assertThat(mWallpaperCropper.getCrop(
                         displaySize, bitmapSize, suggestedCrops, rtl))
-                        .isEqualTo(centerOf(bitmapRect, expectedCropSize));
+                        .isEqualTo(expectedCrop);
             }
         }
     }
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsTest.java
index 851cf4a..976cc18 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsTest.java
@@ -91,7 +91,7 @@
         final Parcel parcel = Parcel.obtain();
         parcel.writeParcelable(outBatteryUsageStats, 0);
 
-        assertThat(parcel.dataSize()).isLessThan(8000);
+        assertThat(parcel.dataSize()).isLessThan(10000);
 
         parcel.setDataPosition(0);
 
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/ProxyManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/ProxyManagerTest.java
index d4f0d5a..52b33db 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/ProxyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/ProxyManagerTest.java
@@ -593,12 +593,6 @@
         }
 
         @Override
-        public void onMagnificationSystemUIConnectionChanged(boolean connected)
-                throws RemoteException {
-
-        }
-
-        @Override
         public void onMagnificationChanged(int displayId, Region region, MagnificationConfig config)
                 throws RemoteException {
 
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationConnectionManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationConnectionManagerTest.java
index 0de5807..87fe6cf 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationConnectionManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationConnectionManagerTest.java
@@ -59,7 +59,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.filters.FlakyTest;
 
-import com.android.compatibility.common.util.TestUtils;
 import com.android.internal.util.test.FakeSettingsProvider;
 import com.android.server.LocalServices;
 import com.android.server.accessibility.AccessibilityTraceManager;
@@ -77,7 +76,6 @@
  */
 public class MagnificationConnectionManagerTest {
 
-    private static final int WAIT_CONNECTION_TIMEOUT_SECOND = 1;
     private static final int CURRENT_USER_ID = UserHandle.USER_SYSTEM;
     private static final int SERVICE_ID = 1;
 
@@ -117,19 +115,17 @@
     private void stubSetConnection(boolean needDelay) {
         doAnswer((InvocationOnMock invocation) -> {
             final boolean connect = (Boolean) invocation.getArguments()[0];
-            // Use post to simulate setConnection() called by another process.
-            final Context context = ApplicationProvider.getApplicationContext();
+            // Simulates setConnection() called by another process.
             if (needDelay) {
+                final Context context = ApplicationProvider.getApplicationContext();
                 context.getMainThreadHandler().postDelayed(
                         () -> {
                             mMagnificationConnectionManager.setConnection(
                                     connect ? mMockConnection.getConnection() : null);
                         }, 10);
             } else {
-                context.getMainThreadHandler().post(() -> {
-                    mMagnificationConnectionManager.setConnection(
-                            connect ? mMockConnection.getConnection() : null);
-                });
+                mMagnificationConnectionManager.setConnection(
+                        connect ? mMockConnection.getConnection() : null);
             }
             return true;
         }).when(mMockStatusBarManagerInternal).requestMagnificationConnection(anyBoolean());
@@ -633,10 +629,9 @@
     }
 
     @Test
-    public void isConnected_requestConnection_expectedValue() throws Exception {
+    public void isConnected_requestConnection_expectedValue() throws RemoteException {
         mMagnificationConnectionManager.requestConnection(true);
-        TestUtils.waitUntil("connection is not ready", WAIT_CONNECTION_TIMEOUT_SECOND,
-                () -> mMagnificationConnectionManager.isConnected());
+        assertTrue(mMagnificationConnectionManager.isConnected());
 
         mMagnificationConnectionManager.requestConnection(false);
         assertFalse(mMagnificationConnectionManager.isConnected());
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServerPermissionProviderTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServerPermissionProviderTest.java
index 8d772ad..0f3b0aa 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServerPermissionProviderTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServerPermissionProviderTest.java
@@ -15,15 +15,23 @@
  */
 package com.android.server.audio;
 
+import static com.android.server.audio.AudioServerPermissionProvider.MONITORED_PERMS;
+
+import static org.mockito.AdditionalMatchers.aryEq;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyByte;
 import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.os.RemoteException;
 import android.platform.test.annotations.Presubmit;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -45,6 +53,8 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.function.BiPredicate;
+import java.util.function.Supplier;
 
 @RunWith(AndroidJUnit4.class)
 @Presubmit
@@ -64,6 +74,9 @@
     @Mock public PackageState mMockPackageStateFive_10001_four;
     @Mock public PackageState mMockPackageStateSix_10000_two;
 
+    @Mock public BiPredicate<Integer, String> mMockPermPred;
+    @Mock public Supplier<int[]> mMockUserIdSupplier;
+
     public List<UidPackageState> mInitPackageListExpected;
 
     // Argument matcher which matches that the state is equal even if the package names are out of
@@ -148,6 +161,13 @@
 
         when(mMockPackageStateSix_10000_two.getAppId()).thenReturn(10000);
         when(mMockPackageStateSix_10000_two.getPackageName()).thenReturn("com.package.two");
+
+        when(mMockUserIdSupplier.get()).thenReturn(new int[] {0, 1});
+
+        when(mMockPermPred.test(eq(10000), eq(MONITORED_PERMS[0]))).thenReturn(true);
+        when(mMockPermPred.test(eq(110001), eq(MONITORED_PERMS[0]))).thenReturn(true);
+        when(mMockPermPred.test(eq(10001), eq(MONITORED_PERMS[1]))).thenReturn(true);
+        when(mMockPermPred.test(eq(110000), eq(MONITORED_PERMS[1]))).thenReturn(true);
     }
 
     @Test
@@ -168,7 +188,9 @@
                         createUidPackageState(
                                 10001, List.of("com.package.two", "com.package.four")));
 
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
         verify(mMockPc)
                 .populatePackagesForUids(argThat(new PackageStateListMatcher(expectedPackageList)));
@@ -179,7 +201,9 @@
         // 10000: one | 10001: two
         var initPackageListData =
                 List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
 
         // new uid, including user component
@@ -196,7 +220,9 @@
         // 10000: one | 10001: two
         var initPackageListData =
                 List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
 
         // Includes user-id
@@ -211,7 +237,9 @@
         // 10000: one | 10001: two
         var initPackageListData =
                 List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
 
         // Includes user-id
@@ -233,7 +261,9 @@
                         mMockPackageStateOne_10000_one,
                         mMockPackageStateTwo_10001_two,
                         mMockPackageStateSix_10000_two);
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
 
         // Includes user-id
@@ -255,7 +285,9 @@
                         mMockPackageStateOne_10000_one,
                         mMockPackageStateTwo_10001_two,
                         mMockPackageStateSix_10000_two);
-        mPermissionProvider = new AudioServerPermissionProvider(initPackageListData);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
         mPermissionProvider.onServiceStart(mMockPc);
         mPermissionProvider.onModifyPackageState(1_10000, "com.package.one", true /* isRemove */);
         verify(mMockPc)
@@ -299,6 +331,72 @@
         verify(newMockPc).updatePackagesForUid(any());
     }
 
+    @Test
+    public void testPermissionsPopulated_onStart() throws Exception {
+        // expected state from setUp:
+        // PERM[0]: [10000, 110001]
+        // PERM[1]: [10001, 110000]
+        // PERM[...]: []
+        var initPackageListData =
+                List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
+
+        mPermissionProvider.onServiceStart(mMockPc);
+        verify(mMockPc).populatePermissionState(eq((byte) 0), aryEq(new int[] {10000, 110001}));
+        verify(mMockPc).populatePermissionState(eq((byte) 1), aryEq(new int[] {10001, 110000}));
+        for (int i = 2; i < MONITORED_PERMS.length; i++) {
+            verify(mMockPc).populatePermissionState(eq((byte) i), aryEq(new int[] {}));
+        }
+        verify(mMockPc, times(MONITORED_PERMS.length)).populatePermissionState(anyByte(), any());
+    }
+
+    @Test
+    public void testPermissionsPopulated_onChange() throws Exception {
+        var initPackageListData =
+                List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
+
+        mPermissionProvider.onServiceStart(mMockPc);
+        clearInvocations(mMockPc);
+        // Ensure the provided permission state is changed
+        when(mMockPermPred.test(eq(110001), eq(MONITORED_PERMS[1]))).thenReturn(true);
+
+        mPermissionProvider.onPermissionStateChanged();
+        verify(mMockPc)
+                .populatePermissionState(eq((byte) 1), aryEq(new int[] {10001, 110000, 110001}));
+        verify(mMockPc).populatePermissionState(anyByte(), any()); // exactly once
+    }
+
+    @Test
+    public void testPermissionPopulatedDeferred_onDeadService() throws Exception {
+        var initPackageListData =
+                List.of(mMockPackageStateOne_10000_one, mMockPackageStateTwo_10001_two);
+        mPermissionProvider =
+                new AudioServerPermissionProvider(
+                        initPackageListData, mMockPermPred, mMockUserIdSupplier);
+
+        // throw on the first call to mark the service as dead
+        doThrow(new RemoteException())
+                .doNothing()
+                .when(mMockPc)
+                .populatePermissionState(anyByte(), any());
+        mPermissionProvider.onServiceStart(mMockPc);
+        clearInvocations(mMockPc);
+        clearInvocations(mMockPermPred);
+
+        mPermissionProvider.onPermissionStateChanged();
+        verify(mMockPermPred, never()).test(any(), any());
+        verify(mMockPc, never()).populatePermissionState(anyByte(), any());
+        mPermissionProvider.onServiceStart(mMockPc);
+        for (int i = 0; i < MONITORED_PERMS.length; i++) {
+            verify(mMockPc).populatePermissionState(eq((byte) i), any());
+        }
+    }
+
     private static UidPackageState createUidPackageState(int uid, List<String> packages) {
         var res = new UidPackageState();
         res.uid = uid;
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
index 40de1b2..182d603 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
@@ -320,7 +320,7 @@
     }
 
     @Test
-    public void luxProbeNotEnabledOnStartWhenNotWake() throws RemoteException {
+    public void luxProbeDisabledOnStartWhenNotWake() throws RemoteException {
         luxProbeEnabledOnStart(false /* isAwake */);
     }
 
@@ -337,6 +337,7 @@
                 .getValue().toAidlContext());
 
         verify(mLuxProbe, isAwake ? times(1) : never()).enable();
+        verify(mLuxProbe, isAwake ? never() : times(1)).disable();
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
index 4505a8b..627ca03 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
@@ -95,7 +95,7 @@
         mVirtualCameraController = new VirtualCameraController(mVirtualCameraServiceMock,
                 DEVICE_POLICY_CUSTOM, DEVICE_ID);
         when(mVirtualCameraServiceMock.registerCamera(any(), any(), anyInt())).thenReturn(true);
-        when(mVirtualCameraServiceMock.getCameraId(any())).thenReturn(0);
+        when(mVirtualCameraServiceMock.getCameraId(any())).thenReturn("0");
     }
 
     @After
diff --git a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java
index 32bbc7a..6d79ae4 100644
--- a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java
@@ -551,7 +551,7 @@
 
         // Add some time-series data
         for (int i = 1; i < 20; ++i) {
-            samples.add(0, watcher.createSampleForTesting(1000 * i, 25.0f + 0.5f * i));
+            samples.add(watcher.createSampleForTesting(1000 * i, 25.0f + 0.5f * i));
         }
 
         // Now the forecast should vary depending on how far ahead we are trying to predict
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java b/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
index 19ce217..9dac23f 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/VibrationThreadTest.java
@@ -1681,7 +1681,7 @@
                 .addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
                 .compose();
         VibrationEffect effect4 = VibrationEffect.createOneShot(8000, 100);
-        VibrationEffect effect5 = VibrationEffect.createOneShot(20, 222);
+        VibrationEffect effect5 = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
 
         long vibrationId1 = startThreadAndDispatcher(effect1);
         waitForCompletion();
@@ -1745,13 +1745,12 @@
         verifyCallbacksTriggered(vibrationId4, Vibration.Status.CANCELLED_BY_SCREEN_OFF);
         assertTrue("Tested duration=" + duration4, duration4 < 2000);
 
-        // Effect5: normal oneshot. Don't worry about amplitude, as effect4 may or may not have
-        // started.
+        // Effect5: played normally after effect4, which may or may not have played.
 
         verify(mControllerCallbacks).onComplete(eq(VIBRATOR_ID), eq(vibrationId5));
         verifyCallbacksTriggered(vibrationId5, Vibration.Status.FINISHED);
 
-        assertEquals(Arrays.asList(expectedOneShot(20)),
+        assertEquals(Arrays.asList(expectedPrebaked(VibrationEffect.EFFECT_CLICK)),
                 fakeVibrator.getEffectSegments(vibrationId5));
     }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index 89140a2..1fd8f50 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -16,10 +16,8 @@
 
 package com.android.server.wm;
 
-import static android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND;
 import static android.app.Activity.RESULT_CANCELED;
 import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
-import static android.app.ActivityManager.PROCESS_STATE_TOP;
 import static android.app.ActivityManager.START_ABORTED;
 import static android.app.ActivityManager.START_CANCELED;
 import static android.app.ActivityManager.START_CLASS_NOT_FOUND;
@@ -44,7 +42,6 @@
 import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
 import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
 import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.os.Process.SYSTEM_UID;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.clearInvocations;
@@ -52,7 +49,6 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
@@ -79,15 +75,12 @@
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.anyObject;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.notNull;
 
 import android.app.ActivityOptions;
-import android.app.ActivityOptions.BackgroundActivityStartMode;
 import android.app.AppOpsManager;
-import android.app.BackgroundStartPrivileges;
 import android.app.IApplicationThread;
 import android.app.PictureInPictureParams;
 import android.content.ComponentName;
@@ -101,10 +94,8 @@
 import android.graphics.Rect;
 import android.os.Binder;
 import android.os.IBinder;
-import android.os.Process;
 import android.os.RemoteException;
 import android.platform.test.annotations.Presubmit;
-import android.platform.test.annotations.RequiresFlagsDisabled;
 import android.provider.DeviceConfig;
 import android.service.voice.IVoiceInteractionSession;
 import android.util.Pair;
@@ -116,8 +107,6 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.compatibility.common.util.DeviceConfigStateHelper;
-import com.android.internal.util.FrameworkStatsLog;
-import com.android.server.am.PendingIntentRecord;
 import com.android.server.pm.PackageArchiver;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.wm.BackgroundActivityStartController.BalVerdict;
@@ -126,11 +115,8 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.MockitoSession;
-import org.mockito.quality.Strictness;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -416,9 +402,7 @@
         doReturn("packageName").when(mMockPackageManager).getNameForUid(anyInt());
         doReturn(false).when(mMockPackageManager).isInstantAppInstallerComponent(any());
         doReturn(null).when(mMockPackageManager).resolveIntent(any(), any(), anyLong(), anyLong(),
-                anyInt(), anyBoolean(), anyInt());
-        doReturn(null).when(mMockPackageManager).resolveIntentExported(any(), any(),
-                anyLong(), anyLong(), anyInt(), anyBoolean(), anyInt(), anyInt());
+                anyInt(), anyBoolean(), anyInt(), anyInt());
         doReturn(new ComponentName("", "")).when(mMockPackageManager).getSystemUiServiceComponent();
 
         // Never review permissions
@@ -728,497 +712,68 @@
                 eq(FAKE_REAL_CALLING_UID), anyInt(), anyBoolean(), eq(false));
     }
 
-    /**
-     * This test ensures that unsupported usecases aren't aborted when background starts are
-     * allowed.
-     */
-    @Test
-    public void testBackgroundActivityStartsAllowed_noStartsAborted() {
-        doReturn(true).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest("allowed_noStartsAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
 
     /**
      * This test ensures that unsupported usecases are aborted when background starts are
      * disallowed.
      */
     @Test
-    public void testBackgroundActivityStartsDisallowed_unsupportedUsecaseAborted() {
+    public void testPinnedSingleInstanceAborted() {
         doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_unsupportedUsecase_aborted", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that unsupported usecases are aborted when background starts are
-     * disallowed.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callingUidProcessStateTopAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callingUidProcessStateTop_aborted", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that unsupported usecases are aborted when background starts are
-     * disallowed.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_realCallingUidProcessStateTopAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_realCallingUidProcessStateTop_aborted", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that unsupported usecases are aborted when background starts are
-     * disallowed.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_hasForegroundActivitiesAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_hasForegroundActivities_aborted", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                true, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that unsupported usecases are aborted when background starts are
-     * disallowed.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_pinnedSingleInstanceAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_pinned_singleinstance_aborted", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, true, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the calling process runs as ROOT_UID.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_rootUidNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest("disallowed_rootUid_notAborted", false,
-                Process.ROOT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the calling process is running as SYSTEM_UID.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_systemUidNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest("disallowed_systemUid_notAborted", false,
-                Process.SYSTEM_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the calling process is running as NFC_UID.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_nfcUidNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest("disallowed_nfcUid_notAborted", false,
-                Process.NFC_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the calling process has a visible window.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callingUidHasVisibleWindowNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callingUidHasVisibleWindow_notAborted", false,
-                UNIMPORTANT_UID, true, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * The sending app has a visible window, but does not (by default) allow the pending intent to
-     * start the background activity.
-     */
-    @Test
-    @Ignore("b/266015587")
-    public void testBackgroundActivityStartsDisallowed_realCallingUidHasVisibleWindowAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_realCallingUidHasVisibleWindow_abortedInU", true,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, true, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller is in the recent activity list.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callerIsRecentsNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callerIsRecents_notAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, true, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller is temporarily (10s) allowed to start.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callerIsAllowedNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callerIsAllowed_notAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, true, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller explicitly has background activity start privilege.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callerIsInstrumentingWithBASPnotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callerIsInstrumentingWithBackgroundActivityStartPrivileges_notAborted",
-                false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, true, false, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller is a device owner.
-     */
-    @Test
-    public void
-            testBackgroundActivityStartsDisallowed_callingPackageNameIsDeviceOwnerNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callingPackageNameIsDeviceOwner_notAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, true, false, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller is a affiliated profile owner.
-     */
-    @Test
-    public void
-            testBackgroundActivityStartsDisallowed_isAffiliatedProfileOwnerNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callingUidIsAffiliatedProfileOwner_notAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, true, false, false);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller has the OP_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION appop.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callerHasSystemExemptAppOpNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callerHasSystemExemptAppOpNotAborted", false,
-                UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, true);
-    }
-
-    /**
-     * This test ensures that supported usecases aren't aborted when background starts are
-     * disallowed. Each scenarios tests one condition that makes them supported in isolation. In
-     * this case the caller is an IME.
-     */
-    @Test
-    public void testBackgroundActivityStartsDisallowed_callingPackageNameIsImeNotAborted() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        setupImeWindow();
-        runAndVerifyBackgroundActivityStartsSubtest(
-                "disallowed_callingPackageNameIsIme_notAborted", false,
-                CURRENT_IME_UID, false, PROCESS_STATE_BOUND_TOP,
-                UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                false, false, false, false, false, false, false, false);
-    }
-
-    /**
-     * This test ensures proper logging for BAL_ALLOW_PERMISSION.
-     */
-    @Test
-    public void testBackgroundActivityStartsAllowed_logging() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        MockitoSession mockingSession = mockitoSession()
-                .mockStatic(ActivityTaskManagerService.class)
-                .mockStatic(FrameworkStatsLog.class)
-                .strictness(Strictness.LENIENT)
-                .startMocking();
-        try {
-            doReturn(PERMISSION_GRANTED).when(() -> ActivityTaskManagerService.checkPermission(
-                    eq(START_ACTIVITIES_FROM_BACKGROUND),
-                    anyInt(), anyInt()));
-            runAndVerifyBackgroundActivityStartsSubtest(
-                    "allowed_notAborted", false,
-                    UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                    UNIMPORTANT_UID2, false, PROCESS_STATE_BOUND_TOP,
-                    false, true, false, false, false, false, false, false);
-            verify(() -> FrameworkStatsLog.write(FrameworkStatsLog.BAL_ALLOWED,
-                    "",  // activity name
-                    BackgroundActivityStartController.BAL_ALLOW_PERMISSION,
-                    UNIMPORTANT_UID,
-                    UNIMPORTANT_UID2,
-                    BackgroundActivityStartController.BAL_ALLOW_PERMISSION,
-                    true, // opt in
-                    false, // but no explicit opt in
-                    BackgroundActivityStartController.BAL_BLOCK,
-                    true, // opt in
-                    false // but no explicit opt in
-            ));
-        } finally {
-            mockingSession.finishMocking();
-        }
-    }
-
-    /**
-     * This test ensures proper logging for BAL_ALLOW_PENDING_INTENT, when the PendingIntent sender
-     * is the only reason BAL is allowed.
-     */
-    @Test
-    @RequiresFlagsDisabled(com.android.window.flags.Flags.FLAG_BAL_IMPROVED_METRICS)
-    public void testBackgroundActivityStartsAllowed_loggingOnlyPendingIntentAllowed() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        MockitoSession mockingSession = mockitoSession()
-                .mockStatic(ActivityTaskManagerService.class)
-                .mockStatic(FrameworkStatsLog.class)
-                .mockStatic(PendingIntentRecord.class)
-                .strictness(Strictness.LENIENT)
-                .startMocking();
-        try {
-            doReturn(PERMISSION_GRANTED).when(() -> ActivityTaskManagerService.checkPermission(
-                    eq(START_ACTIVITIES_FROM_BACKGROUND),
-                    anyInt(), anyInt()));
-            doReturn(BackgroundStartPrivileges.allowBackgroundActivityStarts(null)).when(
-                    () -> PendingIntentRecord.getBackgroundStartPrivilegesAllowedByCaller(
-                            anyObject(), anyInt(), anyObject()));
-            runAndVerifyBackgroundActivityStartsSubtest(
-                    "allowed_notAborted", false,
-                    UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                    Process.SYSTEM_UID, true, PROCESS_STATE_BOUND_TOP,
-                    false, true, false, false, false, false, false, false,
-                    ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_DENIED);
-            verify(() -> FrameworkStatsLog.write(FrameworkStatsLog.BAL_ALLOWED,
-                    DEFAULT_COMPONENT_PACKAGE_NAME + "/" + DEFAULT_COMPONENT_PACKAGE_NAME,
-                    BackgroundActivityStartController.BAL_ALLOW_PENDING_INTENT,
-                    UNIMPORTANT_UID,
-                    Process.SYSTEM_UID,
-                    BackgroundActivityStartController.BAL_ALLOW_PERMISSION,
-                    false, // opt in
-                    true, // explicit opt out
-                    BackgroundActivityStartController.BAL_ALLOW_VISIBLE_WINDOW,
-                    true, // opt in
-                    false // but no explicit opt in
-            ));
-        } finally {
-            mockingSession.finishMocking();
-        }
-    }
-
-    /**
-     * This test ensures proper logging for BAL_ALLOW_PENDING_INTENT, when the PendingIntent sender
-     * is not the primary reason to allow BAL (but the creator).
-     */
-    @Test
-    @RequiresFlagsDisabled(com.android.window.flags.Flags.FLAG_BAL_IMPROVED_METRICS)
-    public void testBackgroundActivityStartsAllowed_loggingPendingIntentAllowed() {
-        doReturn(false).when(mAtm).isBackgroundActivityStartsEnabled();
-        MockitoSession mockingSession = mockitoSession()
-                .mockStatic(ActivityTaskManagerService.class)
-                .mockStatic(FrameworkStatsLog.class)
-                .mockStatic(PendingIntentRecord.class)
-                .strictness(Strictness.LENIENT)
-                .startMocking();
-        try {
-            doReturn(PERMISSION_GRANTED).when(() -> ActivityTaskManagerService.checkPermission(
-                    eq(START_ACTIVITIES_FROM_BACKGROUND),
-                    anyInt(), anyInt()));
-            doReturn(BackgroundStartPrivileges.allowBackgroundActivityStarts(null)).when(
-                    () -> PendingIntentRecord.getBackgroundStartPrivilegesAllowedByCaller(
-                            anyObject(), anyInt(), anyObject()));
-            runAndVerifyBackgroundActivityStartsSubtest(
-                    "allowed_notAborted", false,
-                    UNIMPORTANT_UID, false, PROCESS_STATE_BOUND_TOP,
-                    Process.SYSTEM_UID, true, PROCESS_STATE_BOUND_TOP,
-                    false, true, false, false, false, false, false, false,
-                    ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
-            verify(() -> FrameworkStatsLog.write(FrameworkStatsLog.BAL_ALLOWED,
-                    "",
-                    BackgroundActivityStartController.BAL_ALLOW_PERMISSION,
-                    UNIMPORTANT_UID,
-                    Process.SYSTEM_UID,
-                    BackgroundActivityStartController.BAL_ALLOW_PERMISSION,
-                    true, // opt in
-                    true, // explicit opt in
-                    BackgroundActivityStartController.BAL_ALLOW_VISIBLE_WINDOW,
-                    true, // opt in
-                    false // but no explicit opt in
-            ));
-        } finally {
-            mockingSession.finishMocking();
-        }
-    }
-
-    private void runAndVerifyBackgroundActivityStartsSubtest(String name, boolean shouldHaveAborted,
-            int callingUid, boolean callingUidHasVisibleWindow, int callingUidProcState,
-            int realCallingUid, boolean realCallingUidHasVisibleWindow, int realCallingUidProcState,
-            boolean hasForegroundActivities, boolean callerIsRecents,
-            boolean callerIsTempAllowed,
-            boolean callerIsInstrumentingWithBackgroundActivityStartPrivileges,
-            boolean isCallingUidDeviceOwner,
-            boolean isCallingUidAffiliatedProfileOwner,
-            boolean isPinnedSingleInstance,
-            boolean hasSystemExemptAppOp) {
-        runAndVerifyBackgroundActivityStartsSubtest(name, shouldHaveAborted, callingUid,
-                callingUidHasVisibleWindow, callingUidProcState, realCallingUid,
-                realCallingUidHasVisibleWindow,  realCallingUidProcState, hasForegroundActivities,
-                callerIsRecents, callerIsTempAllowed,
-                callerIsInstrumentingWithBackgroundActivityStartPrivileges,
-                isCallingUidDeviceOwner, isCallingUidAffiliatedProfileOwner, isPinnedSingleInstance,
-                hasSystemExemptAppOp,
-                ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED);
-    }
-
-    private void runAndVerifyBackgroundActivityStartsSubtest(String name, boolean shouldHaveAborted,
-            int callingUid, boolean callingUidHasVisibleWindow, int callingUidProcState,
-            int realCallingUid, boolean realCallingUidHasVisibleWindow, int realCallingUidProcState,
-            boolean hasForegroundActivities, boolean callerIsRecents,
-            boolean callerIsTempAllowed,
-            boolean callerIsInstrumentingWithBackgroundActivityStartPrivileges,
-            boolean isCallingUidDeviceOwner,
-            boolean isCallingUidAffiliatedProfileOwner,
-            boolean isPinnedSingleInstance,
-            boolean hasSystemExemptAppOp,
-            @BackgroundActivityStartMode int pendingIntentCreatorBackgroundActivityStartMode) {
         // window visibility
-        doReturn(callingUidHasVisibleWindow).when(mAtm).hasActiveVisibleWindow(callingUid);
-        doReturn(realCallingUidHasVisibleWindow).when(mAtm).hasActiveVisibleWindow(realCallingUid);
+        doReturn(false).when(mAtm).hasActiveVisibleWindow(UNIMPORTANT_UID);
+        doReturn(false).when(mAtm).hasActiveVisibleWindow(UNIMPORTANT_UID2);
         // process importance
-        mAtm.mActiveUids.onUidActive(callingUid, callingUidProcState);
-        mAtm.mActiveUids.onUidActive(realCallingUid, realCallingUidProcState);
+        mAtm.mActiveUids.onUidActive(UNIMPORTANT_UID, PROCESS_STATE_BOUND_TOP);
+        mAtm.mActiveUids.onUidActive(UNIMPORTANT_UID2, PROCESS_STATE_BOUND_TOP);
         // foreground activities
         final IApplicationThread caller = mock(IApplicationThread.class);
         final WindowProcessListener listener = mock(WindowProcessListener.class);
         final ApplicationInfo ai = new ApplicationInfo();
-        ai.uid = callingUid;
+        ai.uid = UNIMPORTANT_UID;
         ai.packageName = "com.android.test.package";
-        final WindowProcessController callerApp =
-                spy(new WindowProcessController(mAtm, ai, null, callingUid, -1, null, listener));
-        doReturn(hasForegroundActivities).when(callerApp).hasForegroundActivities();
+        final WindowProcessController callerApp = spy(new WindowProcessController(
+                mAtm, ai, null, UNIMPORTANT_UID, -1, null, listener));
+        doReturn(false).when(callerApp).hasForegroundActivities();
         doReturn(callerApp).when(mAtm).getProcessController(caller);
         // caller is recents
         RecentTasks recentTasks = mock(RecentTasks.class);
         mAtm.mTaskSupervisor.setRecentTasks(recentTasks);
-        doReturn(callerIsRecents).when(recentTasks).isCallerRecents(callingUid);
+        doReturn(false).when(recentTasks).isCallerRecents(UNIMPORTANT_UID);
         // caller is temp allowed
-        if (callerIsTempAllowed) {
-            callerApp.addOrUpdateBackgroundStartPrivileges(new Binder(),
-                    BackgroundStartPrivileges.ALLOW_BAL);
-        }
         // caller is instrumenting with background activity starts privileges
-        callerApp.setInstrumenting(callerIsInstrumentingWithBackgroundActivityStartPrivileges,
-                callerIsInstrumentingWithBackgroundActivityStartPrivileges ? Process.SHELL_UID : -1,
-                callerIsInstrumentingWithBackgroundActivityStartPrivileges);
+        callerApp.setInstrumenting(false, -1, false);
         // callingUid is the device owner
-        doReturn(isCallingUidDeviceOwner).when(mAtm).isDeviceOwner(callingUid);
+        doReturn(false).when(mAtm).isDeviceOwner(UNIMPORTANT_UID);
         // callingUid is the affiliated profile owner
-        doReturn(isCallingUidAffiliatedProfileOwner).when(mAtm)
-            .isAffiliatedProfileOwner(callingUid);
+        doReturn(false).when(mAtm).isAffiliatedProfileOwner(UNIMPORTANT_UID);
 
         // caller has OP_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION appop
-        doReturn(hasSystemExemptAppOp ? AppOpsManager.MODE_ALLOWED
-                : AppOpsManager.MODE_DEFAULT).when(mAppOpsManager).checkOpNoThrow(
+        doReturn(AppOpsManager.MODE_DEFAULT).when(mAppOpsManager).checkOpNoThrow(
                 eq(AppOpsManager.OP_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION),
                 anyInt(), any());
 
-        int launchMode = LAUNCH_MULTIPLE;
-        if (isPinnedSingleInstance) {
-            final ActivityRecord baseActivity =
-                    new ActivityBuilder(mAtm).setCreateTask(true).build();
-            baseActivity.getRootTask()
-                    .setWindowingMode(WINDOWING_MODE_PINNED);
-            doReturn(baseActivity).when(mRootWindowContainer).findTask(any(), any());
-            launchMode = LAUNCH_SINGLE_INSTANCE;
-        }
+        final ActivityRecord baseActivity = new ActivityBuilder(mAtm).setCreateTask(true).build();
+        baseActivity.getRootTask().setWindowingMode(WINDOWING_MODE_PINNED);
+        doReturn(baseActivity).when(mRootWindowContainer).findTask(any(), any());
 
         ActivityOptions rawOptions = ActivityOptions.makeBasic()
                 .setPendingIntentCreatorBackgroundActivityStartMode(
-                        pendingIntentCreatorBackgroundActivityStartMode);
+                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED);
         final ActivityOptions options = spy(rawOptions);
         ActivityRecord[] outActivity = new ActivityRecord[1];
         ActivityStarter starter = prepareStarter(
-                FLAG_ACTIVITY_NEW_TASK, true, launchMode)
+                FLAG_ACTIVITY_NEW_TASK, true, LAUNCH_SINGLE_INSTANCE)
                 .setCallingPackage("com.whatever.dude")
                 .setCaller(caller)
-                .setCallingUid(callingUid)
-                .setRealCallingUid(realCallingUid)
+                .setCallingUid(UNIMPORTANT_UID)
+                .setRealCallingUid(UNIMPORTANT_UID2)
                 .setActivityOptions(new SafeActivityOptions(options))
                 .setOutActivity(outActivity);
 
-        final int result = starter.setReason("testBackgroundActivityStarts_" + name).execute();
-
-        assertEquals(ActivityStarter.getExternalResult(
-                shouldHaveAborted ? START_ABORTED : START_SUCCESS), result);
-        verify(options, times(shouldHaveAborted ? 1 : 0)).abort();
+        final int result = starter.setReason("testPinnedSingleInstanceAborted").execute();
+        assertEquals(ActivityStarter.getExternalResult(START_ABORTED), result);
+        verify(options, times(1)).abort();
 
         final ActivityRecord startedActivity = outActivity[0];
         if (startedActivity != null && startedActivity.getTask() != null) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
index 4afc8ac..366e519 100644
--- a/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
@@ -29,6 +29,7 @@
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import android.app.ActivityOptions;
@@ -564,4 +565,136 @@
         assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
                 BAL_ALLOW_SAW_PERMISSION);
     }
+
+    @Test
+    public void testCaller_isRecents() {
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = REGULAR_UID_2;
+        int realCallingPid = REGULAR_PID_2;
+
+        // setup state
+        //if (mSupervisor.mRecentTasks.isCallerRecents(state.mCallingUid))
+        RecentTasks recentTasks = mock(RecentTasks.class);
+        when(recentTasks.isCallerRecents(eq(callingUid))).thenReturn(true);
+        mSupervisor.mRecentTasks = recentTasks;
+
+        // prepare call
+        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = TEST_INTENT;
+        ActivityOptions checkedOptions = mCheckedOptions;
+        BackgroundActivityStartController.BalState balState = mController.new BalState(callingUid,
+                callingPid, callingPackage, realCallingUid, realCallingPid, null,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // call
+        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
+                balState);
+        balState.setResultForCaller(callerVerdict);
+
+        // assertions
+        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
+                BAL_ALLOW_ALLOWLISTED_COMPONENT);
+    }
+
+    @Test
+    public void testCaller_isDeviceOwner() {
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = REGULAR_UID_2;
+        int realCallingPid = REGULAR_PID_2;
+
+        // setup state
+        when(mService.isDeviceOwner(eq(callingUid))).thenReturn(true);
+
+        // prepare call
+        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = TEST_INTENT;
+        ActivityOptions checkedOptions = mCheckedOptions;
+        BackgroundActivityStartController.BalState balState = mController.new BalState(callingUid,
+                callingPid, callingPackage, realCallingUid, realCallingPid, null,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // call
+        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
+                balState);
+        balState.setResultForCaller(callerVerdict);
+
+        // assertions
+        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
+                BAL_ALLOW_ALLOWLISTED_COMPONENT);
+    }
+
+    @Test
+    public void testCaller_isAffiliatedProfileOwner() {
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = REGULAR_UID_2;
+        int realCallingPid = REGULAR_PID_2;
+
+        // setup state
+        when(mService.isAffiliatedProfileOwner(eq(callingUid))).thenReturn(true);
+
+        // prepare call
+        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = TEST_INTENT;
+        ActivityOptions checkedOptions = mCheckedOptions;
+        BackgroundActivityStartController.BalState balState = mController.new BalState(callingUid,
+                callingPid, callingPackage, realCallingUid, realCallingPid, null,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // call
+        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
+                balState);
+        balState.setResultForCaller(callerVerdict);
+
+        // assertions
+        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
+                BAL_ALLOW_ALLOWLISTED_COMPONENT);
+    }
+
+    @Test
+    public void testCaller_isExemptFromBgStartRestriction() {
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = REGULAR_UID_2;
+        int realCallingPid = REGULAR_PID_2;
+
+        mDeviceConfig.set("system_exempt_from_activity_bg_start_restriction_enabled", "true");
+        AppOpsManager appOpsManager = mock(AppOpsManager.class);
+        when(mService.getAppOpsManager()).thenReturn(appOpsManager);
+        when(appOpsManager.checkOpNoThrow(eq(
+                        AppOpsManager.OP_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION),
+                eq(callingUid), eq(callingPackage))).thenReturn(AppOpsManager.MODE_ALLOWED);
+
+
+        // prepare call
+        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = TEST_INTENT;
+        ActivityOptions checkedOptions = mCheckedOptions;
+        BackgroundActivityStartController.BalState balState = mController.new BalState(callingUid,
+                callingPid, callingPackage, realCallingUid, realCallingPid, null,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // call
+        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
+                balState);
+        balState.setResultForCaller(callerVerdict);
+
+        // assertions
+        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
+                BAL_ALLOW_PERMISSION);
+    }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackgroundLaunchProcessControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/BackgroundLaunchProcessControllerTests.java
new file mode 100644
index 0000000..a4df034
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/BackgroundLaunchProcessControllerTests.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.wm;
+
+import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_ALLOW;
+import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_DISALLOW;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_FOREGROUND;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_GRACE_PERIOD;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_PERMISSION;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_VISIBLE_WINDOW;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.BackgroundStartPrivileges;
+import android.content.Context;
+import android.os.Binder;
+import android.os.IBinder;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.server.wm.BackgroundActivityStartController.BalVerdict;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Tests for the {@link BackgroundLaunchProcessController} class.
+ *
+ * Build/Install/Run:
+ * atest WmTests:BackgroundLaunchProcessControllerTests
+ */
+@SmallTest
+@Presubmit
+@RunWith(JUnit4.class)
+public class BackgroundLaunchProcessControllerTests {
+
+    Set<IBinder> mActivityStartAllowed = new HashSet<>();
+    Set<Integer> mHasActiveVisibleWindow = new HashSet<>();
+
+    BackgroundActivityStartCallback mCallback = new BackgroundActivityStartCallback() {
+        @Override
+        public boolean isActivityStartAllowed(Collection<IBinder> tokens, int uid,
+                String packageName) {
+            for (IBinder token : tokens) {
+                if (token == null || mActivityStartAllowed.contains(token)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean canCloseSystemDialogs(Collection<IBinder> tokens, int uid) {
+            return false;
+        }
+    };
+    BackgroundLaunchProcessController mController = new BackgroundLaunchProcessController(
+            mHasActiveVisibleWindow::contains, mCallback);
+
+    int mPid = 123;
+    int mUid = 234;
+    String mPackageName = "package.name";
+    int mAppSwitchState = APP_SWITCH_DISALLOW;
+    boolean mIsCheckingForFgsStart = false;
+    boolean mHasActivityInVisibleTask = false;
+    boolean mHasBackgroundActivityStartPrivileges = false;
+    long mLastStopAppSwitchesTime = 0L;
+    long mLastActivityLaunchTime = 0L;
+    long mLastActivityFinishTime = 0L;
+
+    @Test
+    public void testNothingAllows() {
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_BLOCK);
+    }
+
+    @Test
+    public void testInstrumenting() {
+        mHasBackgroundActivityStartPrivileges = true;
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_PERMISSION);
+    }
+
+    @Test
+    public void testAllowedByTokenNoCallback() {
+        mController = new BackgroundLaunchProcessController(mHasActiveVisibleWindow::contains,
+                null);
+        Binder token = new Binder();
+        mActivityStartAllowed.add(token);
+        mController.addOrUpdateAllowBackgroundStartPrivileges(token,
+                BackgroundStartPrivileges.ALLOW_BAL);
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_PERMISSION);
+    }
+
+    @Test
+    public void testAllowedByToken() {
+        Binder token = new Binder();
+        mActivityStartAllowed.add(token);
+        mController.addOrUpdateAllowBackgroundStartPrivileges(token,
+                BackgroundStartPrivileges.ALLOW_BAL);
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_PERMISSION);
+    }
+
+    @Test
+    public void testBoundByForeground() {
+        mAppSwitchState = APP_SWITCH_ALLOW;
+        mController.addBoundClientUid(999, "visible.package", Context.BIND_ALLOW_ACTIVITY_STARTS);
+        mHasActiveVisibleWindow.add(999);
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_VISIBLE_WINDOW);
+    }
+
+    @Test
+    public void testForegroundTask() {
+        mAppSwitchState = APP_SWITCH_ALLOW;
+        mHasActivityInVisibleTask = true;
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_FOREGROUND);
+    }
+
+    @Test
+    public void testGracePeriod() {
+        mAppSwitchState = APP_SWITCH_ALLOW;
+        long now = System.currentTimeMillis();
+        mLastStopAppSwitchesTime = now - 10000;
+        mLastActivityLaunchTime = now - 9000;
+        mLastActivityFinishTime = now - 100;
+        BalVerdict balVerdict = mController.areBackgroundActivityStartsAllowed(
+                mPid, mUid, mPackageName,
+                mAppSwitchState, mIsCheckingForFgsStart,
+                mHasActivityInVisibleTask, mHasBackgroundActivityStartPrivileges,
+                mLastStopAppSwitchesTime, mLastActivityLaunchTime,
+                mLastActivityFinishTime);
+        assertThat(balVerdict.getCode()).isEqualTo(BAL_ALLOW_GRACE_PERIOD);
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 87395a1..417ee6b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1343,6 +1343,27 @@
         assertEquals(mAppWindow, mDisplayContent.computeImeControlTarget());
     }
 
+    @SetupWindows(addWindows = W_ACTIVITY)
+    @Test
+    public void testShouldImeAttachedToApp_targetBoundsDifferentFromImeContainer_returnsFalse()
+            throws Exception {
+        Rect imeContainerBounds = new Rect(0, 0, 100, 100);
+        Rect imeTargetBounds = new Rect(0, 0, 100, 200);
+        spyOn(mAppWindow);
+        spyOn(mAppWindow.mActivityRecord);
+        doReturn(imeTargetBounds).when(mAppWindow).getBounds();
+        doReturn(true).when(mAppWindow.mActivityRecord).matchParentBounds();
+        mDisplayContent.setImeInputTarget(mAppWindow);
+        mDisplayContent.setImeLayeringTarget(
+                mDisplayContent.getImeInputTarget().getWindowState());
+        mDisplayContent.setRemoteInsetsController(createDisplayWindowInsetsController());
+        final DisplayArea.Tokens imeContainer = mDisplayContent.getImeContainer();
+        spyOn(imeContainer);
+        doReturn(imeContainerBounds).when(imeContainer).getBounds();
+
+        assertFalse(mDisplayContent.shouldImeAttachedToApp());
+    }
+
     @Test
     public void testUpdateSystemGestureExclusion() throws Exception {
         final DisplayContent dc = createNewDisplay();
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
index c7f5020..8129c3d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
@@ -77,6 +77,7 @@
 import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.annotation.Nullable;
 import android.compat.testing.PlatformCompatChangeRule;
@@ -110,7 +111,7 @@
 import org.junit.runner.RunWith;
 
 /**
- * Test class for {@link LetterboxUiControllerTest}.
+ * Test class for {@link LetterboxUiController}.
  *
  * Build/Install/Run:
  * atest WmTests:LetterboxUiControllerTest
@@ -521,8 +522,8 @@
         final Rect opaqueBounds = new Rect(0, 0, 500, 300);
         doReturn(opaqueBounds).when(mActivity).getBounds();
         // Activity is translucent
-        spyOn(mActivity.mLetterboxUiController);
-        doReturn(true).when(mActivity.mLetterboxUiController).hasInheritedLetterboxBehavior();
+        spyOn(mActivity.mTransparentPolicy);
+        when(mActivity.mTransparentPolicy.isRunning()).thenReturn(true);
 
         // Makes requested sizes different
         mainWindow.mRequestedWidth = opaqueBounds.width() - 1;
diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
index 7756edd..d88871c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
@@ -906,6 +906,24 @@
     }
 
     /**
+     * Tests whether home can be started if it's not allowed by policy.
+     */
+    @Test
+    public void testCanStartHome_returnsFalse_ifDisallowedByPolicy() {
+        final ActivityInfo info = new ActivityInfo();
+        info.applicationInfo = new ApplicationInfo();
+        final WindowProcessController app = mock(WindowProcessController.class);
+        doReturn(app).when(mAtm).getProcessController(any(), anyInt());
+        doReturn(false).when(app).isInstrumenting();
+        final TaskDisplayArea taskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea();
+        doReturn(false).when(taskDisplayArea).canHostHomeTask();
+
+        assertFalse(mRootWindowContainer.canStartHomeOnDisplayArea(info, taskDisplayArea,
+                false /* allowInstrumenting*/));
+    }
+
+
+    /**
      * Tests that secondary home activity should not be resolved if device is still locked.
      */
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 7ced9d5..1a366b3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -16,8 +16,6 @@
 
 package com.android.server.wm;
 
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
@@ -62,7 +60,6 @@
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_SIZE_COMPAT_MODE;
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_LETTERBOXED;
 import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_VISIBLE;
-import static com.android.server.wm.ActivityRecord.State.DESTROYED;
 import static com.android.server.wm.ActivityRecord.State.PAUSED;
 import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS;
 import static com.android.server.wm.ActivityRecord.State.RESUMED;
@@ -77,7 +74,6 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -109,7 +105,6 @@
 import android.os.UserHandle;
 import android.platform.test.annotations.EnableFlags;
 import android.platform.test.annotations.Presubmit;
-import android.platform.test.annotations.RequiresFlagsDisabled;
 import android.provider.DeviceConfig;
 import android.provider.DeviceConfig.Properties;
 import android.view.InsetsFrameProvider;
@@ -199,26 +194,6 @@
     }
 
     @Test
-    public void testCleanLetterboxConfigListenerWhenTranslucentIsDestroyed() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-
-        translucentActivity.setState(DESTROYED, "testing");
-        translucentActivity.removeImmediately();
-
-        assertFalse(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-    }
-
-    @Test
     public void testHorizontalReachabilityEnabledForTranslucentActivities() {
         testReachabilityEnabledForTranslucentActivity(/* dw */ 2500,  /* dh */1000,
                 SCREEN_ORIENTATION_PORTRAIT, /* minAspectRatio */ 0f,
@@ -364,45 +339,8 @@
     }
 
     @Test
-    public void testApplyStrategyAgainWhenOpaqueIsDestroyed() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Launch another opaque activity
-        final ActivityRecord opaqueActivity = new ActivityBuilder(mAtm)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(opaqueActivity);
-        // Transparent activity strategy not applied
-        assertFalse(opaqueActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-
-        // Launch translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-        // Transparent strategy applied
-        assertTrue(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-
-        spyOn(translucentActivity.mLetterboxUiController);
-        clearInvocations(translucentActivity.mLetterboxUiController);
-
-        // We destroy the first opaque activity
-        opaqueActivity.setState(DESTROYED, "testing");
-        opaqueActivity.removeImmediately();
-
-        // Check that updateInheritedLetterbox() is invoked again
-        verify(translucentActivity.mLetterboxUiController).updateInheritedLetterbox();
-    }
-
-    // TODO(b/333663877): Enable test after fix
-    @Test
-    @RequiresFlagsDisabled({Flags.FLAG_INSETS_DECOUPLED_CONFIGURATION})
     @EnableFlags(Flags.FLAG_IMMERSIVE_APP_REPOSITIONING)
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testRepositionLandscapeImmersiveAppWithDisplayCutout() {
         final int dw = 2100;
         final int dh = 2000;
@@ -416,11 +354,14 @@
         mWm.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
         mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
 
-        doReturn(true).when(mActivity).isImmersiveMode(any());
-        prepareMinAspectRatio(mActivity, OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE,
-                SCREEN_ORIENTATION_LANDSCAPE);
-        addWindowToActivity(mActivity);
-        mActivity.mRootWindowContainer.performSurfacePlacement();
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
+                .setMinAspectRatio(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE)
+                .build();
+
+        doReturn(true).when(activity).isImmersiveMode(any());
+        addWindowToActivity(activity);
+        activity.mRootWindowContainer.performSurfacePlacement();
 
         final Function<ActivityRecord, Rect> innerBoundsOf =
                 (ActivityRecord a) -> {
@@ -431,299 +372,22 @@
 
         final Consumer<Integer> doubleClick =
                 (Integer y) -> {
-                    mActivity.mLetterboxUiController.handleVerticalDoubleTap(y);
-                    mActivity.mRootWindowContainer.performSurfacePlacement();
+                    activity.mLetterboxUiController.handleVerticalDoubleTap(y);
+                    activity.mRootWindowContainer.performSurfacePlacement();
                 };
 
-        final Rect bounds = mActivity.getBounds();
+        final Rect bounds = activity.getBounds();
         assertTrue(bounds.top > cutoutHeight && bounds.bottom < dh);
         assertEquals(dw, bounds.width());
 
         // Double click bottom.
         doubleClick.accept(dh - 10);
-        assertEquals(dh, innerBoundsOf.apply(mActivity).bottom);
+        assertEquals(dh, innerBoundsOf.apply(activity).bottom);
 
         // Double click top.
         doubleClick.accept(10);
         doubleClick.accept(10);
-        assertEquals(cutoutHeight, innerBoundsOf.apply(mActivity).top);
-    }
-
-    @Test
-    public void testResetOpaqueReferenceWhenOpaqueIsDestroyed() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-
-        // Launch translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-        // Transparent strategy applied
-        assertTrue(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-        assertNotNull(translucentActivity.mLetterboxUiController.mFirstOpaqueActivityBeneath);
-
-        spyOn(translucentActivity.mLetterboxUiController);
-        clearInvocations(translucentActivity.mLetterboxUiController);
-
-        // We destroy the first opaque activity
-        mActivity.removeImmediately();
-
-        // Check that updateInheritedLetterbox() is invoked again
-        verify(translucentActivity.mLetterboxUiController).updateInheritedLetterbox();
-        assertNull(translucentActivity.mLetterboxUiController.mFirstOpaqueActivityBeneath);
-    }
-
-    @Test
-    public void testNotApplyStrategyAgainWhenOpaqueIsNotDestroyed() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Launch another opaque activity
-        final ActivityRecord opaqueActivity = new ActivityBuilder(mAtm)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(opaqueActivity);
-        // Transparent activity strategy not applied
-        assertFalse(opaqueActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-
-        // Launch translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-        // Transparent strategy applied
-        assertTrue(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-
-        spyOn(translucentActivity.mLetterboxUiController);
-        clearInvocations(translucentActivity.mLetterboxUiController);
-
-        // Check that updateInheritedLetterbox() is invoked again
-        verify(translucentActivity.mLetterboxUiController, never()).updateInheritedLetterbox();
-    }
-
-    @Test
-    public void testApplyStrategyToTranslucentActivities() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, 1.5f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.info.setMinAspectRatio(1.2f);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
-                .setMinAspectRatio(1.1f)
-                .setMaxAspectRatio(3f)
-                .build();
-        mTask.addChild(translucentActivity);
-        // We check bounds
-        final Rect opaqueBounds = mActivity.getConfiguration().windowConfiguration.getBounds();
-        final Rect translucentRequestedBounds = translucentActivity.getRequestedOverrideBounds();
-        assertEquals(opaqueBounds, translucentRequestedBounds);
-        // We check orientation
-        final int translucentOrientation =
-                translucentActivity.getRequestedConfigurationOrientation();
-        assertEquals(ORIENTATION_PORTRAIT, translucentOrientation);
-        // We check aspect ratios
-        assertEquals(1.2f, translucentActivity.getMinAspectRatio(), 0.00001f);
-        assertEquals(1.5f, translucentActivity.getMaxAspectRatio(), 0.00001f);
-    }
-
-    @Test
-    public void testApplyStrategyToTranslucentActivitiesRetainsWindowConfigurationProperties() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .build();
-        final Configuration requestedConfig =
-                translucentActivity.getRequestedOverrideConfiguration();
-        final WindowConfiguration translucentWinConf = requestedConfig.windowConfiguration;
-        translucentWinConf.setActivityType(ACTIVITY_TYPE_STANDARD);
-        translucentWinConf.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
-        translucentWinConf.setAlwaysOnTop(true);
-        translucentActivity.onRequestedOverrideConfigurationChanged(requestedConfig);
-
-        mTask.addChild(translucentActivity);
-
-        // The original override of WindowConfiguration should keep.
-        assertEquals(ACTIVITY_TYPE_STANDARD, translucentActivity.getActivityType());
-        assertEquals(WINDOWING_MODE_MULTI_WINDOW, translucentWinConf.getWindowingMode());
-        assertTrue(translucentWinConf.isAlwaysOnTop());
-        // Unless display is going to be rotated, it should always inherit from parent.
-        assertEquals(ROTATION_UNDEFINED, translucentWinConf.getDisplayRotation());
-    }
-
-    @Test
-    public void testApplyStrategyToMultipleTranslucentActivities() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, 1.5f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.info.setMinAspectRatio(1.2f);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
-                .setMinAspectRatio(1.1f)
-                .setMaxAspectRatio(3f)
-                .build();
-        mTask.addChild(translucentActivity);
-        // We check bounds
-        final Rect opaqueBounds = mActivity.getConfiguration().windowConfiguration.getBounds();
-        final Rect translucentRequestedBounds = translucentActivity.getRequestedOverrideBounds();
-        assertEquals(opaqueBounds, translucentRequestedBounds);
-        // Launch another translucent activity
-        final ActivityRecord translucentActivity2 = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
-                .build();
-        mTask.addChild(translucentActivity2);
-        // We check bounds
-        final Rect translucent2RequestedBounds = translucentActivity2.getRequestedOverrideBounds();
-        assertEquals(opaqueBounds, translucent2RequestedBounds);
-    }
-
-    @Test
-    public void testNotApplyStrategyToTranslucentActivitiesOverEmbeddedActivities() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT;
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Mock the activity as embedded without additional TaskFragment layer in the task for
-        // simplicity.
-        doReturn(true).when(mActivity).isEmbedded();
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent).build();
-        doReturn(false).when(translucentActivity).matchParentBounds();
-        mTask.addChild(translucentActivity);
-        // Check the strategy has not being applied
-        assertFalse(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-    }
-
-    @Test
-    public void testTranslucentActivitiesDontGoInSizeCompatMode() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2800, 1400);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        prepareUnresizable(mActivity, -1f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
-        // Rotate to put activity in size compat mode.
-        rotateDisplay(mActivity.mDisplayContent, ROTATION_90);
-        assertTrue(mActivity.inSizeCompatMode());
-        // Rotate back
-        rotateDisplay(mActivity.mDisplayContent, ROTATION_0);
-        assertFalse(mActivity.inSizeCompatMode());
-        // We launch a transparent activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-        // It should not be in SCM
-        assertFalse(translucentActivity.inSizeCompatMode());
-        // We rotate again
-        rotateDisplay(translucentActivity.mDisplayContent, ROTATION_90);
-        assertFalse(translucentActivity.inSizeCompatMode());
-    }
-
-    @Test
-    public void testCheckOpaqueIsLetterboxedWhenStrategyIsApplied() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2000, 1000);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        // Translucent Activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .build();
-        assertFalse(translucentActivity.fillsParent());
-        assertTrue(mActivity.fillsParent());
-        mActivity.finishing = true;
-        assertFalse(mActivity.occludesParent());
-        mTask.addChild(translucentActivity);
-        // The translucent activity won't inherit letterbox behavior from a finishing activity.
-        assertFalse(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
-    }
-
-    @Test
-    public void testTranslucentActivitiesWhenUnfolding() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2800, 1400);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(
-                true /* ignoreOrientationRequest */);
-        mActivity.mWmService.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
-                1.0f /*letterboxVerticalPositionMultiplier*/);
-        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
-        // We launch a transparent activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-        assertEquals(translucentActivity.getBounds(), mActivity.getBounds());
-
-        mTask.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
-        spyOn(mActivity);
-
-        // Halffold
-        setFoldablePosture(translucentActivity, true /* isHalfFolded */,
-                false /* isTabletop */);
-        verify(mActivity).recomputeConfiguration();
-        assertEquals(translucentActivity.getBounds(), mActivity.getBounds());
-        clearInvocations(mActivity);
-
-        // Unfold
-        setFoldablePosture(translucentActivity, false /* isHalfFolded */,
-                false /* isTabletop */);
-        verify(mActivity).recomputeConfiguration();
-        assertEquals(translucentActivity.getBounds(), mActivity.getBounds());
-    }
-
-    @Test
-    public void testTranslucentActivity_clearSizeCompatMode_inheritedCompatDisplayInsetsCleared() {
-        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
-        setUpDisplaySizeWithApp(2800, 1400);
-        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
-        prepareUnresizable(mActivity, -1f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
-        // Rotate to put activity in size compat mode.
-        rotateDisplay(mActivity.mDisplayContent, ROTATION_90);
-        assertTrue(mActivity.inSizeCompatMode());
-
-        // We launch a transparent activity
-        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
-                .setActivityTheme(android.R.style.Theme_Translucent)
-                .setLaunchedFromUid(mActivity.getUid())
-                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .build();
-        mTask.addChild(translucentActivity);
-
-        // The transparent activity inherits the compat display insets of the opaque activity
-        // beneath it
-        assertNotNull(translucentActivity.getCompatDisplayInsets());
-
-        // Clearing SCM should also clear the inherited compat display insets
-        translucentActivity.clearSizeCompatMode();
-        assertNull(translucentActivity.getCompatDisplayInsets());
+        assertEquals(cutoutHeight, innerBoundsOf.apply(activity).top);
     }
 
     @Test
@@ -754,26 +418,25 @@
     }
 
     @Test
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testFixedAspectRatioBoundsWithDecorInSquareDisplay() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         final int notchHeight = 100;
         setUpApp(new TestDisplayContent.Builder(mAtm, 600, 800).setNotch(notchHeight).build());
 
         final Rect displayBounds = mActivity.mDisplayContent.getWindowConfiguration().getBounds();
         final float aspectRatio = 1.2f;
-        mActivity.info.setMaxAspectRatio(aspectRatio);
-        mActivity.info.setMinAspectRatio(aspectRatio);
-        prepareUnresizable(mActivity, -1f, SCREEN_ORIENTATION_UNSPECIFIED);
-        final Rect appBounds = mActivity.getWindowConfiguration().getAppBounds();
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setScreenOrientation(SCREEN_ORIENTATION_UNSPECIFIED)
+                .setMinAspectRatio(aspectRatio)
+                .setMaxAspectRatio(aspectRatio)
+                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+                .build();
+        final Rect appBounds = activity.getWindowConfiguration().getAppBounds();
 
         // The parent configuration doesn't change since the first resolved configuration, so the
         // activity should fit in the parent naturally (size=583x700, appBounds=[9, 100 - 592, 800],
         // horizontal offset = round((600 - 583) / 2) = 9)).
-        assertFitted();
+        assertFitted(activity);
         final int offsetX = (int) ((1f + displayBounds.width() - appBounds.width()) / 2);
         // The bounds must be horizontal centered.
         assertEquals(offsetX, appBounds.left);
@@ -781,30 +444,30 @@
         // Ensure the app bounds keep the declared aspect ratio.
         assertEquals(appBounds.height(), appBounds.width() * aspectRatio, 0.5f /* delta */);
         // The decor height should be a part of the effective bounds.
-        assertEquals(mActivity.getBounds().height(), appBounds.height() + notchHeight);
+        assertEquals(activity.getBounds().height(), appBounds.height() + notchHeight);
         // Activity max bounds should be sandboxed; activity is letterboxed due to aspect ratio.
-        assertActivityMaxBoundsSandboxed();
+        assertActivityMaxBoundsSandboxed(activity);
         // Activity max bounds ignore notch, since an app can be shown past the notch (although app
         // is currently limited by the notch).
-        assertThat(mActivity.getWindowConfiguration().getMaxBounds().height())
+        assertThat(activity.getWindowConfiguration().getMaxBounds().height())
                 .isEqualTo(displayBounds.height());
 
-        mActivity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE);
-        assertFitted();
+        activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE);
+        assertFitted(activity);
 
         // After the orientation of activity is changed, the display is rotated, the aspect
         // ratio should be the same (bounds=[0, 0 - 800, 583], appBounds=[100, 0 - 800, 583]).
         assertEquals(appBounds.width(), appBounds.height() * aspectRatio, 0.5f /* delta */);
         // Activity max bounds are sandboxed.
-        assertActivityMaxBoundsSandboxed();
+        assertActivityMaxBoundsSandboxed(activity);
 
-        mActivity.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT);
-        assertFitted();
+        activity.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT);
+        assertFitted(activity);
         // Activity max bounds should be sandboxed; activity is letterboxed due to aspect ratio.
-        assertActivityMaxBoundsSandboxed();
+        assertActivityMaxBoundsSandboxed(activity);
         // Activity max bounds ignore notch, since an app can be shown past the notch (although app
         // is currently limited by the notch).
-        assertThat(mActivity.getWindowConfiguration().getMaxBounds().height())
+        assertThat(activity.getWindowConfiguration().getMaxBounds().height())
                 .isEqualTo(displayBounds.height());
     }
 
@@ -1011,12 +674,8 @@
 
     @Test
     public void testMoveToDifferentOrientationDisplay() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         setUpDisplaySizeWithApp(1000, 2500);
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
         prepareUnresizable(mActivity, -1.f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
         assertFitted();
 
@@ -1063,16 +722,12 @@
 
     @Test
     public void testFixedOrientationRotateCutoutDisplay() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // Create a display with a notch/cutout
         final int notchHeight = 60;
         final int width = 1000;
         setUpApp(new TestDisplayContent.Builder(mAtm, width, 2500)
                 .setNotch(notchHeight).build());
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
         // Bounds=[0, 0 - 1000, 1400], AppBounds=[0, 60 - 1000, 1460].
         final float maxAspect = 1.4f;
         prepareUnresizable(mActivity, 1.4f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
@@ -1665,12 +1320,8 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override forces the activity into a 3:2 aspect ratio
@@ -1682,24 +1333,18 @@
     @Test
     @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO,
             ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM})
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testOverrideMinAspectRatioLowerThanManifest() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
-        final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1400, 1800)
-                .setNotch(200).setSystemDecorations(true).build();
+        final int dh = 1800;
+        final int notchHeight = 200;
+        final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1400, dh)
+                .setNotch(notchHeight).setSystemDecorations(true).build();
         mTask = new TaskBuilder(mSupervisor).setDisplay(display).build();
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
                 .setMinAspectRatio(2f)
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override should have no effect, because the manifest aspect ratio is
@@ -1708,7 +1353,7 @@
         assertEquals("App bounds must have min aspect ratio", 2f,
                 (float) appBounds.height() / appBounds.width(), 0.0001f /* delta */);
         assertEquals("Long side must fit task",
-                mTask.getWindowConfiguration().getAppBounds().height(), appBounds.height());
+                dh - notchHeight, appBounds.height());
         assertEquals("Bounds can include insets", mTask.getBounds().height(),
                 activity.getBounds().height());
     }
@@ -1720,13 +1365,9 @@
         setUpDisplaySizeWithApp(1400, 1600);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
                 .setMinAspectRatio(1.1f)
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override should have no effect, because the manifest aspect ratio is
@@ -1743,12 +1384,8 @@
         setUpDisplaySizeWithApp(1500, 1600);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override forces the activity into a 16:9 aspect ratio
@@ -1767,12 +1404,8 @@
         setUpDisplaySizeWithApp(1400, 1600);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override forces the activity into a 16:9 aspect ratio
@@ -1792,12 +1425,7 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         // The per-package override should have no effect
         assertEquals(1200, activity.getBounds().height());
@@ -1824,12 +1452,8 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override should have no effect
@@ -1854,12 +1478,8 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override forces the activity into a 3:2 aspect ratio
@@ -1884,12 +1504,7 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         // The per-package override forces the activity into a 3:2 aspect ratio
         assertEquals(1200, activity.getBounds().height());
@@ -1908,12 +1523,8 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override forces the activity into a 3:2 aspect ratio
@@ -1931,12 +1542,8 @@
         setUpDisplaySizeWithApp(1000, 1200);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // The per-package override should have no effect
@@ -1951,12 +1558,8 @@
         setUpDisplaySizeWithApp(/* dw= */ 1000, /* dh= */ 2800);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         final TestSplitOrganizer organizer =
@@ -2034,15 +1637,11 @@
 
     @Test
     public void testLaunchWithFixedRotationTransform() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         final int dw = 1000;
         final int dh = 2500;
         final int notchHeight = 200;
         setUpApp(new TestDisplayContent.Builder(mAtm, dw, dh).setNotch(notchHeight).build());
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
         // The test assumes the notch will be at left side when the orientation is landscape.
         if (mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_reverseDefaultRotation)) {
@@ -2652,12 +2251,7 @@
     private void testUserOverrideAspectRatio(boolean isUnresizable, int screenOrientation,
             float expectedAspectRatio, @PackageManager.UserMinAspectRatio int aspectRatio,
             boolean enabled) {
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
         spyOn(activity.mWmService.mLetterboxConfiguration);
         doReturn(enabled).when(activity.mWmService.mLetterboxConfiguration)
@@ -2688,12 +2282,8 @@
         final int displayWidth = 1400;
         final int displayHeight = 1600;
         setUpDisplaySizeWithApp(displayWidth, displayHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setMinAspectRatio(1.1f)
-                .setUid(android.os.Process.myUid())
                 .build();
         // Setup Letterbox Configuration
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
@@ -2713,12 +2303,8 @@
         final int displayWidth = 1600;
         final int displayHeight = 1400;
         setUpDisplaySizeWithApp(displayWidth, displayHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setMinAspectRatio(1.1f)
-                .setUid(android.os.Process.myUid())
                 .build();
         // Setup Letterbox Configuration
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
@@ -2739,12 +2325,8 @@
         final int displayWidth = 1400;
         final int displayHeight = 1600;
         setUpDisplaySizeWithApp(displayWidth, displayHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setMinAspectRatio(1.1f)
-                .setUid(android.os.Process.myUid())
                 .build();
         // Setup Letterbox Configuration
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
@@ -2765,12 +2347,8 @@
         final int displayWidth = 1600;
         final int displayHeight = 1400;
         setUpDisplaySizeWithApp(displayWidth, displayHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setMinAspectRatio(1.1f)
-                .setUid(android.os.Process.myUid())
                 .build();
         // Setup Letterbox Configuration
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
@@ -2791,12 +2369,7 @@
         final int screenWidth = 1800;
         final int screenHeight = 1000;
         setUpDisplaySizeWithApp(screenWidth, screenHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
         // Simulate real display with top insets.
@@ -2832,12 +2405,7 @@
         final int screenWidth = 1000;
         final int screenHeight = 1800;
         setUpDisplaySizeWithApp(screenWidth, screenHeight);
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
         // Simulate real display with top insets.
@@ -2875,12 +2443,7 @@
         mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         // Non-resizable portrait activity
         prepareUnresizable(activity, 0f, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -2910,12 +2473,7 @@
         mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
 
         // Create a size compat activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = getActivityBuilderOnSameTask().build();
 
         final TestSplitOrganizer organizer =
                 new TestSplitOrganizer(mAtm, activity.getDisplayContent());
@@ -3973,17 +3531,13 @@
 
     @Test
     public void testLetterboxDetailsForStatusBar_letterboxNotOverlappingStatusBar() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // Align to center so that we don't overlap with the status bar
         mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2800)
                 .setNotch(100)
                 .build();
         setUpApp(display);
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
         TestWindowState statusBar = addStatusBar(mActivity.mDisplayContent);
         spyOn(statusBar);
         doReturn(new Rect(0, 0, statusBar.mRequestedWidth, statusBar.mRequestedHeight))
@@ -3995,12 +3549,12 @@
         // Refresh the letterbox
         mActivity.mRootWindowContainer.performSurfacePlacement();
 
-        Rect mBounds = new Rect(mActivity.getWindowConfiguration().getBounds());
-        assertEquals(mBounds, new Rect(0, 900, 1000, 2000));
+        Rect bounds = new Rect(mActivity.getWindowConfiguration().getBounds());
+        assertEquals(new Rect(0, 900, 1000, 2000), bounds);
 
         DisplayPolicy displayPolicy = mActivity.getDisplayContent().getDisplayPolicy();
         LetterboxDetails[] expectedLetterboxDetails = {new LetterboxDetails(
-                mBounds,
+                bounds,
                 mActivity.getDisplayContent().getBounds(),
                 mActivity.findMainWindow().mAttrs.insetsFlags.appearance
         )};
@@ -4289,12 +3843,8 @@
         assertTrue(display.getDisplayPolicy().updateDecorInsetsInfo());
         display.sendNewConfiguration();
 
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         // Activity should not be letterboxed and should have portrait app bounds even though
@@ -4326,12 +3876,8 @@
         assertTrue(display.getDisplayPolicy().updateDecorInsetsInfo());
         display.sendNewConfiguration();
 
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
                 .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
                 .build();
 
         final Rect bounds = activity.getBounds();
@@ -4358,14 +3904,11 @@
         assertTrue(dc.getDisplayPolicy().updateDecorInsetsInfo());
         dc.sendNewConfiguration();
 
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+                .setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
+                .setMinAspectRatio(OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE)
                 .build();
-        prepareMinAspectRatio(activity, OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE,
-                SCREEN_ORIENTATION_LANDSCAPE);
         // To force config to update again but with the same landscape orientation.
         activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
 
@@ -4379,11 +3922,6 @@
 
     @Test
     public void testApplyAspectRatio_activityAlignWithParentAppVertical() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // The display's app bounds will be (0, 100, 1000, 2350)
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2500)
                 .setCanRotate(false)
@@ -4391,19 +3929,16 @@
                 .build();
 
         setUpApp(display);
-        prepareUnresizable(mActivity, 2.1f /* maxAspect */, SCREEN_ORIENTATION_UNSPECIFIED);
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
+        prepareUnresizable(mActivity, 2.1f, SCREEN_ORIENTATION_UNSPECIFIED);
         // The activity height is 2100 and the display's app bounds height is 2250, so the activity
         // can be aligned inside parentAppBounds
-        assertEquals(mActivity.getBounds(), new Rect(0, 0, 1000, 2200));
+        assertEquals(new Rect(0, 0, 1000, 2200), mActivity.getBounds());
     }
 
     @Test
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testApplyAspectRatio_activityCannotAlignWithParentAppVertical() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // The display's app bounds will be (0, 100, 1000, 2150)
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2300)
                 .setCanRotate(false)
@@ -4411,19 +3946,21 @@
                 .build();
 
         setUpApp(display);
-        prepareUnresizable(mActivity, 2.1f /* maxAspect */, SCREEN_ORIENTATION_UNSPECIFIED);
+
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+                .setMaxAspectRatio(2.1f)
+                .setScreenOrientation(SCREEN_ORIENTATION_UNSPECIFIED)
+                .build();
+
         // The activity height is 2100 and the display's app bounds height is 2050, so the activity
         // cannot be aligned inside parentAppBounds and it will fill the parentBounds of the display
-        assertEquals(mActivity.getBounds(), display.getBounds());
+        assertEquals(activity.getBounds(), display.getBounds());
     }
 
     @Test
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testApplyAspectRatio_activityAlignWithParentAppHorizontal() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // The display's app bounds will be (100, 0, 2350, 1000)
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 2500, 1000)
                 .setCanRotate(false)
@@ -4431,18 +3968,19 @@
                 .build();
 
         setUpApp(display);
-        prepareUnresizable(mActivity, 2.1f /* maxAspect */, SCREEN_ORIENTATION_UNSPECIFIED);
+
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+                .setMaxAspectRatio(2.1f)
+                .setScreenOrientation(SCREEN_ORIENTATION_UNSPECIFIED)
+                .build();
         // The activity width is 2100 and the display's app bounds width is 2250, so the activity
         // can be aligned inside parentAppBounds
-        assertEquals(mActivity.getBounds(), new Rect(175, 0, 2275, 1000));
+        assertEquals(activity.getBounds(), new Rect(175, 0, 2275, 1000));
     }
     @Test
+    @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
     public void testApplyAspectRatio_activityCannotAlignWithParentAppHorizontal() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         // The display's app bounds will be (100, 0, 2150, 1000)
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 2300, 1000)
                 .setCanRotate(false)
@@ -4450,10 +3988,14 @@
                 .build();
 
         setUpApp(display);
-        prepareUnresizable(mActivity, 2.1f /* maxAspect */, SCREEN_ORIENTATION_UNSPECIFIED);
+        final ActivityRecord activity = getActivityBuilderOnSameTask()
+                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+                .setMaxAspectRatio(2.1f)
+                .setScreenOrientation(SCREEN_ORIENTATION_UNSPECIFIED)
+                .build();
         // The activity width is 2100 and the display's app bounds width is 2050, so the activity
         // cannot be aligned inside parentAppBounds and it will fill the parentBounds of the display
-        assertEquals(mActivity.getBounds(), display.getBounds());
+        assertEquals(activity.getBounds(), display.getBounds());
     }
 
     @Test
@@ -4681,26 +4223,23 @@
 
     @Test
     public void testUpdateResolvedBoundsPosition_alignToTop() {
-        if (Flags.insetsDecoupledConfiguration()) {
-            // TODO (b/151861875): Re-enable it. This is disabled temporarily because the config
-            //  bounds no longer contains display cutout.
-            return;
-        }
         final int notchHeight = 100;
         final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2800)
                 .setNotch(notchHeight)
                 .build();
         setUpApp(display);
 
+        mActivity.mResolveConfigHint.mUseOverrideInsetsForConfig = true;
         // Prepare unresizable activity with max aspect ratio
-        prepareUnresizable(mActivity, /* maxAspect */ 1.1f, SCREEN_ORIENTATION_UNSPECIFIED);
+        prepareUnresizable(mActivity, 1.1f, SCREEN_ORIENTATION_UNSPECIFIED);
 
-        Rect mBounds = new Rect(mActivity.getWindowConfiguration().getBounds());
+        Rect bounds = new Rect(mActivity.getWindowConfiguration().getBounds());
         Rect appBounds = new Rect(mActivity.getWindowConfiguration().getAppBounds());
         // The insets should be cut for aspect ratio and then added back because the appBounds
         // are aligned to the top of the parentAppBounds
-        assertEquals(mBounds, new Rect(0, 0, 1000, 1200));
-        assertEquals(appBounds, new Rect(0, notchHeight, 1000, 1200));
+        assertEquals(new Rect(0, notchHeight, 1000, 1200), appBounds);
+        assertEquals(new Rect(0, 0, 1000, 1200), bounds);
+
     }
 
     private void assertVerticalPositionForDifferentDisplayConfigsForLandscapeActivity(
@@ -5196,15 +4735,19 @@
      */
     private ActivityRecord buildActivityRecord(boolean supportsSizeChanges, int resizeMode,
             @ScreenOrientation int screenOrientation) {
-        return new ActivityBuilder(mAtm)
-                .setTask(mTask)
+        return getActivityBuilderOnSameTask()
                 .setResizeMode(resizeMode)
                 .setSupportsSizeChanges(supportsSizeChanges)
                 .setScreenOrientation(screenOrientation)
+                .build();
+    }
+
+    private ActivityBuilder getActivityBuilderOnSameTask() {
+        return new ActivityBuilder(mAtm)
+                .setTask(mTask)
                 .setComponent(ComponentName.createRelative(mContext,
                         SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+                .setUid(android.os.Process.myUid());
     }
 
     static void prepareMinAspectRatio(ActivityRecord activity, float minAspect,
@@ -5268,21 +4811,29 @@
         }
     }
 
-    /** Asserts that the size of activity is larger than its parent so it is scaling. */
     private void assertScaled() {
-        assertTrue(mActivity.inSizeCompatMode());
-        assertNotEquals(1f, mActivity.getCompatScale(), 0.0001f /* delta */);
+        assertScaled(mActivity);
+    }
+
+    /** Asserts that the size of activity is larger than its parent so it is scaling. */
+    private void assertScaled(ActivityRecord activity) {
+        assertTrue(activity.inSizeCompatMode());
+        assertNotEquals(1f, activity.getCompatScale(), 0.0001f /* delta */);
+    }
+
+    private void assertFitted() {
+        assertFitted(mActivity);
     }
 
     /** Asserts that the activity is best fitted in the parent. */
-    private void assertFitted() {
-        final boolean inSizeCompatMode = mActivity.inSizeCompatMode();
+    private void assertFitted(ActivityRecord activity) {
+        final boolean inSizeCompatMode = activity.inSizeCompatMode();
         final String failedConfigInfo = inSizeCompatMode
-                ? ("ParentConfig=" + mActivity.getParent().getConfiguration()
-                        + " ActivityConfig=" + mActivity.getConfiguration())
+                ? ("ParentConfig=" + activity.getParent().getConfiguration()
+                        + " ActivityConfig=" + activity.getConfiguration())
                 : "";
         assertFalse(failedConfigInfo, inSizeCompatMode);
-        assertFalse(mActivity.hasSizeCompatBounds());
+        assertFalse(activity.hasSizeCompatBounds());
     }
 
     /** Asserts the activity max bounds inherit from the TaskDisplayArea. */
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
index d9fd312..9670a9a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
@@ -1902,7 +1902,7 @@
 
         assertApplyTransactionAllowed(mTransaction);
 
-        verify(task).moveOrCreateDecorSurfaceFor(tf);
+        verify(task).moveOrCreateDecorSurfaceFor(tf, true /* visible */);
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
index 225e85e..6ecaea9 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
@@ -1695,7 +1695,7 @@
 
         // Decor surface should be created.
         clearInvocations(task);
-        task.moveOrCreateDecorSurfaceFor(fragment);
+        task.moveOrCreateDecorSurfaceFor(fragment, true /* visible */);
 
         assertNotNull(task.mDecorSurfaceContainer);
         assertNotNull(task.getDecorSurface());
@@ -1722,14 +1722,14 @@
         final TaskFragment fragment2 = createTaskFragmentWithEmbeddedActivity(task, organizer);
         doNothing().when(task).sendTaskFragmentParentInfoChangedIfNeeded();
 
-        task.moveOrCreateDecorSurfaceFor(fragment1);
+        task.moveOrCreateDecorSurfaceFor(fragment1, true /* visible */);
 
         assertNotNull(task.mDecorSurfaceContainer);
         assertNotNull(task.getDecorSurface());
         assertEquals(fragment1, task.mDecorSurfaceContainer.mOwnerTaskFragment);
 
         // Transfer ownership
-        task.moveOrCreateDecorSurfaceFor(fragment2);
+        task.moveOrCreateDecorSurfaceFor(fragment2, true /* visible */);
 
         assertNotNull(task.mDecorSurfaceContainer);
         assertNotNull(task.getDecorSurface());
@@ -1775,7 +1775,7 @@
         doReturn(true).when(fragment2).isAllowedToBeEmbeddedInTrustedMode();
         doReturn(true).when(fragment1).isVisible();
 
-        task.moveOrCreateDecorSurfaceFor(fragment1);
+        task.moveOrCreateDecorSurfaceFor(fragment1, true /* visible */);
         task.assignChildLayers(t);
 
         verify(unembeddedActivity).assignLayer(t, 0);
@@ -1880,7 +1880,7 @@
         doReturn(false).when(fragment2).isAllowedToBeEmbeddedInTrustedMode();
         doReturn(true).when(fragment1).isVisible();
 
-        task.moveOrCreateDecorSurfaceFor(fragment1);
+        task.moveOrCreateDecorSurfaceFor(fragment1, true /* visible */);
 
         clearInvocations(t);
         clearInvocations(unembeddedActivity);
@@ -1889,7 +1889,8 @@
 
         // The decor surface should be placed above all the windows when boosted and the cover
         // surface should show.
-        task.setDecorSurfaceBoosted(fragment1, true /* isBoosted */, clientTransaction);
+        task.requestDecorSurfaceBoosted(fragment1, true /* isBoosted */, clientTransaction);
+        task.commitDecorSurfaceBoostedState();
 
         verify(unembeddedActivity).assignLayer(t, 0);
         verify(fragment1).assignLayer(t, 1);
@@ -1906,8 +1907,9 @@
 
         // The decor surface should be placed just above the owner TaskFragment and the cover
         // surface should hide.
-        task.moveOrCreateDecorSurfaceFor(fragment1);
-        task.setDecorSurfaceBoosted(fragment1, false /* isBoosted */, clientTransaction);
+        task.moveOrCreateDecorSurfaceFor(fragment1, true /* visible */);
+        task.requestDecorSurfaceBoosted(fragment1, false /* isBoosted */, clientTransaction);
+        task.commitDecorSurfaceBoostedState();
 
         verify(unembeddedActivity).assignLayer(t, 0);
         verify(fragment1).assignLayer(t, 1);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
index 69f2d68..95d37eb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
@@ -81,7 +81,9 @@
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.IBinder;
+import android.platform.test.annotations.EnableFlags;
 import android.platform.test.annotations.Presubmit;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.view.SurfaceControl;
@@ -100,7 +102,9 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.graphics.ColorUtils;
+import com.android.window.flags.Flags;
 
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -116,6 +120,7 @@
  * Build/Install/Run:
  *  atest WmTests:TransitionTests
  */
+@EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
 @SmallTest
 @Presubmit
 @RunWith(WindowTestRunner.class)
@@ -123,6 +128,8 @@
     final SurfaceControl.Transaction mMockT = mock(SurfaceControl.Transaction.class);
     private BLASTSyncEngine mSyncEngine;
 
+    @Rule
+    public SetFlagsRule mRule = new SetFlagsRule();
     private Transition createTestTransition(int transitType, TransitionController controller) {
         final Transition transition = new Transition(transitType, 0 /* flags */, controller,
                 controller.mSyncEngine);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
new file mode 100644
index 0000000..1d6e307
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
@@ -0,0 +1,637 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.server.wm;
+
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.Surface.ROTATION_0;
+import static android.view.Surface.ROTATION_90;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.WindowConfiguration;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.platform.test.annotations.Presubmit;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+/**
+ * Test class for {@link TransparentPolicy}.
+ *
+ * Build/Install/Run:
+ * atest WmTests:TransparentPolicyTest
+ */
+@Presubmit
+@RunWith(WindowTestRunner.class)
+public class TransparentPolicyTest extends WindowTestsBase {
+
+    @Test
+    public void testNotStartingWhenDisabled() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivityInTask();
+
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        }, /* policyEnabled */ false);
+    }
+
+    @Test
+    public void testNotStartingWithoutTask() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivity();
+
+            robot.checkTopActivityPolicyStartNotInvoked();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        });
+    }
+
+    @Test
+    public void testPolicyRunningWhenTransparentIsUsed() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivityInTask();
+
+            robot.checkTopActivityPolicyStartNotInvoked();
+            robot.checkTopActivityPolicyStateIsRunning();
+        });
+    }
+
+    @Test
+    public void testCleanLetterboxConfigListenerWhenTranslucentIsDestroyed() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityPolicyStartNotInvoked();
+            robot.checkTopActivityPolicyStateIsRunning();
+
+            robot.clearInteractions();
+            robot.destroyTopActivity();
+
+            robot.checkTopActivityPolicyStopInvoked();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        });
+    }
+
+    @Test
+    public void testApplyStrategyAgainWhenOpaqueIsDestroyed() {
+        runTestScenario((robot) -> {
+            robot.launchOpaqueActivityInTask();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityPolicyStateIsRunning();
+
+            robot.destroyActivity(/* fromTop */ 1);
+            robot.checkTopActivityPolicyStartInvoked();
+        });
+    }
+
+    @Test
+    public void testResetOpaqueReferenceWhenOpaqueIsDestroyed() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivityInTask();
+
+            robot.clearInteractions();
+            robot.destroyActivity(/* fromTop */ 1);
+
+            robot.checkTopActivityPolicyStartInvoked();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        });
+    }
+
+    @Test
+    public void testNotApplyStrategyAgainWhenOpaqueIsNotDestroyed() {
+        runTestScenario((robot) -> {
+            robot.launchOpaqueActivityInTask();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityPolicyStateIsRunning();
+
+            robot.clearInteractions();
+            robot.checkTopActivityPolicyStopNotInvoked();
+        });
+    }
+
+    @Test
+    public void testApplyStrategyToTranslucentActivities() {
+        runTestScenario((robot) -> {
+            robot.configureTopActivity(/* minAspect */ 1.2f, /* maxAspect */ 1.5f,
+                    SCREEN_ORIENTATION_PORTRAIT, /* isUnresizable */ true);
+            robot.configureTopActivityIgnoreOrientationRequest(true);
+            robot.launchActivity(/* minAspect */ 1.1f, /* maxAspect */ 3f,
+                    SCREEN_ORIENTATION_LANDSCAPE, /* transparent */true, /* addToTask */true);
+            robot.checkTopActivityPolicyStateIsRunning();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 1);
+            robot.checkTopOrientation(SCREEN_ORIENTATION_PORTRAIT);
+            robot.checkTopAspectRatios(/* minAspectRatio */ 1.2f, /* maxAspectRatio */ 1.5f);
+        });
+    }
+
+    @Test
+    public void testApplyStrategyToTransparentActivitiesRetainsWindowConfigurationProperties() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivity();
+
+            robot.forceChangeInTopActivityConfiguration();
+            robot.attachTopActivityToTask();
+
+            robot.checkTopActivityConfigurationConfiguration();
+        });
+    }
+
+    @Test
+    public void testApplyStrategyToMultipleTranslucentActivities() {
+        runTestScenario((robot) -> {
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityPolicyStateIsRunning();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 1);
+
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityPolicyStateIsRunning();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 2);
+        });
+    }
+
+    @Test
+    public void testNotApplyStrategyToTranslucentActivitiesOverEmbeddedActivities() {
+        runTestScenario((robot) -> {
+            robot.configureTopActivityAsEmbedded();
+            robot.launchTransparentActivityInTask();
+
+            robot.checkTopActivityPolicyStartNotInvoked();
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        });
+    }
+
+    @Test
+    public void testTranslucentActivitiesDontGoInSizeCompatMode() {
+        runTestScenario((robot) -> {
+            robot.configureTopActivityIgnoreOrientationRequest(true);
+            robot.configureUnresizableTopActivity(SCREEN_ORIENTATION_PORTRAIT);
+            robot.rotateDisplayForTopActivity(ROTATION_90);
+            robot.checkTopActivitySizeCompatMode(/* inScm */ true);
+            robot.rotateDisplayForTopActivity(ROTATION_0);
+            robot.checkTopActivitySizeCompatMode(/* inScm */ false);
+
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivitySizeCompatMode(/* inScm */ false);
+            robot.rotateDisplayForTopActivity(ROTATION_90);
+            robot.checkTopActivitySizeCompatMode(/* inScm */ false);
+        }, /* displayWidth */ 2800,  /* displayHeight */ 1400);
+    }
+
+    @Test
+    public void testCheckOpaqueIsLetterboxedWhenStrategyIsApplied() {
+        runTestScenario((robot) -> {
+            robot.configureUnresizableTopActivity(SCREEN_ORIENTATION_PORTRAIT);
+            robot.configureTopActivityIgnoreOrientationRequest(true);
+            robot.launchTransparentActivity();
+
+            robot.assertFalseOnTopActivity(ActivityRecord::fillsParent);
+            robot.assertTrueOnActivity(/* fromTop */ 1, ActivityRecord::fillsParent);
+            robot.applyTo(/* fromTop */ 1, (activity) -> {
+                activity.finishing = true;
+            });
+            robot.assertFalseOnActivity(/* fromTop */ 1, ActivityRecord::occludesParent);
+            robot.attachTopActivityToTask();
+
+            robot.checkTopActivityPolicyStateIsNotRunning();
+        });
+    }
+
+    @Test
+    public void testTranslucentActivitiesWhenUnfolding() {
+        runTestScenario((robot) -> {
+            robot.applyToTop((activity) -> {
+                activity.mWmService.mLetterboxConfiguration
+                        .setLetterboxHorizontalPositionMultiplier(1.0f);
+            });
+            robot.configureUnresizableTopActivity(SCREEN_ORIENTATION_PORTRAIT);
+            robot.configureTopActivityIgnoreOrientationRequest(true);
+            robot.launchTransparentActivityInTask();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 1);
+
+            robot.configureTaskWindowingMode(WINDOWING_MODE_FULLSCREEN);
+
+            robot.configureTopActivityFoldablePosture(/* isHalfFolded */ true,
+                    /* isTabletop */ false);
+            robot.checkTopActivityRecomputedConfiguration();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 1);
+            robot.clearInteractions();
+
+            robot.configureTopActivityFoldablePosture(/* isHalfFolded */ false,
+                    /* isTabletop */ false);
+            robot.checkTopActivityRecomputedConfiguration();
+            robot.checkTopActivityHasInheritedBoundsFrom(/* fromTop */ 1);
+        }, /* displayWidth */ 2800,  /* displayHeight */ 1400);
+    }
+
+
+    @Test
+    public void testTranslucentActivity_clearSizeCompatMode_inheritedCompatDisplayInsetsCleared() {
+        runTestScenario((robot) -> {
+            robot.configureTopActivityIgnoreOrientationRequest(true);
+            robot.configureUnresizableTopActivity(SCREEN_ORIENTATION_PORTRAIT);
+            // Rotate to put activity in size compat mode.
+            robot.rotateDisplayForTopActivity(ROTATION_90);
+            robot.checkTopActivitySizeCompatMode(/* inScm */ true);
+
+            robot.launchTransparentActivityInTask();
+            robot.assertNotNullOnTopActivity(ActivityRecord::getCompatDisplayInsets);
+            robot.applyToTop(ActivityRecord::clearSizeCompatMode);
+            robot.assertNullOnTopActivity(ActivityRecord::getCompatDisplayInsets);
+        });
+    }
+
+    private void runTestScenario(Consumer<TransparentPolicyRobotTest> consumer,
+                                 boolean policyEnabled, int displayWidth, int displayHeight) {
+        spyOn(mWm.mLetterboxConfiguration);
+        when(mWm.mLetterboxConfiguration.isTranslucentLetterboxingEnabled())
+                .thenReturn(policyEnabled);
+        final TestDisplayContent.Builder builder = new TestDisplayContent.Builder(mAtm,
+                displayWidth, displayHeight);
+        final Task task = new TaskBuilder(mSupervisor).setDisplay(builder.build())
+                .setCreateActivity(true).build();
+        final ActivityRecord opaqueActivity = task.getTopNonFinishingActivity();
+        final TransparentPolicyRobotTest robot = new TransparentPolicyRobotTest(mAtm, task,
+                opaqueActivity);
+        consumer.accept(robot);
+    }
+
+    private void runTestScenario(Consumer<TransparentPolicyRobotTest> consumer,
+                                 int displayWidth, int displayHeight) {
+        runTestScenario(consumer, /* policyEnabled */ true, displayWidth, displayHeight);
+    }
+
+    private void runTestScenario(Consumer<TransparentPolicyRobotTest> consumer,
+                                 boolean policyEnabled) {
+        runTestScenario(consumer, policyEnabled, /* displayWidth */ 2000,
+                /* displayHeight */ 1000);
+    }
+
+    private void runTestScenario(Consumer<TransparentPolicyRobotTest> consumer) {
+        runTestScenario(consumer, /* policyEnabled */ true);
+    }
+
+    /**
+     * Robot pattern implementation for TransparentPolicy
+     * TODO(b/344587983): Extract Robot to be reused in different test classes.
+     */
+    private static class TransparentPolicyRobotTest {
+
+        private final ActivityTaskManagerService mAtm;
+
+        private final Task mTask;
+
+        private final ActivityStackTest mActivityStack;
+
+        private WindowConfiguration mTopActivityWindowConfiguration;
+
+        private TransparentPolicyRobotTest(ActivityTaskManagerService atm, Task task,
+                                           ActivityRecord opaqueActivity) {
+            mAtm = atm;
+            mTask = task;
+            mActivityStack = new ActivityStackTest();
+            mActivityStack.pushActivity(opaqueActivity);
+            spyOn(opaqueActivity.mTransparentPolicy);
+        }
+
+        void configureTopActivityAsEmbedded() {
+            final ActivityRecord topActivity = mActivityStack.top();
+            spyOn(topActivity);
+            doReturn(true).when(topActivity).isEmbedded();
+        }
+
+        private void launchActivity(float minAspectRatio, float maxAspectRatio,
+                                    @Configuration.Orientation int orientation, boolean transparent,
+                                    boolean addToTask) {
+            final ActivityBuilder activityBuilder = new ActivityBuilder(mAtm)
+                    .setScreenOrientation(orientation)
+                    .setLaunchedFromUid(mActivityStack.base().getUid());
+            if (transparent) {
+                activityBuilder.setActivityTheme(android.R.style.Theme_Translucent);
+            }
+            if (minAspectRatio >= 0) {
+                activityBuilder.setMinAspectRatio(minAspectRatio);
+            }
+            if (maxAspectRatio >= 0) {
+                activityBuilder.setMaxAspectRatio(maxAspectRatio);
+            }
+            final ActivityRecord newActivity = activityBuilder.build();
+            if (addToTask) {
+                mTask.addChild(newActivity);
+            }
+            spyOn(newActivity.mTransparentPolicy);
+            mActivityStack.pushActivity(newActivity);
+        }
+
+        void attachTopActivityToTask() {
+            mTask.addChild(mActivityStack.top());
+        }
+
+        void launchTransparentActivity() {
+            launchActivity(/*minAspectRatio */ -1, /* maxAspectRatio */ -1,
+                    SCREEN_ORIENTATION_PORTRAIT, /* transparent */ true,
+                    /* addToTask */ false);
+        }
+
+        void launchTransparentActivityInTask() {
+            launchActivity(/*minAspectRatio */ -1, /* maxAspectRatio */ -1,
+                    SCREEN_ORIENTATION_PORTRAIT, /* transparent */ true,
+                    /* addToTask */true);
+        }
+
+        void launchOpaqueActivityInTask() {
+            launchActivity(/*minAspectRatio */ -1, /* maxAspectRatio */ -1,
+                    SCREEN_ORIENTATION_PORTRAIT, /* transparent */ false,
+                    /* addToTask */true);
+        }
+
+        void destroyTopActivity() {
+            mActivityStack.top().removeImmediately();
+        }
+
+        void destroyActivity(int fromTop) {
+            mActivityStack.applyTo(/* fromTop */ fromTop, ActivityRecord::removeImmediately);
+        }
+
+        void forceChangeInTopActivityConfiguration() {
+            mActivityStack.applyToTop((activity) -> {
+                final Configuration requestedConfig = activity.getRequestedOverrideConfiguration();
+                mTopActivityWindowConfiguration = requestedConfig.windowConfiguration;
+                mTopActivityWindowConfiguration.setActivityType(ACTIVITY_TYPE_STANDARD);
+                mTopActivityWindowConfiguration.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+                mTopActivityWindowConfiguration.setAlwaysOnTop(true);
+                activity.onRequestedOverrideConfigurationChanged(requestedConfig);
+            });
+        }
+
+        void checkTopActivityPolicyStateIsRunning() {
+            assertTrue(mActivityStack.top().mTransparentPolicy.isRunning());
+        }
+
+        void checkTopActivityPolicyStateIsNotRunning() {
+            assertFalse(mActivityStack.top().mTransparentPolicy.isRunning());
+        }
+
+        void checkTopActivityPolicyStopInvoked() {
+            verify(mActivityStack.top().mTransparentPolicy).stop();
+        }
+
+        void checkTopActivityPolicyStopNotInvoked() {
+            mActivityStack.applyToTop((activity) -> {
+                verify(activity.mTransparentPolicy, never()).stop();
+            });
+        }
+
+        void checkTopActivityPolicyStartInvoked() {
+            mActivityStack.applyToTop((activity) -> {
+                verify(activity.mTransparentPolicy).start();
+            });
+        }
+
+        void checkTopActivityPolicyStartNotInvoked() {
+            verify(mActivityStack.top().mTransparentPolicy, never()).start();
+        }
+
+        void assertTrueOnActivity(int fromTop, Predicate<ActivityRecord> predicate) {
+            mActivityStack.applyTo(fromTop, (activity) -> {
+                Assert.assertTrue(predicate.test(activity));
+            });
+        }
+
+        void assertFalseOnTopActivity(Predicate<ActivityRecord> predicate) {
+            Assert.assertFalse(predicate.test(mActivityStack.top()));
+        }
+
+        void assertFalseOnActivity(int fromTop, Predicate<ActivityRecord> predicate) {
+            mActivityStack.applyTo(fromTop, (activity) -> {
+                Assert.assertFalse(predicate.test(activity));
+            });
+        }
+
+        void assertNotNullOnTopActivity(Function<ActivityRecord, Object> getter) {
+            Assert.assertNotNull(getter.apply(mActivityStack.top()));
+        }
+
+        void assertNullOnTopActivity(Function<ActivityRecord, Object> getter) {
+            Assert.assertNull(getter.apply(mActivityStack.top()));
+        }
+
+        void checkTopActivityConfigurationConfiguration() {
+            mActivityStack.applyToTop((activity) -> {
+                // The original override of WindowConfiguration should keep.
+                assertEquals(ACTIVITY_TYPE_STANDARD, activity.getActivityType());
+                assertEquals(WINDOWING_MODE_MULTI_WINDOW,
+                        mTopActivityWindowConfiguration.getWindowingMode());
+                assertTrue(mTopActivityWindowConfiguration.isAlwaysOnTop());
+                // Unless display is going to be rotated, it should always inherit from parent.
+                assertEquals(ROTATION_UNDEFINED,
+                        mTopActivityWindowConfiguration.getDisplayRotation());
+            });
+        }
+
+        void checkTopActivityHasInheritedBoundsFrom(int fromTop) {
+            final ActivityRecord topActivity = mActivityStack.top();
+            final ActivityRecord otherActivity = mActivityStack.getFromTop(/* fromTop */ fromTop);
+            final Rect opaqueBounds = otherActivity.getConfiguration().windowConfiguration
+                    .getBounds();
+            final Rect translucentRequestedBounds = topActivity.getRequestedOverrideBounds();
+            Assert.assertEquals(opaqueBounds, translucentRequestedBounds);
+        }
+
+        void checkTopActivityRecomputedConfiguration() {
+            verify(mActivityStack.top()).recomputeConfiguration();
+        }
+
+        void checkTopOrientation(int orientation) {
+            Assert.assertEquals(orientation, mActivityStack.top()
+                    .getRequestedConfigurationOrientation());
+        }
+
+        void configureTaskWindowingMode(int windowingMode) {
+            mTask.setWindowingMode(windowingMode);
+        }
+
+        void checkTopAspectRatios(float minAspectRatio, float maxAspectRatio) {
+            final ActivityRecord topActivity = mActivityStack.top();
+            Assert.assertEquals(minAspectRatio, topActivity.getMinAspectRatio(), 0.0001);
+            Assert.assertEquals(maxAspectRatio, topActivity.getMaxAspectRatio(), 0.0001);
+        }
+
+        void checkTopActivitySizeCompatMode(boolean inScm) {
+            Assert.assertEquals(inScm, mActivityStack.top().inSizeCompatMode());
+        }
+
+        void clearInteractions() {
+            mActivityStack.applyToAll((activity) -> {
+                clearInvocations(activity);
+                clearInvocations(activity.mTransparentPolicy);
+            });
+        }
+
+        void configureTopActivity(float minAspect, float maxAspect, int screenOrientation,
+                                  boolean isUnresizable) {
+            prepareLimitedBounds(mActivityStack.top(), minAspect, maxAspect, screenOrientation,
+                    isUnresizable);
+        }
+
+        void configureTopActivityIgnoreOrientationRequest(boolean ignoreOrientationRequest) {
+            mActivityStack.top().mDisplayContent
+                    .setIgnoreOrientationRequest(ignoreOrientationRequest);
+        }
+
+        void configureUnresizableTopActivity(int screenOrientation) {
+            configureTopActivity(-1, -1, screenOrientation, true);
+        }
+
+        void applyToTop(Consumer<ActivityRecord> consumer) {
+            consumer.accept(mActivityStack.top());
+        }
+
+        void applyTo(int fromTop, Consumer<ActivityRecord> consumer) {
+            mActivityStack.applyTo(fromTop, consumer);
+        }
+
+        void rotateDisplayForTopActivity(int rotation) {
+            rotateDisplay(mActivityStack.top().mDisplayContent, rotation);
+        }
+
+        /**
+         * Setups activity with restriction on its bounds, such as maxAspect, minAspect,
+         * fixed orientation, and/or whether it is resizable.
+         */
+        void prepareLimitedBounds(ActivityRecord activity, float minAspect, float maxAspect,
+                                  int screenOrientation, boolean isUnresizable) {
+            activity.info.resizeMode = isUnresizable
+                    ? RESIZE_MODE_UNRESIZEABLE
+                    : RESIZE_MODE_RESIZEABLE;
+            final Task task = activity.getTask();
+            if (task != null) {
+                // Update the Task resize value as activity will follow the task.
+                task.mResizeMode = activity.info.resizeMode;
+                task.getRootActivity().info.resizeMode = activity.info.resizeMode;
+            }
+            activity.setVisibleRequested(true);
+            if (maxAspect >= 0) {
+                activity.info.setMaxAspectRatio(maxAspect);
+            }
+            if (minAspect >= 0) {
+                activity.info.setMinAspectRatio(minAspect);
+            }
+            if (screenOrientation != SCREEN_ORIENTATION_UNSPECIFIED) {
+                activity.info.screenOrientation = screenOrientation;
+                activity.setRequestedOrientation(screenOrientation);
+            }
+            // Make sure to use the provided configuration to construct the size compat fields.
+            activity.clearSizeCompatMode();
+            activity.ensureActivityConfiguration();
+            // Make sure the display configuration reflects the change of activity.
+            if (activity.mDisplayContent.updateOrientation()) {
+                activity.mDisplayContent.sendNewConfiguration();
+            }
+        }
+
+        void configureTopActivityFoldablePosture(boolean isHalfFolded, boolean isTabletop) {
+            mActivityStack.applyToTop((activity) -> {
+                final DisplayRotation r = activity.mDisplayContent.getDisplayRotation();
+                doReturn(isHalfFolded).when(r).isDisplaySeparatingHinge();
+                doReturn(false).when(r)
+                        .isDeviceInPosture(any(DeviceStateController.DeviceState.class),
+                                anyBoolean());
+                if (isHalfFolded) {
+                    doReturn(true).when(r)
+                            .isDeviceInPosture(DeviceStateController.DeviceState.HALF_FOLDED,
+                                    isTabletop);
+                }
+                activity.recomputeConfiguration();
+            });
+        }
+
+        private static void rotateDisplay(DisplayContent display, int rotation) {
+            final Configuration c = new Configuration();
+            display.getDisplayRotation().setRotation(rotation);
+            display.computeScreenConfiguration(c);
+            display.onRequestedOverrideConfigurationChanged(c);
+        }
+
+        /**
+         * Contains all the ActivityRecord launched in the test. This is different from what's in
+         * the Task because activities are added here even if not added to tasks.
+         */
+        private static class ActivityStackTest {
+            private final List<ActivityRecord> mActivities = new ArrayList<>();
+
+            void pushActivity(ActivityRecord activityRecord) {
+                mActivities.add(activityRecord);
+            }
+
+            void applyToTop(Consumer<ActivityRecord> consumer) {
+                consumer.accept(top());
+            }
+
+            ActivityRecord getFromTop(int fromTop) {
+                return mActivities.get(mActivities.size() - fromTop - 1);
+            }
+
+            ActivityRecord base() {
+                return mActivities.get(0);
+            }
+
+            ActivityRecord top() {
+                return mActivities.get(mActivities.size() - 1);
+            }
+
+            // Allows access to the activity at position beforeLast from the top.
+            // If fromTop = 0 the activity used is the top one.
+            void applyTo(int fromTop, Consumer<ActivityRecord> consumer) {
+                consumer.accept(getFromTop(fromTop));
+            }
+
+            void applyToAll(Consumer<ActivityRecord> consumer) {
+                for (int i = mActivities.size() - 1; i >= 0; i--) {
+                    consumer.accept(mActivities.get(i));
+                }
+            }
+        }
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
index 9f85acb..4ebbf49 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -960,10 +960,20 @@
         assertTrue(child.handlesOrientationChangeFromDescendant(orientation));
     }
 
+    private static void addLocalInsets(WindowContainer wc) {
+        final Binder owner = new Binder();
+        Rect genericOverlayInsetsRect1 = new Rect(0, 200, 1080, 700);
+        final InsetsFrameProvider provider1 =
+                new InsetsFrameProvider(owner, 1, WindowInsets.Type.systemOverlays())
+                        .setArbitraryRectangle(genericOverlayInsetsRect1);
+        wc.addLocalInsetsFrameProvider(provider1, owner);
+    }
+
     @Test
     public void testOnDisplayChanged() {
         final Task rootTask = createTask(mDisplayContent);
         final Task task = createTaskInRootTask(rootTask, 0 /* userId */);
+        addLocalInsets(task);
         final ActivityRecord activity = createActivityRecord(mDisplayContent, task);
 
         final DisplayContent newDc = createNewDisplay();
@@ -972,6 +982,7 @@
 
         verify(rootTask).onDisplayChanged(newDc);
         verify(task).onDisplayChanged(newDc);
+        assertTrue(task.mLocalInsetsSources.size() == 1);
         verify(activity).onDisplayChanged(newDc);
         assertEquals(newDc, rootTask.mDisplayContent);
         assertEquals(newDc, task.mDisplayContent);
@@ -981,6 +992,7 @@
     @Test
     public void testOnDisplayChanged_cleanupChanging() {
         final Task task = createTask(mDisplayContent);
+        addLocalInsets(task);
         spyOn(task.mSurfaceFreezer);
         mDisplayContent.mChangingContainers.add(task);
 
@@ -988,6 +1000,7 @@
         // This happens on display info changed.
         task.onDisplayChanged(mDisplayContent);
 
+        assertTrue(task.mLocalInsetsSources.size() == 1);
         assertTrue(mDisplayContent.mChangingContainers.contains(task));
         verify(task.mSurfaceFreezer, never()).unfreeze(any());
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
index fb854c5..ab4deca 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
@@ -31,6 +31,7 @@
 import static android.content.res.Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
 import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
+import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
@@ -1455,6 +1456,53 @@
     }
 
     @Test
+    public void testReorderWithParents() {
+        /*
+                  root
+               ____|______
+               |         |
+           firstTda    secondTda
+               |             |
+         firstRootTask    secondRootTask
+
+         */
+        final TaskDisplayArea firstTaskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea();
+        final TaskDisplayArea secondTaskDisplayArea = createTaskDisplayArea(
+                mDisplayContent, mRootWindowContainer.mWmService, "TestTaskDisplayArea",
+                FEATURE_VENDOR_FIRST);
+        final Task firstRootTask = firstTaskDisplayArea.createRootTask(
+                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */);
+        final Task secondRootTask = secondTaskDisplayArea.createRootTask(
+                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */);
+        final ActivityRecord firstActivity = new ActivityBuilder(mAtm)
+                .setTask(firstRootTask).build();
+        final ActivityRecord secondActivity = new ActivityBuilder(mAtm)
+                .setTask(secondRootTask).build();
+        // This assertion is just a defense to ensure that firstRootTask is not the top most
+        // by default
+        assertThat(mDisplayContent.getTopRootTask()).isEqualTo(secondRootTask);
+        WindowContainerTransaction wct = new WindowContainerTransaction();
+
+        // Reorder to top
+        wct.reorder(firstRootTask.mRemoteToken.toWindowContainerToken(), true /* onTop */,
+                true /* includingParents */);
+        mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct);
+
+        // firstRootTask can only be on the top if its TDA was also reordered to the Top which
+        // in-turn ensures that the reorder happened including the parents.
+        assertThat(mDisplayContent.getTopRootTask()).isEqualTo(firstRootTask);
+
+        // Reorder to bottom
+        wct.reorder(firstRootTask.mRemoteToken.toWindowContainerToken(), false /* onTop */,
+                true /* includingParents */);
+        mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct);
+
+        // firstRootTask can only be on the bottom if its TDA was also reordered to the bottom
+        // which in-turn ensures that the reorder happened including the parents.
+        assertThat(mDisplayContent.getBottomMostTask()).isEqualTo(firstRootTask);
+    }
+
+    @Test
     public void testAppearDeferThenVanish() {
         final ITaskOrganizer organizer = registerMockOrganizer();
         final Task rootTask = createRootTask();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index e1357a9..b512aa8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -1016,6 +1016,10 @@
             public void topFocusedWindowChanged(ComponentName component,
                     int requestedVisibleTypes) {
             }
+
+            @Override
+            public void setImeInputTargetRequestedVisibility(boolean visible) {
+            }
         };
     }
 
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 2e93cba..27c383c 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -403,7 +403,9 @@
 
         mAppStandby.addListener(mStandbyChangeListener);
 
-        mPackageMonitor.register(getContext(), null, UserHandle.ALL, true);
+        mPackageMonitor.register(getContext(),
+                /* thread= */ USE_DEDICATED_HANDLER_THREAD ? mHandler.getLooper() : null,
+                UserHandle.ALL, true);
 
         IntentFilter filter = new IntentFilter(Intent.ACTION_USER_REMOVED);
         filter.addAction(Intent.ACTION_USER_STARTED);
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index bc8f65e..09cb464 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -9842,6 +9842,43 @@
     public static final String KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL =
             "remove_satellite_plmn_in_manual_network_scan_bool";
 
+
+    /** @hide */
+    @IntDef({
+            SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED,
+            SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED,
+            SATELLITE_DATA_SUPPORT_ALL,
+    })
+    public @interface SATELLITE_DATA_SUPPORT_MODE {}
+
+    /**
+     * Doesn't support unrestricted traffic on satellite network.
+     * @hide
+     */
+    public static final int SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED = 0;
+    /**
+     * Support unrestricted but bandwidth_constrained traffic on satellite network.
+     * @hide
+     */
+    public static final int SATELLITE_DATA_SUPPORT_BANDWIDTH_CONSTRAINED = 1;
+    /**
+     * Support unrestricted satellite network that serves all traffic.
+     * @hide
+     */
+    public static final int SATELLITE_DATA_SUPPORT_ALL = 2;
+    /**
+     * Indicates what kind of traffic an {@link NetworkCapabilities#NET_CAPABILITY_NOT_RESTRICTED}
+     * satellite network can possibly support. The network may subject to further
+     * restrictions such as entitlement etc.
+     * If no data is allowed on satellite network, exclude
+     * {@link ApnSetting#INFRASTRUCTURE_SATELLITE} from APN infrastructure_bitmask, and this
+     * configuration is ignored.
+     * By default it only supports restricted data.
+     * @hide
+     */
+    public static final String KEY_SATELLITE_DATA_SUPPORT_MODE_INT =
+            "satellite_data_support_mode_int";
+
     /**
      * Determine whether to override roaming Wi-Fi Calling preference when device is connected to
      * non-terrestrial network.
@@ -11084,6 +11121,8 @@
         sDefaults.putInt(KEY_PARAMETERS_USED_FOR_NTN_LTE_SIGNAL_BAR_INT,
                 CellSignalStrengthLte.USE_RSRP);
         sDefaults.putBoolean(KEY_REMOVE_SATELLITE_PLMN_IN_MANUAL_NETWORK_SCAN_BOOL, true);
+        sDefaults.putInt(KEY_SATELLITE_DATA_SUPPORT_MODE_INT,
+                CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED);
         sDefaults.putBoolean(KEY_OVERRIDE_WFC_ROAMING_MODE_WHILE_USING_NTN_BOOL, true);
         sDefaults.putInt(KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT, 7);
         sDefaults.putBoolean(KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, false);
diff --git a/telephony/java/android/telephony/TelephonyFrameworkInitializer.java b/telephony/java/android/telephony/TelephonyFrameworkInitializer.java
index f5688bf..7356cdc 100644
--- a/telephony/java/android/telephony/TelephonyFrameworkInitializer.java
+++ b/telephony/java/android/telephony/TelephonyFrameworkInitializer.java
@@ -83,7 +83,7 @@
         // Check SDK version of the vendor partition.
         final int vendorApiLevel = SystemProperties.getInt(
                 "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
-        if (vendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) return true;
+        if (vendorApiLevel < Build.VENDOR_API_2024_Q2) return true;
 
         // Check SDK version of the client app.
         if (!Compatibility.isChangeEnabled(ENABLE_CHECKING_TELEPHONY_FEATURES)) return true;
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index 47f53f3..2a359cd 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -193,6 +193,14 @@
 
     /**
      * Bundle key to get the response from
+     * {@link #requestSessionStats(Executor, OutcomeReceiver)}.
+     * @hide
+     */
+
+    public static final String KEY_SESSION_STATS = "session_stats";
+
+    /**
+     * Bundle key to get the response from
      * {@link #requestIsProvisioned(Executor, OutcomeReceiver)}.
      * @hide
      */
@@ -2493,6 +2501,65 @@
         }
     }
 
+    /**
+     * Request to get the {@link SatelliteSessionStats} of the satellite service.
+     *
+     * @param executor The executor on which the callback will be called.
+     * @param callback The callback object to which the result will be delivered.
+     *                 If the request is successful, {@link OutcomeReceiver#onResult(Object)}
+     *                 will return the {@link SatelliteSessionStats} of the satellite service.
+     *                 If the request is not successful, {@link OutcomeReceiver#onError(Throwable)}
+     *                 will return a {@link SatelliteException} with the {@link SatelliteResult}.
+     *
+     * @throws SecurityException if the caller doesn't have required permission.
+     * @hide
+     */
+    @RequiresPermission(allOf = {Manifest.permission.PACKAGE_USAGE_STATS,
+            Manifest.permission.MODIFY_PHONE_STATE})
+    @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG)
+    public void requestSessionStats(@NonNull @CallbackExecutor Executor executor,
+            @NonNull OutcomeReceiver<SatelliteSessionStats, SatelliteException> callback) {
+        Objects.requireNonNull(executor);
+        Objects.requireNonNull(callback);
+
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                ResultReceiver receiver = new ResultReceiver(null) {
+                    @Override
+                    protected void onReceiveResult(int resultCode, Bundle resultData) {
+                        if (resultCode == SATELLITE_RESULT_SUCCESS) {
+                            if (resultData.containsKey(KEY_SESSION_STATS)) {
+                                SatelliteSessionStats stats =
+                                        resultData.getParcelable(KEY_SESSION_STATS,
+                                                SatelliteSessionStats.class);
+                                executor.execute(() -> Binder.withCleanCallingIdentity(() ->
+                                        callback.onResult(stats)));
+                            } else {
+                                loge("KEY_SESSION_STATS does not exist.");
+                                executor.execute(() -> Binder.withCleanCallingIdentity(() ->
+                                        callback.onError(new SatelliteException(
+                                                SATELLITE_RESULT_REQUEST_FAILED))));
+                            }
+                        } else {
+                            executor.execute(() -> Binder.withCleanCallingIdentity(() ->
+                                    callback.onError(new SatelliteException(resultCode))));
+                        }
+                    }
+                };
+                telephony.requestSatelliteSessionStats(mSubId, receiver);
+            } else {
+                loge("requestSessionStats() invalid telephony");
+                executor.execute(() -> Binder.withCleanCallingIdentity(() -> callback.onError(
+                        new SatelliteException(SATELLITE_RESULT_ILLEGAL_STATE))));
+            }
+        } catch (RemoteException ex) {
+            loge("requestSessionStats() RemoteException: " + ex);
+            executor.execute(() -> Binder.withCleanCallingIdentity(() -> callback.onError(
+                    new SatelliteException(SATELLITE_RESULT_ILLEGAL_STATE))));
+        }
+    }
+
     @Nullable
     private static ITelephony getITelephony() {
         ITelephony binder = ITelephony.Stub.asInterface(TelephonyFrameworkInitializer
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/telephony/java/android/telephony/satellite/SatelliteSessionStats.aidl
similarity index 68%
copy from packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
copy to telephony/java/android/telephony/satellite/SatelliteSessionStats.aidl
index bb3b654..4175125 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ b/telephony/java/android/telephony/satellite/SatelliteSessionStats.aidl
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2024 The Android Open Source Project
+ * Copyright 2024, The Android Open Source Project
  *
  * 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
+ *     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,
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package com.android.systemui.recordissue
+ package android.telephony.satellite;
 
-data class IssueRecordingConfig(val screenRecord: Boolean, val winscopeTracing: Boolean)
+ parcelable SatelliteSessionStats;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/satellite/SatelliteSessionStats.java b/telephony/java/android/telephony/satellite/SatelliteSessionStats.java
new file mode 100644
index 0000000..aabb058
--- /dev/null
+++ b/telephony/java/android/telephony/satellite/SatelliteSessionStats.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package android.telephony.satellite;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * SatelliteSessionStats is used to represent the usage stats of the satellite service.
+ * @hide
+ */
+public class SatelliteSessionStats implements Parcelable {
+    private int mCountOfSuccessfulUserMessages;
+    private int mCountOfUnsuccessfulUserMessages;
+    private int mCountOfTimedOutUserMessagesWaitingForConnection;
+    private int mCountOfTimedOutUserMessagesWaitingForAck;
+    private int mCountOfUserMessagesInQueueToBeSent;
+
+    /**
+     * SatelliteSessionStats constructor
+     * @param  builder Builder to create SatelliteSessionStats object/
+     */
+    public SatelliteSessionStats(@NonNull Builder builder) {
+        mCountOfSuccessfulUserMessages = builder.mCountOfSuccessfulUserMessages;
+        mCountOfUnsuccessfulUserMessages = builder.mCountOfUnsuccessfulUserMessages;
+        mCountOfTimedOutUserMessagesWaitingForConnection =
+                builder.mCountOfTimedOutUserMessagesWaitingForConnection;
+        mCountOfTimedOutUserMessagesWaitingForAck =
+                builder.mCountOfTimedOutUserMessagesWaitingForAck;
+        mCountOfUserMessagesInQueueToBeSent = builder.mCountOfUserMessagesInQueueToBeSent;
+    }
+
+    private SatelliteSessionStats(Parcel in) {
+        readFromParcel(in);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeInt(mCountOfSuccessfulUserMessages);
+        out.writeInt(mCountOfUnsuccessfulUserMessages);
+        out.writeInt(mCountOfTimedOutUserMessagesWaitingForConnection);
+        out.writeInt(mCountOfTimedOutUserMessagesWaitingForAck);
+        out.writeInt(mCountOfUserMessagesInQueueToBeSent);
+    }
+
+    @NonNull
+    public static final Creator<SatelliteSessionStats> CREATOR = new Parcelable.Creator<>() {
+
+        @Override
+        public SatelliteSessionStats createFromParcel(Parcel in) {
+            return new SatelliteSessionStats(in);
+        }
+
+        @Override
+        public SatelliteSessionStats[] newArray(int size) {
+            return new SatelliteSessionStats[size];
+        }
+    };
+
+    @Override
+    @NonNull
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("countOfSuccessfulUserMessages:");
+        sb.append(mCountOfSuccessfulUserMessages);
+        sb.append(",");
+
+        sb.append("countOfUnsuccessfulUserMessages:");
+        sb.append(mCountOfUnsuccessfulUserMessages);
+        sb.append(",");
+
+        sb.append("countOfTimedOutUserMessagesWaitingForConnection:");
+        sb.append(mCountOfTimedOutUserMessagesWaitingForConnection);
+        sb.append(",");
+
+        sb.append("countOfTimedOutUserMessagesWaitingForAck:");
+        sb.append(mCountOfTimedOutUserMessagesWaitingForAck);
+        sb.append(",");
+
+        sb.append("countOfUserMessagesInQueueToBeSent:");
+        sb.append(mCountOfUserMessagesInQueueToBeSent);
+        return sb.toString();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        SatelliteSessionStats that = (SatelliteSessionStats) o;
+        return mCountOfSuccessfulUserMessages == that.mCountOfSuccessfulUserMessages
+                && mCountOfUnsuccessfulUserMessages == that.mCountOfUnsuccessfulUserMessages
+                && mCountOfTimedOutUserMessagesWaitingForConnection
+                == that.mCountOfTimedOutUserMessagesWaitingForConnection
+                && mCountOfTimedOutUserMessagesWaitingForAck
+                == that.mCountOfTimedOutUserMessagesWaitingForAck
+                && mCountOfUserMessagesInQueueToBeSent
+                == that.mCountOfUserMessagesInQueueToBeSent;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mCountOfSuccessfulUserMessages, mCountOfUnsuccessfulUserMessages,
+                mCountOfTimedOutUserMessagesWaitingForConnection,
+                mCountOfTimedOutUserMessagesWaitingForAck,
+                mCountOfUserMessagesInQueueToBeSent);
+    }
+
+    public int getCountOfSuccessfulUserMessages() {
+        return mCountOfSuccessfulUserMessages;
+    }
+
+    public int getCountOfUnsuccessfulUserMessages() {
+        return mCountOfUnsuccessfulUserMessages;
+    }
+
+    public int getCountOfTimedOutUserMessagesWaitingForConnection() {
+        return mCountOfTimedOutUserMessagesWaitingForConnection;
+    }
+
+    public int getCountOfTimedOutUserMessagesWaitingForAck() {
+        return mCountOfTimedOutUserMessagesWaitingForAck;
+    }
+
+    public int getCountOfUserMessagesInQueueToBeSent() {
+        return mCountOfUserMessagesInQueueToBeSent;
+    }
+
+    private void readFromParcel(Parcel in) {
+        mCountOfSuccessfulUserMessages = in.readInt();
+        mCountOfUnsuccessfulUserMessages = in.readInt();
+        mCountOfTimedOutUserMessagesWaitingForConnection = in.readInt();
+        mCountOfTimedOutUserMessagesWaitingForAck = in.readInt();
+        mCountOfUserMessagesInQueueToBeSent = in.readInt();
+    }
+
+    /**
+     * A builder class to create {@link SatelliteSessionStats} data object.
+     */
+    public static final class Builder {
+        private int mCountOfSuccessfulUserMessages;
+        private int mCountOfUnsuccessfulUserMessages;
+        private int mCountOfTimedOutUserMessagesWaitingForConnection;
+        private int mCountOfTimedOutUserMessagesWaitingForAck;
+        private int mCountOfUserMessagesInQueueToBeSent;
+
+        /**
+         * Sets countOfSuccessfulUserMessages value of {@link SatelliteSessionStats}
+         * and then returns the Builder class.
+         */
+        @NonNull
+        public Builder setCountOfSuccessfulUserMessages(int count) {
+            mCountOfSuccessfulUserMessages = count;
+            return this;
+        }
+
+        /**
+         * Sets countOfUnsuccessfulUserMessages value of {@link SatelliteSessionStats}
+         * and then returns the Builder class.
+         */
+        @NonNull
+        public Builder setCountOfUnsuccessfulUserMessages(int count) {
+            mCountOfUnsuccessfulUserMessages = count;
+            return this;
+        }
+
+        /**
+         * Sets countOfTimedOutUserMessagesWaitingForConnection value of
+         * {@link SatelliteSessionStats} and then returns the Builder class.
+         */
+        @NonNull
+        public Builder setCountOfTimedOutUserMessagesWaitingForConnection(int count) {
+            mCountOfTimedOutUserMessagesWaitingForConnection = count;
+            return this;
+        }
+
+        /**
+         * Sets countOfTimedOutUserMessagesWaitingForAck value of {@link SatelliteSessionStats}
+         * and then returns the Builder class.
+         */
+        @NonNull
+        public Builder setCountOfTimedOutUserMessagesWaitingForAck(int count) {
+            mCountOfTimedOutUserMessagesWaitingForAck = count;
+            return this;
+        }
+
+        /**
+         * Sets countOfUserMessagesInQueueToBeSent value of {@link SatelliteSessionStats}
+         * and then returns the Builder class.
+         */
+        @NonNull
+        public Builder setCountOfUserMessagesInQueueToBeSent(int count) {
+            mCountOfUserMessagesInQueueToBeSent = count;
+            return this;
+        }
+
+        /** Returns SatelliteSessionStats object. */
+        @NonNull
+        public SatelliteSessionStats build() {
+            return new SatelliteSessionStats(this);
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/satellite/stub/ISatelliteListener.aidl b/telephony/java/android/telephony/satellite/stub/ISatelliteListener.aidl
index 5b9dfc6..b4eb15fd 100644
--- a/telephony/java/android/telephony/satellite/stub/ISatelliteListener.aidl
+++ b/telephony/java/android/telephony/satellite/stub/ISatelliteListener.aidl
@@ -81,4 +81,12 @@
      * @param supported True means satellite service is supported and false means it is not.
      */
     void onSatelliteSupportedStateChanged(in boolean supported);
+
+    /**
+     * Indicates that the satellite registration failed with following failure code
+     *
+     * @param causeCode the primary failure cause code of the procedure.
+     *        For LTE (EMM), cause codes are TS 24.301 Sec 9.9.3.9
+     */
+    void onRegistrationFailure(in int causeCode);
 }
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 7d845a3..9b01b71 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -3381,4 +3381,23 @@
      * @return {@code true} if the boolean config is set successfully, {@code false} otherwise.
      */
     boolean setDatagramControllerBooleanConfig(boolean reset, int booleanType, boolean enable);
+
+    /**
+     * This API can be used by only CTS to set the cache whether satellite communication is allowed.
+     *
+     * @param state a state indicates whether satellite access allowed state should be cached and
+     * the allowed state.
+     * @return {@code true} if the setting is successful, {@code false} otherwise.
+     */
+    boolean setIsSatelliteCommunicationAllowedForCurrentLocationCache(in String state);
+
+    /**
+     * Request to get the session stats of the satellite service.
+     *
+     * @param subId The subId of the subscription to get the session stats for.
+     * @param receiver Result receiver to get the error code of the request and the requested
+     *                 session stats of the satellite service.
+     * @hide
+     */
+    void requestSatelliteSessionStats(int subId, in ResultReceiver receiver);
 }
diff --git a/tests/FlickerTests/Rotation/src/com/android/server/wm/flicker/rotation/RotationTransition.kt b/tests/FlickerTests/Rotation/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
index c7da778..c49b509 100644
--- a/tests/FlickerTests/Rotation/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
+++ b/tests/FlickerTests/Rotation/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
@@ -21,6 +21,7 @@
 import android.tools.flicker.legacy.FlickerBuilder
 import android.tools.flicker.legacy.LegacyFlickerTest
 import android.tools.flicker.subject.layers.LayerTraceEntrySubject
+import android.tools.flicker.subject.layers.LayersTraceSubject
 import android.tools.traces.component.ComponentNameMatcher
 import android.tools.traces.component.IComponentMatcher
 import android.tools.traces.surfaceflinger.Display
@@ -46,6 +47,7 @@
         flicker.assertLayers {
             this.visibleLayersShownMoreThanOneConsecutiveEntry(
                 ignoreLayers =
+                    LayersTraceSubject.VISIBLE_FOR_MORE_THAN_ONE_ENTRY_IGNORE_LAYERS +
                     listOf(
                         ComponentNameMatcher.SPLASH_SCREEN,
                         ComponentNameMatcher.SNAPSHOT,
diff --git a/tests/Input/Android.bp b/tests/Input/Android.bp
index c0cbdc3..f367c38 100644
--- a/tests/Input/Android.bp
+++ b/tests/Input/Android.bp
@@ -18,26 +18,31 @@
         "src/**/*.java",
         "src/**/*.kt",
     ],
+    asset_dirs: ["assets"],
     kotlincflags: [
         "-Werror",
     ],
     platform_apis: true,
     certificate: "platform",
     static_libs: [
+        "android.view.flags-aconfig-java",
         "androidx.test.core",
         "androidx.test.ext.junit",
         "androidx.test.ext.truth",
         "androidx.test.rules",
         "androidx.test.runner",
         "androidx.test.uiautomator_uiautomator",
+        "collector-device-lib",
         "compatibility-device-util-axt",
         "cts-input-lib",
+        "cts-wm-util",
         "flag-junit",
         "frameworks-base-testutils",
         "hamcrest-library",
         "kotlin-test",
         "mockito-target-minus-junit4",
         "platform-test-annotations",
+        "platform-screenshot-diff-core",
         "services.core.unboosted",
         "servicestests-utils",
         "testables",
diff --git a/tests/Input/AndroidManifest.xml b/tests/Input/AndroidManifest.xml
index 3b723dd..a05d08c 100644
--- a/tests/Input/AndroidManifest.xml
+++ b/tests/Input/AndroidManifest.xml
@@ -22,6 +22,8 @@
     <uses-permission android:name="android.permission.MONITOR_INPUT"/>
     <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
 
     <application android:label="InputTest" android:debuggable="true">
 
diff --git a/tests/Input/AndroidTest.xml b/tests/Input/AndroidTest.xml
index f602c512..8db3705 100644
--- a/tests/Input/AndroidTest.xml
+++ b/tests/Input/AndroidTest.xml
@@ -28,4 +28,10 @@
         <!-- Take screenshot upon test failure -->
         <option name="screenshot-on-failure" value="true" />
      </object>
+    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
+        <option name="pull-pattern-keys" value="input_.*" />
+        <!-- Pull files created by tests, like the output of screenshot tests -->
+        <option name="directory-keys" value="/storage/emulated/0/InputTests" />
+        <option name="collect-on-run-ended-only" value="false" />
+    </metrics_collector>
 </configuration>
diff --git a/tests/Input/assets/testPointerFillStyle.png b/tests/Input/assets/testPointerFillStyle.png
new file mode 100644
index 0000000..b2354f8
--- /dev/null
+++ b/tests/Input/assets/testPointerFillStyle.png
Binary files differ
diff --git a/tests/Input/src/com/android/test/input/AnrTest.kt b/tests/Input/src/com/android/test/input/AnrTest.kt
index 6b95f5c..8d1fc50 100644
--- a/tests/Input/src/com/android/test/input/AnrTest.kt
+++ b/tests/Input/src/com/android/test/input/AnrTest.kt
@@ -29,6 +29,7 @@
 import android.os.SystemClock
 import android.provider.Settings
 import android.provider.Settings.Global.HIDE_ERROR_DIALOGS
+import android.server.wm.CtsWindowInfoUtils.waitForStableWindowGeometry
 import android.testing.PollingCheck
 
 import androidx.test.uiautomator.By
@@ -36,13 +37,17 @@
 import androidx.test.uiautomator.UiObject2
 import androidx.test.uiautomator.Until
 
+import com.android.cts.input.DebugInputRule
 import com.android.cts.input.UinputTouchScreen
 
+import java.util.concurrent.TimeUnit
+
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Assert.fail
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 
@@ -71,6 +76,9 @@
     private val DISPATCHING_TIMEOUT = (UNMULTIPLIED_DEFAULT_DISPATCHING_TIMEOUT_MILLIS *
             Build.HW_TIMEOUT_MULTIPLIER)
 
+    @get:Rule
+    val debugInputRule = DebugInputRule()
+
     @Before
     fun setUp() {
         val contentResolver = instrumentation.targetContext.contentResolver
@@ -86,12 +94,14 @@
     }
 
     @Test
+    @DebugInputRule.DebugInput(bug = 339924248)
     fun testGestureMonitorAnr_Close() {
         triggerAnr()
         clickCloseAppOnAnrDialog()
     }
 
     @Test
+    @DebugInputRule.DebugInput(bug = 339924248)
     fun testGestureMonitorAnr_Wait() {
         triggerAnr()
         clickWaitOnAnrDialog()
@@ -107,7 +117,7 @@
         val closeAppButton: UiObject2? =
                 uiDevice.wait(Until.findObject(By.res("android:id/aerr_close")), 20000)
         if (closeAppButton == null) {
-            fail("Could not find anr dialog")
+            fail("Could not find anr dialog/close button")
             return
         }
         closeAppButton.click()
@@ -183,5 +193,6 @@
         val flags = " -W -n "
         val startCmd = "am start $flags $PACKAGE_NAME/.UnresponsiveGestureMonitorActivity"
         instrumentation.uiAutomation.executeShellCommand(startCmd)
+        waitForStableWindowGeometry(5L, TimeUnit.SECONDS)
     }
 }
diff --git a/tests/Input/src/com/android/test/input/PointerIconLoadingTest.kt b/tests/Input/src/com/android/test/input/PointerIconLoadingTest.kt
new file mode 100644
index 0000000..dac4253
--- /dev/null
+++ b/tests/Input/src/com/android/test/input/PointerIconLoadingTest.kt
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.test.input
+
+import android.content.Context
+import android.content.res.Configuration
+import android.content.res.Resources
+import android.os.Environment
+import android.view.ContextThemeWrapper
+import android.view.PointerIcon
+import android.view.flags.Flags.enableVectorCursorA11ySettings
+import android.view.flags.Flags.enableVectorCursors
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import org.junit.Assume.assumeTrue
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TestName
+import org.junit.runner.RunWith
+import platform.test.screenshot.GoldenPathManager
+import platform.test.screenshot.PathConfig
+import platform.test.screenshot.ScreenshotTestRule
+import platform.test.screenshot.assertAgainstGolden
+import platform.test.screenshot.matchers.BitmapMatcher
+import platform.test.screenshot.matchers.PixelPerfectMatcher
+
+/**
+ * Unit tests for PointerIcon.
+ *
+ * Run with:
+ * atest InputTests:com.android.test.input.PointerIconLoadingTest
+ */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class PointerIconLoadingTest {
+    private lateinit var context: Context
+    private lateinit var exactScreenshotMatcher: BitmapMatcher
+
+    @get:Rule
+    val testName = TestName()
+
+    @get:Rule
+    val screenshotRule = ScreenshotTestRule(GoldenPathManager(
+        InstrumentationRegistry.getInstrumentation().getContext(),
+        ASSETS_PATH,
+        TEST_OUTPUT_PATH,
+        PathConfig()
+    ), disableIconPool = false)
+
+    @Before
+    fun setUp() {
+        context = InstrumentationRegistry.getInstrumentation().targetContext
+        val config =
+            Configuration(context.resources.configuration).apply {
+                densityDpi = DENSITY_DPI
+                screenWidthDp = SCREEN_WIDTH_DP
+                screenHeightDp = SCREEN_HEIGHT_DP
+                smallestScreenWidthDp = SCREEN_WIDTH_DP
+            }
+        context = context.createConfigurationContext(config)
+
+        exactScreenshotMatcher = PixelPerfectMatcher()
+    }
+
+    @Test
+    fun testPointerFillStyle() {
+        assumeTrue(enableVectorCursors())
+        assumeTrue(enableVectorCursorA11ySettings())
+
+        val theme: Resources.Theme = context.getResources().newTheme()
+        theme.setTo(context.getTheme())
+        theme.applyStyle(
+            PointerIcon.vectorFillStyleToResource(PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_GREEN),
+            /* force= */ true)
+
+        val pointerIcon =
+            PointerIcon.getLoadedSystemIcon(
+                ContextThemeWrapper(context, theme),
+                PointerIcon.TYPE_ARROW,
+                /* useLargeIcons= */ false)
+
+        pointerIcon.getBitmap().assertAgainstGolden(
+            screenshotRule,
+            testName.methodName,
+            exactScreenshotMatcher
+        )
+    }
+
+    companion object {
+        const val DENSITY_DPI = 160
+        const val SCREEN_WIDTH_DP = 480
+        const val SCREEN_HEIGHT_DP = 800
+        const val ASSETS_PATH = "tests/input/assets"
+        val TEST_OUTPUT_PATH = Environment.getExternalStorageDirectory().absolutePath +
+                "/InputTests/" +
+                PointerIconLoadingTest::class.java.simpleName
+    }
+}
diff --git a/tests/Internal/src/com/android/internal/protolog/LegacyProtoLogImplTest.java b/tests/Internal/src/com/android/internal/protolog/LegacyProtoLogImplTest.java
index 5cdfb28..5a27593 100644
--- a/tests/Internal/src/com/android/internal/protolog/LegacyProtoLogImplTest.java
+++ b/tests/Internal/src/com/android/internal/protolog/LegacyProtoLogImplTest.java
@@ -393,5 +393,10 @@
             this.mLogToLogcat = logToLogcat;
         }
 
+        @Override
+        public int getId() {
+            return ordinal();
+        }
+
     }
 }
diff --git a/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java b/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java
index f6ac080..1d7b6b3 100644
--- a/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java
+++ b/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java
@@ -725,5 +725,10 @@
             this.mLogToLogcat = logToLogcat;
         }
 
+        @Override
+        public int getId() {
+            return ordinal();
+        }
+
     }
 }
diff --git a/tests/Internal/src/com/android/internal/protolog/ProtoLogImplTest.java b/tests/Internal/src/com/android/internal/protolog/ProtoLogImplTest.java
index 4267c2c..60456f9 100644
--- a/tests/Internal/src/com/android/internal/protolog/ProtoLogImplTest.java
+++ b/tests/Internal/src/com/android/internal/protolog/ProtoLogImplTest.java
@@ -174,5 +174,10 @@
             this.mLogToLogcat = logToLogcat;
         }
 
+        @Override
+        public int getId() {
+            return ordinal();
+        }
+
     }
 }
diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
index 093923f..a8b383c 100644
--- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
+++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
@@ -101,8 +101,8 @@
     private static final String OBSERVER_NAME_2 = "observer2";
     private static final String OBSERVER_NAME_3 = "observer3";
     private static final String OBSERVER_NAME_4 = "observer4";
-    private static final long SHORT_DURATION = TimeUnit.SECONDS.toMillis(1);
-    private static final long LONG_DURATION = TimeUnit.SECONDS.toMillis(5);
+    private static final long SHORT_DURATION = TimeUnit.SECONDS.toMillis(10);
+    private static final long LONG_DURATION = TimeUnit.SECONDS.toMillis(50);
 
     @Rule
     public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -1453,7 +1453,8 @@
         raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A,
                 VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN);
 
-        moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_DEESCALATION_WINDOW_MS);
+        moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_DEESCALATION_WINDOW_MS
+                - TimeUnit.MINUTES.toMillis(1));
 
         // The first failure will be outside the threshold.
         raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A,
@@ -1712,6 +1713,9 @@
             watchdog.onPackageFailure(packages, failureReason);
         }
         mTestLooper.dispatchAll();
+        if (Flags.recoverabilityDetection()) {
+            moveTimeForwardAndDispatch(watchdog.DEFAULT_MITIGATION_WINDOW_MS);
+        }
     }
 
     private PackageWatchdog createWatchdog() {
diff --git a/tools/app_metadata_bundles/src/lib/java/com/android/asllib/marshallable/DataType.java b/tools/app_metadata_bundles/src/lib/java/com/android/asllib/marshallable/DataType.java
index 97304cb..d2326d1 100644
--- a/tools/app_metadata_bundles/src/lib/java/com/android/asllib/marshallable/DataType.java
+++ b/tools/app_metadata_bundles/src/lib/java/com/android/asllib/marshallable/DataType.java
@@ -21,7 +21,9 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -76,6 +78,43 @@
         }
     }
 
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null || obj.getClass() != this.getClass()) {
+            return false;
+        }
+        DataType objAsDataType = (DataType) obj;
+        return Objects.equals(this.mDataTypeName, objAsDataType.mDataTypeName)
+                && Objects.equals(
+                        new HashSet<>(this.mPurposes), new HashSet<>(objAsDataType.mPurposes))
+                && Objects.equals(this.mIsCollectionOptional, objAsDataType.mIsCollectionOptional)
+                && Objects.equals(this.mIsSharingOptional, objAsDataType.mIsSharingOptional)
+                && Objects.equals(this.mEphemeral, objAsDataType.mEphemeral);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        int prime = 31;
+        result =
+                (prime * result) + (this.mDataTypeName != null ? this.mDataTypeName.hashCode() : 0);
+        result =
+                (prime * result)
+                        + (this.mPurposes != null ? new HashSet<>(this.mPurposes).hashCode() : 0);
+        result =
+                (prime * result)
+                        + (this.mIsCollectionOptional != null
+                                ? this.mIsCollectionOptional.hashCode()
+                                : 0);
+        result =
+                (prime * result)
+                        + (this.mIsSharingOptional != null
+                                ? this.mIsSharingOptional.hashCode()
+                                : 0);
+        result = (prime * result) + (this.mEphemeral != null ? this.mEphemeral.hashCode() : 0);
+        return result;
+    }
+
     private final String mDataTypeName;
 
     private final List<Purpose> mPurposes;
diff --git a/tools/app_metadata_bundles/src/test/java/com/android/asllib/AllTests.java b/tools/app_metadata_bundles/src/test/java/com/android/asllib/AllTests.java
index 54c80f6..f156484 100644
--- a/tools/app_metadata_bundles/src/test/java/com/android/asllib/AllTests.java
+++ b/tools/app_metadata_bundles/src/test/java/com/android/asllib/AllTests.java
@@ -20,6 +20,7 @@
 import com.android.asllib.marshallable.AppInfoTest;
 import com.android.asllib.marshallable.DataCategoryTest;
 import com.android.asllib.marshallable.DataLabelsTest;
+import com.android.asllib.marshallable.DataTypeEqualityTest;
 import com.android.asllib.marshallable.DeveloperInfoTest;
 import com.android.asllib.marshallable.SafetyLabelsTest;
 import com.android.asllib.marshallable.SecurityLabelsTest;
@@ -37,6 +38,7 @@
     AppInfoTest.class,
     DataCategoryTest.class,
     DataLabelsTest.class,
+    DataTypeEqualityTest.class,
     DeveloperInfoTest.class,
     SafetyLabelsTest.class,
     SecurityLabelsTest.class,
diff --git a/tools/app_metadata_bundles/src/test/java/com/android/asllib/marshallable/DataTypeEqualityTest.java b/tools/app_metadata_bundles/src/test/java/com/android/asllib/marshallable/DataTypeEqualityTest.java
new file mode 100644
index 0000000..da7f287
--- /dev/null
+++ b/tools/app_metadata_bundles/src/test/java/com/android/asllib/marshallable/DataTypeEqualityTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.android.asllib.marshallable;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@RunWith(JUnit4.class)
+public class DataTypeEqualityTest {
+
+    public static final List<String> OPTIONAL_FIELD_NAMES =
+            List.of("isDataDeletable", "isDataEncrypted");
+    public static final List<String> OPTIONAL_FIELD_NAMES_OD =
+            List.of("is_data_deletable", "is_data_encrypted");
+
+    /** Logic for setting up tests (empty if not yet needed). */
+    public static void main(String[] params) throws Exception {}
+
+    @Before
+    public void setUp() throws Exception {
+        System.out.println("set up.");
+    }
+
+    /** Test for equality different order. */
+    @Test
+    public void testEqualityDifferentOrder() throws Exception {
+        System.out.println("starting testEqualityDifferentOrder.");
+        DataType dataType1 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        DataType dataType2 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.PERSONALIZATION, DataType.Purpose.ADVERTISING),
+                        true,
+                        false,
+                        null);
+        assertEquals(dataType1, dataType2);
+        assertEquals(dataType2, dataType1);
+    }
+
+    /** Test for contains different order. */
+    @Test
+    public void testContainsDifferentOrder() throws Exception {
+        System.out.println("starting testContainsDifferentOrder.");
+        DataType dataType1 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        DataType dataType2 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.PERSONALIZATION, DataType.Purpose.ADVERTISING),
+                        true,
+                        false,
+                        null);
+        Set<DataType> set = new HashSet<>();
+        set.add(dataType1);
+        assertTrue(set.contains(dataType2));
+    }
+
+    /** Test for inequality. */
+    @Test
+    public void testInequality() throws Exception {
+        System.out.println("starting testInequality.");
+        DataType dataType1 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        DataType dataType2 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        assertNotEquals(dataType1, dataType2);
+        assertNotEquals(dataType2, dataType1);
+    }
+
+    /** Test for inequality bool. */
+    @Test
+    public void testInequalityBool() throws Exception {
+        System.out.println("starting testInequalityBool.");
+        DataType dataType1 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        DataType dataType2 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        true);
+        assertNotEquals(dataType1, dataType2);
+        assertNotEquals(dataType2, dataType1);
+    }
+
+    /** Test for does not contain. */
+    @Test
+    public void testDoesNotContain() throws Exception {
+        System.out.println("starting testDoesNotContain.");
+        System.out.println("starting testContainsDifferentOrder.");
+        DataType dataType1 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(
+                                DataType.Purpose.ADVERTISING, DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        DataType dataType2 =
+                new DataType(
+                        "datatype1",
+                        Arrays.asList(DataType.Purpose.PERSONALIZATION),
+                        true,
+                        false,
+                        null);
+        Set<DataType> set = new HashSet<>();
+        set.add(dataType1);
+        assertFalse(set.contains(dataType2));
+    }
+}